From e9cd7870a38d6a300a7a80df612774d30975d7da Mon Sep 17 00:00:00 2001 From: attiasas Date: Tue, 4 Nov 2025 14:13:46 +0200 Subject: [PATCH 1/7] Fix docker scan help command --- buildtools/cli.go | 47 ++++++++++++++++++++++++++++++----------------- go.mod | 8 +++++--- go.sum | 12 ++++++------ 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/buildtools/cli.go b/buildtools/cli.go index c98722709..791d921da 100644 --- a/buildtools/cli.go +++ b/buildtools/cli.go @@ -393,23 +393,15 @@ func GetCommands() []cli.Command { }, }, { - Name: "docker", - Flags: cliutils.GetCommandFlags(cliutils.Docker), - Usage: docker.GetDescription(), - HelpName: corecommon.CreateUsage("docker", docker.GetDescription(), docker.Usage), - UsageText: docker.GetArguments(), - SkipFlagParsing: func() bool { - for i, arg := range os.Args { - // 'docker scan' isn't a docker client command. We won't skip its flags. - if arg == "docker" && len(os.Args) > i+1 && os.Args[i+1] == "scan" { - return false - } - } - return true - }(), - BashComplete: corecommon.CreateBashCompletionFunc("login", "push", "pull", "scan"), - Category: buildToolsCategory, - Action: dockerCmd, + Name: "docker", + Flags: cliutils.GetCommandFlags(cliutils.Docker), + Usage: docker.GetDescription(), + HelpName: corecommon.CreateUsage("docker", docker.GetDescription(), docker.Usage), + UsageText: docker.GetArguments(), + SkipFlagParsing: skipFlagParsingForDockerCmd(), + BashComplete: corecommon.CreateBashCompletionFunc("login", "push", "pull", "scan"), + Category: buildToolsCategory, + Action: dockerCmd, }, { Name: "terraform-config", @@ -453,6 +445,24 @@ func GetCommands() []cli.Command { return decorateWithFlagCapture(cmds) } +func skipFlagParsingForDockerCmd() bool { + isDockerScan := false + hasHelpFlag := false + for i, arg := range os.Args { + if arg == "docker" && len(os.Args) > i+1 && os.Args[i+1] == "scan" { + isDockerScan = true + } + if arg == "--help" || arg == "-h" { + hasHelpFlag = true + } + } + // 'docker scan' isn't a docker client command. We won't skip its flags. + if isDockerScan { + return hasHelpFlag + } + return true +} + // decorateWithFlagCapture injects a Before hook into every command returned from this package, // so we can capture user-provided flags consistently in one place for all build commands. func decorateWithFlagCapture(cmds []cli.Command) []cli.Command { @@ -964,6 +974,9 @@ func loginCmd(c *cli.Context) error { } func dockerScanCmd(c *cli.Context, imageTag string) error { + if show, err := cliutils.ShowGenericCmdHelpIfNeeded(c, c.Args(), "dockerscan"); show || err != nil { + return err + } convertedCtx, err := components.ConvertContext(c, securityDocs.GetCommandFlags(securityDocs.DockerScan)...) if err != nil { return err diff --git a/go.mod b/go.mod index 066a34779..0ec66343c 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/jfrog/jfrog-cli-evidence v0.8.2 github.com/jfrog/jfrog-cli-platform-services v1.10.0 github.com/jfrog/jfrog-cli-security v1.21.10 - github.com/jfrog/jfrog-client-go v1.55.1-0.20251028101538-d0d16f019d67 + github.com/jfrog/jfrog-client-go v1.55.1-0.20251030113529-d87ecf28ffb6 github.com/jszwec/csvutil v1.10.0 github.com/manifoldco/promptui v0.9.0 github.com/stretchr/testify v1.11.1 @@ -279,8 +279,10 @@ replace github.com/docker/docker => github.com/docker/docker v27.5.1+incompatibl //replace github.com/jfrog/jfrog-cli-artifactory => github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251028101529-5692ba8863fe -//replace github.com/jfrog/jfrog-cli-core/v2 => github.com/fluxxBot/jfrog-cli-core/v2 v2.58.1-0.20251008152439-da488ef26725 +// attiasas:usage_command_name +replace github.com/jfrog/jfrog-cli-core/v2 => github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4 //replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.54.2-0.20251007084958-5eeaa42c31a6 -//replace github.com/jfrog/jfrog-cli-security => github.com/jfrog/jfrog-cli-security v1.17.2-0.20250511132918-d9cc4cd50020 +// attiasas:fix_docker_scan_usage_name +replace github.com/jfrog/jfrog-cli-security => github.com/attiasas/jfrog-cli-security v0.0.0-20251104120916-4dc3bfdfa653 diff --git a/go.sum b/go.sum index 9f338b041..d0cc11314 100644 --- a/go.sum +++ b/go.sum @@ -694,6 +694,10 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4 h1:O7w7kj9Lmotj2MjRap6V80JsRwFfcK71qN3BXZkUSBk= +github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4/go.mod h1:qGHIijD2doUdFaRFRhudtCmlt0ENDaBvM3dnUClpmHc= +github.com/attiasas/jfrog-cli-security v0.0.0-20251104120916-4dc3bfdfa653 h1:87wDy2gLDoFqrk8rGYv07uus6aUXm8aJu4DFWvfe6Fk= +github.com/attiasas/jfrog-cli-security v0.0.0-20251104120916-4dc3bfdfa653/go.mod h1:PtxVbVrkujrfdR4NcuVeRSBcoquQ99oV+f6CDXH3564= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= @@ -1161,16 +1165,12 @@ github.com/jfrog/jfrog-cli-application v1.0.1 h1:PiiSVKFFs8VLAwjCe2JrIKlX7LmARFt github.com/jfrog/jfrog-cli-application v1.0.1/go.mod h1:gjV6Q2hhoMe3FF77GFiTyIRLSHokpDrkVj0GvYM+1Y4= github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251029093809-3aaa4e93a359 h1:r6rrXnFJYbdpy/mFRcSXxj4pcusZlE0552hj3exv2GY= github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251029093809-3aaa4e93a359/go.mod h1:4D19dyt67m1wtAojNhSYR34xpOSzTyucs2iHEJG9tF8= -github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251028101519-8c79bb06de65 h1:9HDaoQXzP2EcSL7JML3j6qQ18tDvpKRuonFe1DEKvb8= -github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251028101519-8c79bb06de65/go.mod h1:qGHIijD2doUdFaRFRhudtCmlt0ENDaBvM3dnUClpmHc= github.com/jfrog/jfrog-cli-evidence v0.8.2 h1:GQi2BjIruGzTWJ9AJM59frRgiPQoLLDo4IVfwiye0tc= github.com/jfrog/jfrog-cli-evidence v0.8.2/go.mod h1:6KohlDOtLswaJ4YYi/FqflJEZTvt7yP7SA1cjGG0If4= github.com/jfrog/jfrog-cli-platform-services v1.10.0 h1:O+N/VAF+QjFvq9xkHpmzKLcdl9aJu3IP204Su0L14rw= github.com/jfrog/jfrog-cli-platform-services v1.10.0/go.mod h1:qbu4iqBST9x8LgD8HhzUm91iOB3vHqtoGmaxOnmw0ok= -github.com/jfrog/jfrog-cli-security v1.21.10 h1:g5wTAWXJE4V7Ly+AoxU6HzuBaxDj9U+z8aKmQasPOi0= -github.com/jfrog/jfrog-cli-security v1.21.10/go.mod h1:XoJ6YBf/TrwkqC/r9+x/WKDIwnZogTF6+2wos1PJBUs= -github.com/jfrog/jfrog-client-go v1.55.1-0.20251028101538-d0d16f019d67 h1:SpzS1xdPY/N0a4KYlQoyA9UVC3o57vj7mbq7EJTYsD8= -github.com/jfrog/jfrog-client-go v1.55.1-0.20251028101538-d0d16f019d67/go.mod h1:wsMEtoyAu/1bARUHxFdmgz83g96ml7ZWcFioIPiuz/U= +github.com/jfrog/jfrog-client-go v1.55.1-0.20251030113529-d87ecf28ffb6 h1:wIvalJQqSu8HsMduiaCTU7FtkRhbOeaikCIaQKF8EHI= +github.com/jfrog/jfrog-client-go v1.55.1-0.20251030113529-d87ecf28ffb6/go.mod h1:wsMEtoyAu/1bARUHxFdmgz83g96ml7ZWcFioIPiuz/U= github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= github.com/jmespath/go-jmespath v0.4.1-0.20220621161143-b0104c826a24 h1:liMMTbpW34dhU4az1GN0pTPADwNmvoRSeoZ6PItiqnY= From 31f6d4e2f98681f239680e2f83087fc613602973 Mon Sep 17 00:00:00 2001 From: attiasas Date: Tue, 4 Nov 2025 14:21:19 +0200 Subject: [PATCH 2/7] update dep --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0ec66343c..c7d8b4e3b 100644 --- a/go.mod +++ b/go.mod @@ -285,4 +285,4 @@ replace github.com/jfrog/jfrog-cli-core/v2 => github.com/attiasas/jfrog-cli-core //replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.54.2-0.20251007084958-5eeaa42c31a6 // attiasas:fix_docker_scan_usage_name -replace github.com/jfrog/jfrog-cli-security => github.com/attiasas/jfrog-cli-security v0.0.0-20251104120916-4dc3bfdfa653 +replace github.com/jfrog/jfrog-cli-security => github.com/attiasas/jfrog-cli-security v0.0.0-20251104122029-477be4261d4d diff --git a/go.sum b/go.sum index d0cc11314..730f7308f 100644 --- a/go.sum +++ b/go.sum @@ -696,8 +696,8 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4 h1:O7w7kj9Lmotj2MjRap6V80JsRwFfcK71qN3BXZkUSBk= github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4/go.mod h1:qGHIijD2doUdFaRFRhudtCmlt0ENDaBvM3dnUClpmHc= -github.com/attiasas/jfrog-cli-security v0.0.0-20251104120916-4dc3bfdfa653 h1:87wDy2gLDoFqrk8rGYv07uus6aUXm8aJu4DFWvfe6Fk= -github.com/attiasas/jfrog-cli-security v0.0.0-20251104120916-4dc3bfdfa653/go.mod h1:PtxVbVrkujrfdR4NcuVeRSBcoquQ99oV+f6CDXH3564= +github.com/attiasas/jfrog-cli-security v0.0.0-20251104122029-477be4261d4d h1:0rCvDM3SVlrpSWGR/o/D5EC/CGS9MsQ78prwgjGnpYQ= +github.com/attiasas/jfrog-cli-security v0.0.0-20251104122029-477be4261d4d/go.mod h1:PtxVbVrkujrfdR4NcuVeRSBcoquQ99oV+f6CDXH3564= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= From 9a8205112ff4b4054a7048b64186fd873cfa4342 Mon Sep 17 00:00:00 2001 From: attiasas Date: Tue, 25 Nov 2025 12:43:54 +0200 Subject: [PATCH 3/7] update dependencies --- go.mod | 10 ++++------ go.sum | 12 ++++-------- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index f80e4f109..c9c186555 100644 --- a/go.mod +++ b/go.mod @@ -19,10 +19,10 @@ require ( github.com/jfrog/gofrog v1.7.6 github.com/jfrog/jfrog-cli-application v1.0.2-0.20251120093802-1c39a37efcae github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251118100843-ac34330a70d3 - github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251120025936-6dba15f12343 + github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251125083543-e689762c4ff0 github.com/jfrog/jfrog-cli-evidence v0.8.3-0.20251116083852-12dc534b4d13 github.com/jfrog/jfrog-cli-platform-services v1.10.1-0.20251114155350-7ea4c8e32d5a - github.com/jfrog/jfrog-cli-security v1.22.0 + github.com/jfrog/jfrog-cli-security v1.23.0 github.com/jfrog/jfrog-client-go v1.55.1-0.20251119183924-d765eb708cec github.com/jszwec/csvutil v1.10.0 github.com/manifoldco/promptui v0.9.0 @@ -278,10 +278,8 @@ replace github.com/docker/docker => github.com/docker/docker v27.5.1+incompatibl // replace github.com/jfrog/jfrog-cli-core/v2 => github.com/reshmifrog/jfrog-cli-core/v2 v2.58.5-0.20251110095124-ab9a4102ec5a -// attiasas:usage_command_name -replace github.com/jfrog/jfrog-cli-core/v2 => github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4 +// replace github.com/jfrog/jfrog-cli-core/v2 => github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4 //replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.54.2-0.20251007084958-5eeaa42c31a6 -// attiasas:fix_docker_scan_usage_name -replace github.com/jfrog/jfrog-cli-security => github.com/attiasas/jfrog-cli-security v0.0.0-20251104122029-477be4261d4d +// replace github.com/jfrog/jfrog-cli-security => github.com/jfrog/jfrog-cli-security dev diff --git a/go.sum b/go.sum index 143f41922..2da4e4d87 100644 --- a/go.sum +++ b/go.sum @@ -694,10 +694,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4 h1:O7w7kj9Lmotj2MjRap6V80JsRwFfcK71qN3BXZkUSBk= -github.com/attiasas/jfrog-cli-core/v2 v2.0.0-20251104113958-abd9de5958c4/go.mod h1:qGHIijD2doUdFaRFRhudtCmlt0ENDaBvM3dnUClpmHc= -github.com/attiasas/jfrog-cli-security v0.0.0-20251104122029-477be4261d4d h1:0rCvDM3SVlrpSWGR/o/D5EC/CGS9MsQ78prwgjGnpYQ= -github.com/attiasas/jfrog-cli-security v0.0.0-20251104122029-477be4261d4d/go.mod h1:PtxVbVrkujrfdR4NcuVeRSBcoquQ99oV+f6CDXH3564= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= @@ -1165,14 +1161,14 @@ github.com/jfrog/jfrog-cli-application v1.0.2-0.20251120093802-1c39a37efcae h1:L github.com/jfrog/jfrog-cli-application v1.0.2-0.20251120093802-1c39a37efcae/go.mod h1:mBvgtVcGVjRAqc0b+TPmpYNz70nlXJqt1aitL0RGapA= github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251118100843-ac34330a70d3 h1:sIjwBWBmyb7UEqP0IhQ22CWOedOPlNetyHzECS3sUyA= github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251118100843-ac34330a70d3/go.mod h1:3hLZrM2xT+PkIevIGret4x1xDFTaVoNu3h374QnrKyc= -github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251120025936-6dba15f12343 h1:mOEDdk2dMe3zCF83spCGwZbkvUN/LhmoJUS0vea8JxY= -github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251120025936-6dba15f12343/go.mod h1:d9aADumiyjCBvZLffp8wldvP9XFHxcvk2PoOSUYms2g= +github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251125083543-e689762c4ff0 h1:EsasTBE5i2MyCESS/icZxKIlObpGiOyW9K67MAaEWco= +github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251125083543-e689762c4ff0/go.mod h1:d9aADumiyjCBvZLffp8wldvP9XFHxcvk2PoOSUYms2g= github.com/jfrog/jfrog-cli-evidence v0.8.3-0.20251116083852-12dc534b4d13 h1:V9KRanq6ulMMLLwJcnbN2+UlDa0/+sWrUEC2Dex48+E= github.com/jfrog/jfrog-cli-evidence v0.8.3-0.20251116083852-12dc534b4d13/go.mod h1:6KohlDOtLswaJ4YYi/FqflJEZTvt7yP7SA1cjGG0If4= github.com/jfrog/jfrog-cli-platform-services v1.10.1-0.20251114155350-7ea4c8e32d5a h1:2EhQHDB15mIRPDJ62MwO5pruugpHRkeZq5P0PR4jWKI= github.com/jfrog/jfrog-cli-platform-services v1.10.1-0.20251114155350-7ea4c8e32d5a/go.mod h1:qbu4iqBST9x8LgD8HhzUm91iOB3vHqtoGmaxOnmw0ok= -github.com/jfrog/jfrog-cli-security v1.22.0 h1:KNovA+BA1IpE0c0jI6jWF33fOimgylR9a7T84ZmgNJI= -github.com/jfrog/jfrog-cli-security v1.22.0/go.mod h1:uoACrGyWZViNPU0STC0fF38bVKtNXjm3hzWW/DKI0DY= +github.com/jfrog/jfrog-cli-security v1.23.0 h1:kV/NQhyID/P9Lf7D+sgscvkIDQ0l1sYMXnjs1EKWXaE= +github.com/jfrog/jfrog-cli-security v1.23.0/go.mod h1:qBAvU9kN41nReJk/O4V9Q/xwiXfAdyhqRIYaOjVm8nE= github.com/jfrog/jfrog-client-go v1.55.1-0.20251119183924-d765eb708cec h1:tNfeGi/2FuxIUSi8urFZuqa33grynAHwLRH6iIK/DB0= github.com/jfrog/jfrog-client-go v1.55.1-0.20251119183924-d765eb708cec/go.mod h1:ureS+L3wNs0qYUBSwH8C9PjwnraTX9ibZu7JkaqjO/E= github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= From e1496cd8398ef62ab554e5f3e35b2e677c59130b Mon Sep 17 00:00:00 2001 From: attiasas Date: Tue, 25 Nov 2025 13:26:18 +0200 Subject: [PATCH 4/7] add test --- main_test.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/main_test.go b/main_test.go index 87c056627..d4f057028 100644 --- a/main_test.go +++ b/main_test.go @@ -398,6 +398,14 @@ func TestSurvey_NotDisplayedOnNonHelp(t *testing.T) { assert.NotContains(t, string(contentErr), "https://") } +func TestDockerScanHelp(t *testing.T) { + t.Setenv("CI", "false") + jfrogCli := coreTests.NewJfrogCli(execMain, "jfrog", "") + content, _, err := tests.GetCmdOutput(t, jfrogCli, "docker", "scan", "--help") + require.NoError(t, err) + assert.Contains(t, string(content), "jfrog docker scan - Scan local docker image using the docker client and Xray.") +} + func TestSurvey_DisplayedOnHelp(t *testing.T) { t.Setenv("CI", "false") jfrogCli := coreTests.NewJfrogCli(execMain, "jfrog", "") From c252d77a9f908eeeb61ed58c5cb5daf51fc46d42 Mon Sep 17 00:00:00 2001 From: attiasas Date: Tue, 25 Nov 2025 13:44:45 +0200 Subject: [PATCH 5/7] fix test --- docker_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker_test.go b/docker_test.go index 76068d8b8..c15173be8 100644 --- a/docker_test.go +++ b/docker_test.go @@ -606,7 +606,7 @@ func TestNativeDockerFlagParsing(t *testing.T) { }{ {"docker", []string{"docker"}}, {"docker version", []string{"docker", "version"}}, - {"docker scan", []string{"docker", "scan"}}, + {"docker scan", []string{"docker", "scan", path.Join(*tests.ContainerRegistry, tests.DockerLocalRepo, fmt.Sprintf("%s:latest", tests.DockerImageName))}}, {"cli flags after args", []string{"docker", "version", "--build-name=d", "--build-number=1", "--module=1"}}, {"cli flags before args", []string{"docker", "--build-name=d", "--build-number=1", "--module=1", "version"}}, } From bb93b620833cc46b0b8103e7384c7e4c7919b322 Mon Sep 17 00:00:00 2001 From: attiasas Date: Tue, 25 Nov 2025 14:36:01 +0200 Subject: [PATCH 6/7] try fix docker integration tests --- buildtools/cli.go | 7 ++++++- docker_test.go | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/buildtools/cli.go b/buildtools/cli.go index 0b6cad62b..e388bff36 100644 --- a/buildtools/cli.go +++ b/buildtools/cli.go @@ -974,9 +974,14 @@ func loginCmd(c *cli.Context) error { } func dockerScanCmd(c *cli.Context, imageTag string) error { - if show, err := cliutils.ShowGenericCmdHelpIfNeeded(c, c.Args(), "dockerscan"); show || err != nil { + if show, err := cliutils.ShowGenericCmdHelpIfNeeded(c, c.Args(), securityCLI.DockerScanCmdHiddenName); show || err != nil { return err } + if imageTag == "" { + return commonCliUtils.PrintHelpAndReturnError("a docker image name must be provided", func() error { + return cli.ShowCommandHelp(c, securityCLI.DockerScanCmdHiddenName) + }) + } convertedCtx, err := components.ConvertContext(c, securityDocs.GetCommandFlags(securityDocs.DockerScan)...) if err != nil { return err diff --git a/docker_test.go b/docker_test.go index c15173be8..76068d8b8 100644 --- a/docker_test.go +++ b/docker_test.go @@ -606,7 +606,7 @@ func TestNativeDockerFlagParsing(t *testing.T) { }{ {"docker", []string{"docker"}}, {"docker version", []string{"docker", "version"}}, - {"docker scan", []string{"docker", "scan", path.Join(*tests.ContainerRegistry, tests.DockerLocalRepo, fmt.Sprintf("%s:latest", tests.DockerImageName))}}, + {"docker scan", []string{"docker", "scan"}}, {"cli flags after args", []string{"docker", "version", "--build-name=d", "--build-number=1", "--module=1"}}, {"cli flags before args", []string{"docker", "--build-name=d", "--build-number=1", "--module=1", "version"}}, } From d357c9429a61fb1654c8fec080e165331f054f8e Mon Sep 17 00:00:00 2001 From: attiasas Date: Tue, 25 Nov 2025 14:49:33 +0200 Subject: [PATCH 7/7] try fix docker integration tests --- buildtools/cli.go | 5 ----- docker_test.go | 24 ++++++++++++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/buildtools/cli.go b/buildtools/cli.go index e388bff36..db434ee7c 100644 --- a/buildtools/cli.go +++ b/buildtools/cli.go @@ -977,11 +977,6 @@ func dockerScanCmd(c *cli.Context, imageTag string) error { if show, err := cliutils.ShowGenericCmdHelpIfNeeded(c, c.Args(), securityCLI.DockerScanCmdHiddenName); show || err != nil { return err } - if imageTag == "" { - return commonCliUtils.PrintHelpAndReturnError("a docker image name must be provided", func() error { - return cli.ShowCommandHelp(c, securityCLI.DockerScanCmdHiddenName) - }) - } convertedCtx, err := components.ConvertContext(c, securityDocs.GetCommandFlags(securityDocs.DockerScan)...) if err != nil { return err diff --git a/docker_test.go b/docker_test.go index 76068d8b8..9e2dae5e2 100644 --- a/docker_test.go +++ b/docker_test.go @@ -2,8 +2,8 @@ package main import ( "context" + "errors" "fmt" - tests2 "github.com/jfrog/jfrog-cli-artifactory/utils/tests" "os" "os/exec" "path" @@ -12,6 +12,8 @@ import ( "testing" "time" + tests2 "github.com/jfrog/jfrog-cli-artifactory/utils/tests" + "github.com/docker/docker/api/types/mount" biutils "github.com/jfrog/build-info-go/utils" @@ -601,17 +603,23 @@ func TestNativeDockerFlagParsing(t *testing.T) { defer cleanup() dockerTestCases := []struct { - name string - args []string + name string + args []string + expectedErr error }{ - {"docker", []string{"docker"}}, - {"docker version", []string{"docker", "version"}}, - {"docker scan", []string{"docker", "scan"}}, - {"cli flags after args", []string{"docker", "version", "--build-name=d", "--build-number=1", "--module=1"}}, - {"cli flags before args", []string{"docker", "--build-name=d", "--build-number=1", "--module=1", "version"}}, + {"docker", []string{"docker"}, nil}, + {"docker version", []string{"docker", "version"}, nil}, + {"docker scan", []string{"docker", "scan", "--min-severity=low"}, errors.New("a docker image name must be provided")}, + {"cli flags after args", []string{"docker", "version", "--build-name=d", "--build-number=1", "--module=1"}, nil}, + {"cli flags before args", []string{"docker", "--build-name=d", "--build-number=1", "--module=1", "version"}, nil}, } for _, testCase := range dockerTestCases { t.Run(testCase.name, func(t *testing.T) { + if testCase.expectedErr != nil { + err := runJfrogCliWithoutAssertion(testCase.args...) + assert.EqualError(t, err, testCase.expectedErr.Error()) + return + } runCmdWithRetries(t, jfCliTask(testCase.args...)) }) }