From 05be9e25ce6719c2c876708d8933960741b0f719 Mon Sep 17 00:00:00 2001 From: Weston Steimel Date: Tue, 7 Jun 2022 13:09:09 +0000 Subject: [PATCH] improve LanguageByName and add unit tests (#1034) Signed-off-by: Weston Steimel --- syft/pkg/language.go | 6 +-- syft/pkg/language_test.go | 108 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 3 deletions(-) diff --git a/syft/pkg/language.go b/syft/pkg/language.go index ad05670cd..e248ed725 100644 --- a/syft/pkg/language.go +++ b/syft/pkg/language.go @@ -62,11 +62,11 @@ func LanguageByName(name string) Language { return JavaScript case packageurl.TypePyPi, string(Python): return Python - case packageurl.TypeGem: + case packageurl.TypeGem, string(Ruby): return Ruby - case purlCargoPkgType: + case purlCargoPkgType, string(RustPkg), string(Rust): return Rust - case packageurl.TypePub, string(Dart): + case packageurl.TypePub, string(DartPubPkg), string(Dart): return Dart case packageurl.TypeDotnet: return Dotnet diff --git a/syft/pkg/language_test.go b/syft/pkg/language_test.go index 0f2a8a544..1637f7471 100644 --- a/syft/pkg/language_test.go +++ b/syft/pkg/language_test.go @@ -73,3 +73,111 @@ func TestLanguageFromPURL(t *testing.T) { assert.ElementsMatch(t, expectedLanguages.List(), languages, "missing one or more languages to test against (maybe a package type was added?)") } + +func TestLanguageByName(t *testing.T) { + tests := []struct { + name string + language Language + }{ + { + name: "maven", + language: Java, + }, + { + name: "java", + language: Java, + }, + { + name: "java-archive", + language: Java, + }, + { + name: "java", + language: Java, + }, + { + name: "composer", + language: PHP, + }, + { + name: "php-composer", + language: PHP, + }, + { + name: "php", + language: PHP, + }, + { + name: "go", + language: Go, + }, + { + name: "golang", + language: Go, + }, + { + name: "go-module", + language: Go, + }, + { + name: "npm", + language: JavaScript, + }, + { + name: "javascript", + language: JavaScript, + }, + { + name: "pypi", + language: Python, + }, + { + name: "python", + language: Python, + }, + { + name: "gem", + language: Ruby, + }, + { + name: "ruby", + language: Ruby, + }, + { + name: "rust", + language: Rust, + }, + { + name: "rust-crate", + language: Rust, + }, + { + name: "cargo", + language: Rust, + }, + { + name: "dart", + language: Dart, + }, + { + name: "dart-pub", + language: Dart, + }, + { + name: "pub", + language: Dart, + }, + { + name: "dotnet", + language: Dotnet, + }, + { + name: "unknown", + language: UnknownLanguage, + }, + } + + for _, test := range tests { + assert.Equal(t, LanguageByName(test.name), test.language) + } +}