From 32a54b94bede728596e37175cb221c790e0b40c8 Mon Sep 17 00:00:00 2001 From: Alex Goodman Date: Thu, 12 Aug 2021 14:09:22 -0400 Subject: [PATCH] add unit tests for distro identification based on "like" field Signed-off-by: Alex Goodman --- syft/distro/identify.go | 3 +-- syft/distro/identify_test.go | 17 +++++++++++++++-- .../missing-id/usr/lib/os-release | 3 +++ .../missing-version/usr/lib/os-release | 2 ++ .../unknown-id/usr/lib/os-release | 4 ++++ 5 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 syft/distro/test-fixtures/partial-fields/missing-id/usr/lib/os-release create mode 100644 syft/distro/test-fixtures/partial-fields/missing-version/usr/lib/os-release create mode 100644 syft/distro/test-fixtures/partial-fields/unknown-id/usr/lib/os-release diff --git a/syft/distro/identify.go b/syft/distro/identify.go index f935cca55..ea03e8f52 100644 --- a/syft/distro/identify.go +++ b/syft/distro/identify.go @@ -97,8 +97,7 @@ func assemble(name, version, like string) *Distro { // If it's an unknown distro, try mapping the ID_LIKE if !ok && len(like) != 0 { - name = like - distroType, ok = IDMapping[name] + distroType, ok = IDMapping[like] } if ok { diff --git a/syft/distro/identify_test.go b/syft/distro/identify_test.go index f11d74693..4f01f1578 100644 --- a/syft/distro/identify_test.go +++ b/syft/distro/identify_test.go @@ -7,9 +7,8 @@ import ( "testing" "github.com/anchore/syft/internal" - "github.com/stretchr/testify/assert" - "github.com/anchore/syft/syft/source" + "github.com/stretchr/testify/assert" ) func TestIdentifyDistro(t *testing.T) { @@ -85,6 +84,20 @@ func TestIdentifyDistro(t *testing.T) { fixture: "test-fixtures/os/arch", Type: ArchLinux, }, + { + fixture: "test-fixtures/partial-fields/missing-id", + Type: Debian, + Version: "8.0.0", + }, + { + fixture: "test-fixtures/partial-fields/unknown-id", + Type: Debian, + Version: "8.0.0", + }, + { + fixture: "test-fixtures/partial-fields/missing-version", + Type: UnknownDistroType, + }, } observedDistros := internal.NewStringSet() diff --git a/syft/distro/test-fixtures/partial-fields/missing-id/usr/lib/os-release b/syft/distro/test-fixtures/partial-fields/missing-id/usr/lib/os-release new file mode 100644 index 000000000..d6370845a --- /dev/null +++ b/syft/distro/test-fixtures/partial-fields/missing-id/usr/lib/os-release @@ -0,0 +1,3 @@ +NAME="Debian GNU/Linux" +VERSION_ID="8" +ID_LIKE=debian diff --git a/syft/distro/test-fixtures/partial-fields/missing-version/usr/lib/os-release b/syft/distro/test-fixtures/partial-fields/missing-version/usr/lib/os-release new file mode 100644 index 000000000..899dd390a --- /dev/null +++ b/syft/distro/test-fixtures/partial-fields/missing-version/usr/lib/os-release @@ -0,0 +1,2 @@ +NAME="Debian GNU/Linux" +ID_LIKE=debian diff --git a/syft/distro/test-fixtures/partial-fields/unknown-id/usr/lib/os-release b/syft/distro/test-fixtures/partial-fields/unknown-id/usr/lib/os-release new file mode 100644 index 000000000..e7c3efe09 --- /dev/null +++ b/syft/distro/test-fixtures/partial-fields/unknown-id/usr/lib/os-release @@ -0,0 +1,4 @@ +NAME="Debian GNU/Linux" +VERSION_ID="8" +ID=my-awesome-distro +ID_LIKE=debian