Skip to content

Commit

Permalink
fix: SPDX tag value version selector (#2665)
Browse files Browse the repository at this point in the history
Signed-off-by: Keith Zantow <kzantow@gmail.com>
  • Loading branch information
kzantow committed Feb 23, 2024
1 parent 170ac07 commit 2995c3c
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 3 deletions.
8 changes: 5 additions & 3 deletions cmd/syft/internal/options/format.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package options
import (
"github.com/anchore/clio"
"github.com/anchore/syft/syft/format"
"github.com/anchore/syft/syft/format/spdxtagvalue"
"github.com/anchore/syft/syft/sbom"
)

Expand Down Expand Up @@ -41,9 +42,10 @@ func (o Format) Encoders() ([]sbom.FormatEncoder, error) {
return format.EncodersConfig{
Template: o.Template.config(),
SyftJSON: o.SyftJSON.config(),
SPDXJSON: o.SPDXJSON.config(format.AllVersions), // we support multiple versions, not just a single version
CyclonedxJSON: o.CyclonedxJSON.config(format.AllVersions), // we support multiple versions, not just a single version
CyclonedxXML: o.CyclonedxXML.config(format.AllVersions), // we support multiple versions, not just a single version
SPDXJSON: o.SPDXJSON.config(format.AllVersions), // we support multiple versions, not just a single version
SPDXTagValue: spdxtagvalue.EncoderConfig{Version: format.AllVersions}, // we support multiple versions, not just a single version
CyclonedxJSON: o.CyclonedxJSON.config(format.AllVersions), // we support multiple versions, not just a single version
CyclonedxXML: o.CyclonedxXML.config(format.AllVersions), // we support multiple versions, not just a single version
}.Encoders()
}

Expand Down
37 changes: 37 additions & 0 deletions test/cli/all_formats_expressible_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,40 @@ func TestAllFormatsExpressible(t *testing.T) {
})
}
}

func Test_formatVersionsExpressible(t *testing.T) {
tests := []struct {
format string
assertion traitAssertion
}{
{
format: "spdx@2.1",
assertion: assertInOutput("SPDXVersion: SPDX-2.1"),
},
{
format: "spdx@2.2",
assertion: assertInOutput("SPDXVersion: SPDX-2.2"),
},
{
format: "spdx@2.3",
assertion: assertInOutput("SPDXVersion: SPDX-2.3"),
},
{
format: "spdx-json@2.2",
assertion: assertInOutput(`"spdxVersion":"SPDX-2.2"`),
},
{
format: "spdx-json@2.3",
assertion: assertInOutput(`"spdxVersion":"SPDX-2.3"`),
},
}

for _, test := range tests {
t.Run(test.format, func(t *testing.T) {
args := []string{"dir:./test-fixtures/image-pkg-coverage", "-o", test.format}
cmd, stdout, stderr := runSyft(t, nil, args...)
test.assertion(t, stdout, stderr, cmd.ProcessState.ExitCode())
logOutputOnFailure(t, cmd, stdout, stderr)
})
}
}

0 comments on commit 2995c3c

Please sign in to comment.