1// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2 3package builder2v2 4 5import ( 6 "testing" 7 8 "github.com/spdx/tools-golang/spdx/common" 9) 10 11// ===== Package section builder tests ===== 12func TestBuilder2_2CanBuildPackageSection(t *testing.T) { 13 packageName := "project1" 14 dirRoot := "../../testdata/project1/" 15 16 wantVerificationCode := common.PackageVerificationCode{Value: "fc9ac4a370af0a471c2e52af66d6b4cf4e2ba12b"} 17 18 pkg, err := BuildPackageSection2_2(packageName, dirRoot, nil) 19 if err != nil { 20 t.Fatalf("expected nil error, got %v", err) 21 } 22 23 if pkg == nil { 24 t.Fatalf("expected non-nil Package, got nil") 25 } 26 if pkg.PackageName != "project1" { 27 t.Errorf("expected %v, got %v", "project1", pkg.PackageName) 28 } 29 if pkg.PackageSPDXIdentifier != common.ElementID("Package-project1") { 30 t.Errorf("expected %v, got %v", "Package-project1", pkg.PackageSPDXIdentifier) 31 } 32 if pkg.PackageDownloadLocation != "NOASSERTION" { 33 t.Errorf("expected %v, got %v", "NOASSERTION", pkg.PackageDownloadLocation) 34 } 35 if pkg.FilesAnalyzed != true { 36 t.Errorf("expected %v, got %v", true, pkg.FilesAnalyzed) 37 } 38 if pkg.IsFilesAnalyzedTagPresent != true { 39 t.Errorf("expected %v, got %v", true, pkg.IsFilesAnalyzedTagPresent) 40 } 41 if pkg.PackageVerificationCode.Value != wantVerificationCode.Value { 42 t.Errorf("expected %v, got %v", wantVerificationCode, pkg.PackageVerificationCode) 43 } 44 if pkg.PackageLicenseConcluded != "NOASSERTION" { 45 t.Errorf("expected %v, got %v", "NOASSERTION", pkg.PackageLicenseConcluded) 46 } 47 if len(pkg.PackageLicenseInfoFromFiles) != 0 { 48 t.Errorf("expected %v, got %v", 0, len(pkg.PackageLicenseInfoFromFiles)) 49 } 50 if pkg.PackageLicenseDeclared != "NOASSERTION" { 51 t.Errorf("expected %v, got %v", "NOASSERTION", pkg.PackageLicenseDeclared) 52 } 53 if pkg.PackageCopyrightText != "NOASSERTION" { 54 t.Errorf("expected %v, got %v", "NOASSERTION", pkg.PackageCopyrightText) 55 } 56 57 // and make sure we got the right number of files, and check the first one 58 if pkg.Files == nil { 59 t.Fatalf("expected non-nil pkg.Files, got nil") 60 } 61 if len(pkg.Files) != 5 { 62 t.Fatalf("expected %d, got %d", 5, len(pkg.Files)) 63 } 64 fileEmpty := pkg.Files[0] 65 if fileEmpty == nil { 66 t.Fatalf("expected non-nil file, got nil") 67 } 68 if fileEmpty.FileName != "./emptyfile.testdata.txt" { 69 t.Errorf("expected %v, got %v", "./emptyfile.testdata.txt", fileEmpty.FileName) 70 } 71 if fileEmpty.FileSPDXIdentifier != common.ElementID("File0") { 72 t.Errorf("expected %v, got %v", "File0", fileEmpty.FileSPDXIdentifier) 73 } 74 for _, checksum := range fileEmpty.Checksums { 75 switch checksum.Algorithm { 76 case common.SHA1: 77 if checksum.Value != "da39a3ee5e6b4b0d3255bfef95601890afd80709" { 78 t.Errorf("expected %v, got %v", "da39a3ee5e6b4b0d3255bfef95601890afd80709", checksum.Value) 79 } 80 case common.SHA256: 81 if checksum.Value != "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" { 82 t.Errorf("expected %v, got %v", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", checksum.Value) 83 } 84 case common.MD5: 85 if checksum.Value != "d41d8cd98f00b204e9800998ecf8427e" { 86 t.Errorf("expected %v, got %v", "d41d8cd98f00b204e9800998ecf8427e", checksum.Value) 87 } 88 } 89 } 90 if fileEmpty.LicenseConcluded != "NOASSERTION" { 91 t.Errorf("expected %v, got %v", "NOASSERTION", fileEmpty.LicenseConcluded) 92 } 93 if len(fileEmpty.LicenseInfoInFiles) != 1 { 94 t.Errorf("expected %v, got %v", 1, len(fileEmpty.LicenseInfoInFiles)) 95 } else { 96 if fileEmpty.LicenseInfoInFiles[0] != "NOASSERTION" { 97 t.Errorf("expected %v, got %v", "NOASSERTION", fileEmpty.LicenseInfoInFiles[0]) 98 } 99 } 100 if fileEmpty.FileCopyrightText != "NOASSERTION" { 101 t.Errorf("expected %v, got %v", "NOASSERTION", fileEmpty.FileCopyrightText) 102 } 103} 104 105func TestBuilder2_2CanIgnoreFiles(t *testing.T) { 106 packageName := "project3" 107 dirRoot := "../../testdata/project3/" 108 pathsIgnored := []string{ 109 "**/ignoredir/", 110 "/excludedir/", 111 "**/ignorefile.txt", 112 "/alsoEXCLUDEthis.txt", 113 } 114 pkg, err := BuildPackageSection2_2(packageName, dirRoot, pathsIgnored) 115 if err != nil { 116 t.Fatalf("expected nil error, got %v", err) 117 } 118 119 // make sure we got the right files 120 if pkg.Files == nil { 121 t.Fatalf("expected non-nil pkg.Files, got nil") 122 } 123 if len(pkg.Files) != 5 { 124 t.Fatalf("expected %d, got %d", 5, len(pkg.Files)) 125 } 126 127 want := "./dontscan.txt" 128 got := pkg.Files[0].FileName 129 if want != got { 130 t.Errorf("expected %v, got %v", want, got) 131 } 132 133 want = "./keep/keep.txt" 134 got = pkg.Files[1].FileName 135 if want != got { 136 t.Errorf("expected %v, got %v", want, got) 137 } 138 139 want = "./keep.txt" 140 got = pkg.Files[2].FileName 141 if want != got { 142 t.Errorf("expected %v, got %v", want, got) 143 } 144 145 want = "./subdir/keep/dontscan.txt" 146 got = pkg.Files[3].FileName 147 if want != got { 148 t.Errorf("expected %v, got %v", want, got) 149 } 150 151 want = "./subdir/keep/keep.txt" 152 got = pkg.Files[4].FileName 153 if want != got { 154 t.Errorf("expected %v, got %v", want, got) 155 } 156} 157