package commands import ( "testing" "github.com/stretchr/testify/assert" "github.com/anchore/syft/cmd/syft/internal/options" ) func Test_scanOptions_validateLegacyOptionsNotUsed(t *testing.T) { tests := []struct { name string cfg string wantErr assert.ErrorAssertionFunc }{ { name: "no config file", }, { name: "config file with no legacy options", cfg: "testdata/scan-configs/no-legacy-options.yaml", }, { name: "config file with default image pull source legacy option", cfg: "testdata/scan-configs/with-default-pull-source.yaml", wantErr: assertErrorContains("source.image.default-pull-source"), }, { name: "config file with exclude-binary-overlap-by-ownership legacy option", cfg: "testdata/scan-configs/with-exclude-binary-overlap-by-ownership.yaml", wantErr: assertErrorContains("package.exclude-binary-overlap-by-ownership"), }, { name: "config file with file string legacy option", cfg: "testdata/scan-configs/with-file-string.yaml", wantErr: assertErrorContains("outputs"), }, { name: "config file with file section", cfg: "testdata/scan-configs/with-file-section.yaml", }, { name: "config file with base-path legacy option", cfg: "testdata/scan-configs/with-base-path.yaml", wantErr: assertErrorContains("source.base-path"), }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if tt.wantErr == nil { tt.wantErr = assert.NoError } o := &scanOptions{ Config: options.Config{ConfigFile: tt.cfg}, } tt.wantErr(t, o.validateLegacyOptionsNotUsed()) }) } } func assertErrorContains(contains string) assert.ErrorAssertionFunc { return func(t assert.TestingT, err error, i ...any) bool { return assert.ErrorContains(t, err, contains, i...) } }