diff options
Diffstat (limited to 'tvloader/parser2v2/parse_package_test.go')
-rw-r--r-- | tvloader/parser2v2/parse_package_test.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tvloader/parser2v2/parse_package_test.go b/tvloader/parser2v2/parse_package_test.go index 33b4784..5809931 100644 --- a/tvloader/parser2v2/parse_package_test.go +++ b/tvloader/parser2v2/parse_package_test.go @@ -1102,3 +1102,28 @@ func TestFailsPackageExternalRefWithInvalidFormat(t *testing.T) { t.Errorf("expected non-nil error, got nil") } } + +func TestParser2_2PackageWithoutSpdxIdentifierThrowsError(t *testing.T) { + // More than one package, the previous package doesn't contain an SPDX ID + pkgOldName := "p1" + parser := tvParser2_2{ + doc: &spdx.Document2_2{Packages: map[spdx.ElementID]*spdx.Package2_2{}}, + st: psPackage2_2, + pkg: &spdx.Package2_2{PackageName: pkgOldName}, + } + pkgOld := parser.pkg + parser.doc.Packages["p1"] = pkgOld + // the Document's Packages should have this one only + if parser.doc.Packages["p1"] != pkgOld { + t.Errorf("expected package %v, got %v", pkgOld, parser.doc.Packages["p1"]) + } + if len(parser.doc.Packages) != 1 { + t.Errorf("expected 1 package, got %d", len(parser.doc.Packages)) + } + + pkgName := "p2" + err := parser.parsePair2_2("PackageName", pkgName) + if err == nil { + t.Errorf("package without SPDX Identifier getting accepted") + } +} |