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