diff options
author | Keith Zantow <kzantow@gmail.com> | 2022-10-07 15:39:20 -0400 |
---|---|---|
committer | Keith Zantow <kzantow@gmail.com> | 2022-10-07 15:39:20 -0400 |
commit | ab3e717feaf76784e3939592d98d788d19a4c022 (patch) | |
tree | bcc104b7bbbfd95b471fe6125d22956d510ddf6c /idsearcher/idsearcher_test.go | |
parent | b57c493f0652477bf3764be7273eab6ff11d1eb1 (diff) | |
download | spdx-tools-ab3e717feaf76784e3939592d98d788d19a4c022.tar.gz |
chore: add idsercher functions for 2.3
Signed-off-by: Keith Zantow <kzantow@gmail.com>
Diffstat (limited to 'idsearcher/idsearcher_test.go')
-rw-r--r-- | idsearcher/idsearcher_test.go | 289 |
1 files changed, 289 insertions, 0 deletions
diff --git a/idsearcher/idsearcher_test.go b/idsearcher/idsearcher_test.go index 00e5206..7d7a5bb 100644 --- a/idsearcher/idsearcher_test.go +++ b/idsearcher/idsearcher_test.go @@ -584,6 +584,295 @@ func Test2_2SearcherFailsWithInvalidPath(t *testing.T) { } } +// ===== 2.3 Searcher top-level function tests ===== +func Test2_3SearcherCanFillInIDs(t *testing.T) { + packageName := "project2" + dirRoot := "../testdata/project2/" + config := &Config2_3{ + NamespacePrefix: "https://github.com/swinslow/spdx-docs/spdx-go/testdata-", + } + + doc, err := BuildIDsDocument2_3(packageName, dirRoot, config) + if err != nil { + t.Fatalf("expected nil error, got %v", err) + } + if doc == nil { + t.Fatalf("expected non-nil Document, got nil") + } + + // not checking all contents of doc, see builder tests for those + + // get the package and its files, checking size of each + if doc.Packages == nil { + t.Fatalf("expected non-nil Packages, got nil") + } + if len(doc.Packages) != 1 { + t.Fatalf("expected Packages len to be 1, got %d", len(doc.Packages)) + } + pkg := doc.Packages[0] + if pkg == nil { + t.Fatalf("expected non-nil pkg, got nil") + } + + if pkg.Files == nil { + t.Fatalf("expected non-nil Files, got nil") + } + if len(pkg.Files) != 6 { + t.Fatalf("expected Files len to be 6, got %d", len(pkg.Files)) + } + + fileInFolder := pkg.Files[0] + if fileInFolder.LicenseInfoInFiles == nil { + t.Fatalf("expected non-nil LicenseInfoInFiles, got nil") + } + if len(fileInFolder.LicenseInfoInFiles) != 1 { + t.Fatalf("expected LicenseInfoInFiles len to be 1, got %d", len(fileInFolder.LicenseInfoInFiles)) + } + if fileInFolder.LicenseInfoInFiles[0] != "MIT" { + t.Errorf("expected %v, got %v", "MIT", fileInFolder.LicenseInfoInFiles[0]) + } + if fileInFolder.LicenseConcluded != "MIT" { + t.Errorf("expected %v, got %v", "MIT", fileInFolder.LicenseConcluded) + } + + fileTrailingComment := pkg.Files[1] + if fileTrailingComment.LicenseInfoInFiles == nil { + t.Fatalf("expected non-nil LicenseInfoInFiles, got nil") + } + if len(fileTrailingComment.LicenseInfoInFiles) != 1 { + t.Fatalf("expected LicenseInfoInFiles len to be 1, got %d", len(fileTrailingComment.LicenseInfoInFiles)) + } + if fileTrailingComment.LicenseInfoInFiles[0] != "GPL-2.0-or-later" { + t.Errorf("expected %v, got %v", "GPL-2.0-or-later", fileTrailingComment.LicenseInfoInFiles[0]) + } + if fileTrailingComment.LicenseConcluded != "GPL-2.0-or-later" { + t.Errorf("expected %v, got %v", "GPL-2.0-or-later", fileTrailingComment.LicenseConcluded) + } + + fileHasDuplicateID := pkg.Files[2] + if fileHasDuplicateID.LicenseInfoInFiles == nil { + t.Fatalf("expected non-nil LicenseInfoInFiles, got nil") + } + if len(fileHasDuplicateID.LicenseInfoInFiles) != 1 { + t.Fatalf("expected LicenseInfoInFiles len to be 1, got %d", len(fileHasDuplicateID.LicenseInfoInFiles)) + } + if fileHasDuplicateID.LicenseInfoInFiles[0] != "MIT" { + t.Errorf("expected %v, got %v", "MIT", fileHasDuplicateID.LicenseInfoInFiles[0]) + } + if fileHasDuplicateID.LicenseConcluded != "MIT" { + t.Errorf("expected %v, got %v", "MIT", fileHasDuplicateID.LicenseConcluded) + } + + fileHasID := pkg.Files[3] + if fileHasID.LicenseInfoInFiles == nil { + t.Fatalf("expected non-nil LicenseInfoInFiles, got nil") + } + if len(fileHasID.LicenseInfoInFiles) != 2 { + t.Fatalf("expected LicenseInfoInFiles len to be 2, got %d", len(fileHasID.LicenseInfoInFiles)) + } + if fileHasID.LicenseInfoInFiles[0] != "Apache-2.0" { + t.Errorf("expected %v, got %v", "Apache-2.0", fileHasID.LicenseInfoInFiles[0]) + } + if fileHasID.LicenseInfoInFiles[1] != "GPL-2.0-or-later" { + t.Errorf("expected %v, got %v", "GPL-2.0-or-later", fileHasID.LicenseInfoInFiles[1]) + } + if fileHasID.LicenseConcluded != "Apache-2.0 OR GPL-2.0-or-later" { + t.Errorf("expected %v, got %v", "Apache-2.0 OR GPL-2.0-or-later", fileHasID.LicenseConcluded) + } + + fileMultipleIDs := pkg.Files[4] + if fileMultipleIDs.LicenseInfoInFiles == nil { + t.Fatalf("expected non-nil LicenseInfoInFiles, got nil") + } + if len(fileMultipleIDs.LicenseInfoInFiles) != 5 { + t.Fatalf("expected LicenseInfoInFiles len to be 5, got %d", len(fileMultipleIDs.LicenseInfoInFiles)) + } + if fileMultipleIDs.LicenseInfoInFiles[0] != "BSD-2-Clause" { + t.Errorf("expected %v, got %v", "BSD-2-Clause", fileMultipleIDs.LicenseInfoInFiles[0]) + } + if fileMultipleIDs.LicenseInfoInFiles[1] != "BSD-3-Clause" { + t.Errorf("expected %v, got %v", "BSD-3-Clause", fileMultipleIDs.LicenseInfoInFiles[1]) + } + // here, DO NOT keep the + + if fileMultipleIDs.LicenseInfoInFiles[2] != "EPL-1.0" { + t.Errorf("expected %v, got %v", "EPL-1.0", fileMultipleIDs.LicenseInfoInFiles[2]) + } + if fileMultipleIDs.LicenseInfoInFiles[3] != "ISC" { + t.Errorf("expected %v, got %v", "ISC", fileMultipleIDs.LicenseInfoInFiles[3]) + } + if fileMultipleIDs.LicenseInfoInFiles[4] != "MIT" { + t.Errorf("expected %v, got %v", "MIT", fileMultipleIDs.LicenseInfoInFiles[4]) + } + if fileMultipleIDs.LicenseConcluded != "((MIT AND BSD-3-Clause) OR ISC) AND BSD-2-Clause AND EPL-1.0+" { + t.Errorf("expected %v, got %v", "((MIT AND BSD-3-Clause) OR ISC) AND BSD-2-Clause AND EPL-1.0+", fileMultipleIDs.LicenseConcluded) + } + + fileNoID := pkg.Files[5] + if fileNoID.LicenseInfoInFiles == nil { + t.Fatalf("expected non-nil LicenseInfoInFiles, got nil") + } + if len(fileNoID.LicenseInfoInFiles) != 1 { + t.Fatalf("expected LicenseInfoInFiles len to be 1, got %d", len(fileNoID.LicenseInfoInFiles)) + } + if fileNoID.LicenseInfoInFiles[0] != "NOASSERTION" { + t.Errorf("expected %v, got %v", "NOASSERTION", fileNoID.LicenseInfoInFiles[0]) + } + if fileNoID.LicenseConcluded != "NOASSERTION" { + t.Errorf("expected %v, got %v", "NOASSERTION", fileNoID.LicenseConcluded) + } + + // and finally, the package should have all of these licenses + if pkg.PackageLicenseInfoFromFiles == nil { + t.Fatalf("expected non-nil PackageLicenseInfoFromFiles, got nil") + } + if len(pkg.PackageLicenseInfoFromFiles) != 7 { + t.Fatalf("expected PackageLicenseInfoFromFiles len to be 7, got %d", len(pkg.PackageLicenseInfoFromFiles)) + } + if pkg.PackageLicenseInfoFromFiles[0] != "Apache-2.0" { + t.Errorf("expected %v, got %v", "Apache-2.0", pkg.PackageLicenseInfoFromFiles[0]) + } + if pkg.PackageLicenseInfoFromFiles[1] != "BSD-2-Clause" { + t.Errorf("expected %v, got %v", "BSD-2-Clause", pkg.PackageLicenseInfoFromFiles[1]) + } + if pkg.PackageLicenseInfoFromFiles[2] != "BSD-3-Clause" { + t.Errorf("expected %v, got %v", "BSD-3-Clause", pkg.PackageLicenseInfoFromFiles[2]) + } + // here, DO NOT keep the + + if pkg.PackageLicenseInfoFromFiles[3] != "EPL-1.0" { + t.Errorf("expected %v, got %v", "EPL-1.0", pkg.PackageLicenseInfoFromFiles[3]) + } + if pkg.PackageLicenseInfoFromFiles[4] != "GPL-2.0-or-later" { + t.Errorf("expected %v, got %v", "GPL-2.0-or-later", pkg.PackageLicenseInfoFromFiles[4]) + } + if pkg.PackageLicenseInfoFromFiles[5] != "ISC" { + t.Errorf("expected %v, got %v", "ISC", pkg.PackageLicenseInfoFromFiles[5]) + } + if pkg.PackageLicenseInfoFromFiles[6] != "MIT" { + t.Errorf("expected %v, got %v", "MIT", pkg.PackageLicenseInfoFromFiles[6]) + } + +} + +func Test2_3SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { + packageName := "project3" + dirRoot := "../testdata/project3/" + config := &Config2_3{ + NamespacePrefix: "https://github.com/swinslow/spdx-docs/spdx-go/testdata-", + BuilderPathsIgnored: []string{ + "**/ignoredir/", + "/excludedir/", + "**/ignorefile.txt", + "/alsoEXCLUDEthis.txt", + }, + SearcherPathsIgnored: []string{ + "**/dontscan.txt", + }, + } + + doc, err := BuildIDsDocument2_3(packageName, dirRoot, config) + if err != nil { + t.Fatalf("expected nil error, got %v", err) + } + if doc == nil { + t.Fatalf("expected non-nil Document, got nil") + } + + // not checking all contents of doc, see builder tests for those + + // get the package and its files, checking licenses for each, and + // confirming NOASSERTION for those that are skipped + pkg := doc.Packages[0] + if pkg == nil { + t.Fatalf("expected non-nil pkg, got nil") + } + if len(pkg.Files) != 5 { + t.Fatalf("expected len %d, got %d", 5, len(pkg.Files)) + } + + f := pkg.Files[0] + if f.FileName != "./dontscan.txt" { + t.Errorf("expected %v, got %v", "./dontscan.txt", f.FileName) + } + if len(f.LicenseInfoInFiles) != 1 { + t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFiles)) + } + if f.LicenseInfoInFiles[0] != "NOASSERTION" { + t.Errorf("expected %s, got %s", "NOASSERTION", f.LicenseInfoInFiles[0]) + } + if f.LicenseConcluded != "NOASSERTION" { + t.Errorf("expected %s, got %s", "NOASSERTION", f.LicenseConcluded) + } + + f = pkg.Files[1] + if f.FileName != "./keep/keep.txt" { + t.Errorf("expected %v, got %v", "./keep/keep.txt", f.FileName) + } + if len(f.LicenseInfoInFiles) != 1 { + t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFiles)) + } + if f.LicenseInfoInFiles[0] != "MIT" { + t.Errorf("expected %s, got %s", "MIT", f.LicenseInfoInFiles[0]) + } + if f.LicenseConcluded != "MIT" { + t.Errorf("expected %s, got %s", "MIT", f.LicenseConcluded) + } + + f = pkg.Files[2] + if f.FileName != "./keep.txt" { + t.Errorf("expected %v, got %v", "./keep.txt", f.FileName) + } + if len(f.LicenseInfoInFiles) != 1 { + t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFiles)) + } + if f.LicenseInfoInFiles[0] != "NOASSERTION" { + t.Errorf("expected %s, got %s", "NOASSERTION", f.LicenseInfoInFiles[0]) + } + if f.LicenseConcluded != "NOASSERTION" { + t.Errorf("expected %s, got %s", "NOASSERTION", f.LicenseConcluded) + } + + f = pkg.Files[3] + if f.FileName != "./subdir/keep/dontscan.txt" { + t.Errorf("expected %v, got %v", "./subdir/keep/dontscan.txt", f.FileName) + } + if len(f.LicenseInfoInFiles) != 1 { + t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFiles)) + } + if f.LicenseInfoInFiles[0] != "NOASSERTION" { + t.Errorf("expected %s, got %s", "NOASSERTION", f.LicenseInfoInFiles[0]) + } + if f.LicenseConcluded != "NOASSERTION" { + t.Errorf("expected %s, got %s", "NOASSERTION", f.LicenseConcluded) + } + + f = pkg.Files[4] + if f.FileName != "./subdir/keep/keep.txt" { + t.Errorf("expected %v, got %v", "./subdir/keep/keep.txt", f.FileName) + } + if len(f.LicenseInfoInFiles) != 1 { + t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFiles)) + } + if f.LicenseInfoInFiles[0] != "MIT" { + t.Errorf("expected %s, got %s", "MIT", f.LicenseInfoInFiles[0]) + } + if f.LicenseConcluded != "MIT" { + t.Errorf("expected %s, got %s", "MIT", f.LicenseConcluded) + } +} + +func Test2_3SearcherFailsWithInvalidPath(t *testing.T) { + packageName := "project2" + dirRoot := "./oops/invalid" + config := &Config2_3{ + NamespacePrefix: "whatever", + } + + _, err := BuildIDsDocument2_3(packageName, dirRoot, config) + if err == nil { + t.Fatalf("expected non-nil error, got nil") + } +} + // ===== Searcher utility tests ===== func TestCanFindShortFormIDWhenPresent(t *testing.T) { filePath := "../testdata/project2/has-id.txt" |