Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit 5329b2d

Browse files
Merge pull request #118 from docker/empty-config-file
Fix issue when Docker scan config file is empty
2 parents 4f91a19 + accc94e commit 5329b2d

5 files changed

Lines changed: 20 additions & 12 deletions

File tree

config/config.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,13 @@ func ReadConfigFile() (Config, error) {
3939
var conf Config
4040
path := filepath.Join(cliConfig.Dir(), "scan", "config.json")
4141
buf, err := ioutil.ReadFile(path)
42-
if os.IsNotExist(err) {
43-
return conf, nil
44-
}
4542
if err != nil {
46-
return conf, errors.Wrap(err, "failed to read docker scan configuration file")
43+
_ = os.Remove(path)
44+
return conf, errors.Wrap(err, "failed to read docker scan configuration file. Please restart Docker Desktop")
4745
}
4846
if err := json.Unmarshal(buf, &conf); err != nil {
49-
return conf, errors.Wrapf(err, "invalid docker scan configuration file %s", path)
47+
_ = os.Remove(path)
48+
return conf, errors.Wrapf(err, "invalid docker scan configuration file %s. Please restart Docker Desktop", path)
5049
}
5150
return conf, nil
5251
}

e2e/auth_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ func TestSnykAuthentication(t *testing.T) {
3737
homeDir, cleanFunction := createSnykConfFile(t, "")
3838
defer cleanFunction()
3939

40-
cmd, _, cleanup := dockerCli.createTestCmd()
40+
cmd, configDir, cleanup := dockerCli.createTestCmd()
4141
defer cleanup()
42+
createScanConfigFile(t, configDir)
4243

4344
token := os.Getenv("E2E_TEST_AUTH_TOKEN")
4445
assert.Assert(t, token != "", "E2E_TEST_AUTH_TOKEN needs to be filled")
@@ -67,8 +68,9 @@ func TestAuthenticationFlagFailsWithImage(t *testing.T) {
6768
}
6869

6970
func TestAuthenticationChecksToken(t *testing.T) {
70-
cmd, _, cleanup := dockerCli.createTestCmd()
71+
cmd, configDir, cleanup := dockerCli.createTestCmd()
7172
defer cleanup()
73+
createScanConfigFile(t, configDir)
7274

7375
cmd.Command = dockerCli.Command("scan", "--accept-license", "--login", "--token", "invalid-token")
7476
icmd.RunCmd(cmd).Assert(t, icmd.Expected{

e2e/optin_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ Version:`))
6565
func TestRefuseOptinWithDisableFlag(t *testing.T) {
6666
cmd, configDir, cleanup := dockerCli.createTestCmd()
6767
defer cleanup()
68+
createScanConfigFile(t, configDir)
6869

6970
// docker scan --version should exit immediately
7071
cmd.Command = dockerCli.Command("scan", "--reject-license", "--version")

e2e/scan_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func TestScanFailsNoAuthentication(t *testing.T) {
4949

5050
cmd, configDir, cleanup := dockerCli.createTestCmd()
5151
defer cleanup()
52+
createScanConfigFile(t, configDir)
5253

5354
// write dockerCli config with authentication to a registry which isn't Hub
5455
patchConfig(t, configDir, "com.example.registry", "invalid-user", "invalid-password")
@@ -66,8 +67,9 @@ func TestScanFailsWithCleanMessage(t *testing.T) {
6667
_, cleanFunction := createSnykConfFile(t, "")
6768
defer cleanFunction()
6869

69-
cmd, _, cleanup := dockerCli.createTestCmd()
70+
cmd, configDir, cleanup := dockerCli.createTestCmd()
7071
defer cleanup()
72+
createScanConfigFile(t, configDir)
7173

7274
cmd.Command = dockerCli.Command("scan", "--accept-license", "example:image")
7375
icmd.RunCmd(cmd).Assert(t, icmd.Expected{

e2e/version_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,19 @@ Provider: %s
9393
}
9494

9595
func TestVersionWithoutSnykOrConfig(t *testing.T) {
96-
cmd, _, cleanup := dockerCli.createTestCmd()
96+
cmd, configDir, cleanup := dockerCli.createTestCmd()
9797
defer cleanup()
9898

9999
// docker scan --version should fail with a clean error
100100
cmd.Command = dockerCli.Command("scan", "--accept-license", "--version")
101-
icmd.RunCmd(cmd).Assert(t, icmd.Expected{
101+
output := icmd.RunCmd(cmd).Assert(t, icmd.Expected{
102102
ExitCode: 1,
103-
Err: "could not find Snyk binary",
104-
})
103+
}).Combined()
104+
expected := fmt.Sprintf(
105+
`failed to read docker scan configuration file. Please restart Docker Desktop: open %s/scan/config.json: no such file or directory
106+
`,
107+
configDir)
108+
assert.Equal(t, output, expected)
105109
}
106110

107111
func getProviderVersion(env string) string {

0 commit comments

Comments
 (0)