diff options
author | Steve Winslow <steve@swinslow.net> | 2022-03-26 15:59:53 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-26 15:59:53 -0400 |
commit | bea3d05bc9b46c93805a51a4c6b79b9ad7b78800 (patch) | |
tree | b813843a450a45d0a6b56568a8d69a1bde9e7628 /builder | |
parent | 4250e11a6f1fac2967008d51f5170630f1f75faa (diff) | |
parent | f7ea935382e82acded9629df367cf9f4c92db7ff (diff) | |
download | spdx-tools-bea3d05bc9b46c93805a51a4c6b79b9ad7b78800.tar.gz |
Merge pull request #114 from CatalinStratu/main
builder: File paths are not relative, bug fixes
Diffstat (limited to 'builder')
-rw-r--r-- | builder/build_test.go | 58 | ||||
-rw-r--r-- | builder/builder2v1/build_package.go | 24 | ||||
-rw-r--r-- | builder/builder2v1/build_package_test.go | 14 | ||||
-rw-r--r-- | builder/builder2v2/build_package.go | 23 | ||||
-rw-r--r-- | builder/builder2v2/build_package_test.go | 14 |
5 files changed, 85 insertions, 48 deletions
diff --git a/builder/build_test.go b/builder/build_test.go index 8c18c44..aa88a00 100644 --- a/builder/build_test.go +++ b/builder/build_test.go @@ -123,8 +123,8 @@ func TestBuild2_1CreatesDocument(t *testing.T) { if fileEmpty == nil { t.Fatalf("expected non-nil file, got nil") } - if fileEmpty.FileName != "/emptyfile.testdata.txt" { - t.Errorf("expected %v, got %v", "/emptyfile.testdata.txt", fileEmpty.FileName) + if fileEmpty.FileName != "./emptyfile.testdata.txt" { + t.Errorf("expected %v, got %v", "./emptyfile.testdata.txt", fileEmpty.FileName) } if fileEmpty.FileSPDXIdentifier != spdx.ElementID("File0") { t.Errorf("expected %v, got %v", "File0", fileEmpty.FileSPDXIdentifier) @@ -153,8 +153,8 @@ func TestBuild2_1CreatesDocument(t *testing.T) { if file1 == nil { t.Fatalf("expected non-nil file, got nil") } - if file1.FileName != "/file1.testdata.txt" { - t.Errorf("expected %v, got %v", "/file1.testdata.txt", file1.FileName) + if file1.FileName != "./file1.testdata.txt" { + t.Errorf("expected %v, got %v", "./file1.testdata.txt", file1.FileName) } if file1.FileSPDXIdentifier != spdx.ElementID("File1") { t.Errorf("expected %v, got %v", "File1", file1.FileSPDXIdentifier) @@ -183,8 +183,8 @@ func TestBuild2_1CreatesDocument(t *testing.T) { if file3 == nil { t.Fatalf("expected non-nil file, got nil") } - if file3.FileName != "/file3.testdata.txt" { - t.Errorf("expected %v, got %v", "/file3.testdata.txt", file3.FileName) + if file3.FileName != "./file3.testdata.txt" { + t.Errorf("expected %v, got %v", "./file3.testdata.txt", file3.FileName) } if file3.FileSPDXIdentifier != spdx.ElementID("File2") { t.Errorf("expected %v, got %v", "File2", file3.FileSPDXIdentifier) @@ -213,8 +213,8 @@ func TestBuild2_1CreatesDocument(t *testing.T) { if file4 == nil { t.Fatalf("expected non-nil file, got nil") } - if file4.FileName != "/folder1/file4.testdata.txt" { - t.Errorf("expected %v, got %v", "folder1/file4.testdata.txt", file4.FileName) + if file4.FileName != "./folder1/file4.testdata.txt" { + t.Errorf("expected %v, got %v", "./folder1/file4.testdata.txt", file4.FileName) } if file4.FileSPDXIdentifier != spdx.ElementID("File3") { t.Errorf("expected %v, got %v", "File3", file4.FileSPDXIdentifier) @@ -243,8 +243,8 @@ func TestBuild2_1CreatesDocument(t *testing.T) { if lastfile == nil { t.Fatalf("expected non-nil file, got nil") } - if lastfile.FileName != "/lastfile.testdata.txt" { - t.Errorf("expected %v, got %v", "/lastfile.testdata.txt", lastfile.FileName) + if lastfile.FileName != "./lastfile.testdata.txt" { + t.Errorf("expected %v, got %v", "./lastfile.testdata.txt", lastfile.FileName) } if lastfile.FileSPDXIdentifier != spdx.ElementID("File4") { t.Errorf("expected %v, got %v", "File4", lastfile.FileSPDXIdentifier) @@ -331,31 +331,31 @@ func TestBuild2_1CanIgnoreFiles(t *testing.T) { t.Fatalf("expected len %d, got %d", 5, len(pkg.Files)) } - want := "/dontscan.txt" + want := "./dontscan.txt" got := pkg.Files[spdx.ElementID("File0")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/keep/keep.txt" + want = "./keep/keep.txt" got = pkg.Files[spdx.ElementID("File1")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/keep.txt" + want = "./keep.txt" got = pkg.Files[spdx.ElementID("File2")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/subdir/keep/dontscan.txt" + want = "./subdir/keep/dontscan.txt" got = pkg.Files[spdx.ElementID("File3")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/subdir/keep/keep.txt" + want = "./subdir/keep/keep.txt" got = pkg.Files[spdx.ElementID("File4")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) @@ -476,8 +476,8 @@ func TestBuild2_2CreatesDocument(t *testing.T) { if fileEmpty == nil { t.Fatalf("expected non-nil file, got nil") } - if fileEmpty.FileName != "/emptyfile.testdata.txt" { - t.Errorf("expected %v, got %v", "/emptyfile.testdata.txt", fileEmpty.FileName) + if fileEmpty.FileName != "./emptyfile.testdata.txt" { + t.Errorf("expected %v, got %v", "./emptyfile.testdata.txt", fileEmpty.FileName) } if fileEmpty.FileSPDXIdentifier != spdx.ElementID("File0") { t.Errorf("expected %v, got %v", "File0", fileEmpty.FileSPDXIdentifier) @@ -513,8 +513,8 @@ func TestBuild2_2CreatesDocument(t *testing.T) { if file1 == nil { t.Fatalf("expected non-nil file, got nil") } - if file1.FileName != "/file1.testdata.txt" { - t.Errorf("expected %v, got %v", "/file1.testdata.txt", file1.FileName) + if file1.FileName != "./file1.testdata.txt" { + t.Errorf("expected %v, got %v", "./file1.testdata.txt", file1.FileName) } if file1.FileSPDXIdentifier != spdx.ElementID("File1") { t.Errorf("expected %v, got %v", "File1", file1.FileSPDXIdentifier) @@ -550,8 +550,8 @@ func TestBuild2_2CreatesDocument(t *testing.T) { if file3 == nil { t.Fatalf("expected non-nil file, got nil") } - if file3.FileName != "/file3.testdata.txt" { - t.Errorf("expected %v, got %v", "/file3.testdata.txt", file3.FileName) + if file3.FileName != "./file3.testdata.txt" { + t.Errorf("expected %v, got %v", "./file3.testdata.txt", file3.FileName) } if file3.FileSPDXIdentifier != spdx.ElementID("File2") { t.Errorf("expected %v, got %v", "File2", file3.FileSPDXIdentifier) @@ -587,8 +587,8 @@ func TestBuild2_2CreatesDocument(t *testing.T) { if file4 == nil { t.Fatalf("expected non-nil file, got nil") } - if file4.FileName != "/folder1/file4.testdata.txt" { - t.Errorf("expected %v, got %v", "folder1/file4.testdata.txt", file4.FileName) + if file4.FileName != "./folder1/file4.testdata.txt" { + t.Errorf("expected %v, got %v", "./folder1/file4.testdata.txt", file4.FileName) } if file4.FileSPDXIdentifier != spdx.ElementID("File3") { t.Errorf("expected %v, got %v", "File3", file4.FileSPDXIdentifier) @@ -624,7 +624,7 @@ func TestBuild2_2CreatesDocument(t *testing.T) { if lastfile == nil { t.Fatalf("expected non-nil file, got nil") } - if lastfile.FileName != "/lastfile.testdata.txt" { + if lastfile.FileName != "./lastfile.testdata.txt" { t.Errorf("expected %v, got %v", "/lastfile.testdata.txt", lastfile.FileName) } if lastfile.FileSPDXIdentifier != spdx.ElementID("File4") { @@ -719,31 +719,31 @@ func TestBuild2_2CanIgnoreFiles(t *testing.T) { t.Fatalf("expected len %d, got %d", 5, len(pkg.Files)) } - want := "/dontscan.txt" + want := "./dontscan.txt" got := pkg.Files[spdx.ElementID("File0")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/keep/keep.txt" + want = "./keep/keep.txt" got = pkg.Files[spdx.ElementID("File1")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/keep.txt" + want = "./keep.txt" got = pkg.Files[spdx.ElementID("File2")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/subdir/keep/dontscan.txt" + want = "./subdir/keep/dontscan.txt" got = pkg.Files[spdx.ElementID("File3")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/subdir/keep/keep.txt" + want = "./subdir/keep/keep.txt" got = pkg.Files[spdx.ElementID("File4")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) diff --git a/builder/builder2v1/build_package.go b/builder/builder2v1/build_package.go index 1dd66b6..e59e676 100644 --- a/builder/builder2v1/build_package.go +++ b/builder/builder2v1/build_package.go @@ -4,9 +4,11 @@ package builder2v1 import ( "fmt" - "github.com/spdx/tools-golang/spdx" "github.com/spdx/tools-golang/utils" + "path/filepath" + "regexp" + "runtime" ) // BuildPackageSection2_1 creates an SPDX Package (version 2.1), returning @@ -21,18 +23,34 @@ func BuildPackageSection2_1(packageName string, dirRoot string, pathsIgnore []st if err != nil { return nil, err } + osType := runtime.GOOS + + re, ok := regexp.Compile("/+") + if ok != nil { + return nil, err + } + + dirRootLen := 0 + if osType == "windows" { + dirRootLen = len(dirRoot) + } files := map[spdx.ElementID]*spdx.File2_1{} fileNumber := 0 for _, fp := range filepaths { - newFile, err := BuildFileSection2_1(fp, dirRoot, fileNumber) + newFilePatch := "" + if osType == "windows" { + newFilePatch = filepath.FromSlash("." + fp[dirRootLen:]) + } else { + newFilePatch = filepath.FromSlash("./" + fp) + } + newFile, err := BuildFileSection2_1(re.ReplaceAllLiteralString(newFilePatch, string(filepath.Separator)), dirRoot, fileNumber) if err != nil { return nil, err } files[newFile.FileSPDXIdentifier] = newFile fileNumber++ } - // get the verification code code, err := utils.GetVerificationCode2_1(files, "") if err != nil { diff --git a/builder/builder2v1/build_package_test.go b/builder/builder2v1/build_package_test.go index 8902932..3ecd1dc 100644 --- a/builder/builder2v1/build_package_test.go +++ b/builder/builder2v1/build_package_test.go @@ -65,8 +65,8 @@ func TestBuilder2_1CanBuildPackageSection(t *testing.T) { if fileEmpty == nil { t.Fatalf("expected non-nil file, got nil") } - if fileEmpty.FileName != "/emptyfile.testdata.txt" { - t.Errorf("expected %v, got %v", "/emptyfile.testdata.txt", fileEmpty.FileName) + if fileEmpty.FileName != "./emptyfile.testdata.txt" { + t.Errorf("expected %v, got %v", "./emptyfile.testdata.txt", fileEmpty.FileName) } if fileEmpty.FileSPDXIdentifier != spdx.ElementID("File0") { t.Errorf("expected %v, got %v", "File0", fileEmpty.FileSPDXIdentifier) @@ -113,31 +113,31 @@ func TestBuilder2_1CanIgnoreFiles(t *testing.T) { t.Fatalf("expected %d, got %d", 5, len(pkg.Files)) } - want := "/dontscan.txt" + want := "./dontscan.txt" got := pkg.Files[spdx.ElementID("File0")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/keep/keep.txt" + want = "./keep/keep.txt" got = pkg.Files[spdx.ElementID("File1")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/keep.txt" + want = "./keep.txt" got = pkg.Files[spdx.ElementID("File2")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/subdir/keep/dontscan.txt" + want = "./subdir/keep/dontscan.txt" got = pkg.Files[spdx.ElementID("File3")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/subdir/keep/keep.txt" + want = "./subdir/keep/keep.txt" got = pkg.Files[spdx.ElementID("File4")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) diff --git a/builder/builder2v2/build_package.go b/builder/builder2v2/build_package.go index 35c0a86..640f9c7 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -4,9 +4,11 @@ package builder2v2 import ( "fmt" - "github.com/spdx/tools-golang/spdx" "github.com/spdx/tools-golang/utils" + "path/filepath" + "regexp" + "runtime" ) // BuildPackageSection2_2 creates an SPDX Package (version 2.2), returning @@ -18,14 +20,31 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st // build the file section first, so we'll have it available // for calculating the package verification code filepaths, err := utils.GetAllFilePaths(dirRoot, pathsIgnore) + osType := runtime.GOOS + if err != nil { return nil, err } + re, ok := regexp.Compile("/+") + if ok != nil { + return nil, err + } + dirRootLen := 0 + if osType == "windows" { + dirRootLen = len(dirRoot) + } + files := map[spdx.ElementID]*spdx.File2_2{} fileNumber := 0 for _, fp := range filepaths { - newFile, err := BuildFileSection2_2(fp, dirRoot, fileNumber) + newFilePatch := "" + if osType == "windows" { + newFilePatch = filepath.FromSlash("." + fp[dirRootLen:]) + } else { + newFilePatch = filepath.FromSlash("./" + fp) + } + newFile, err := BuildFileSection2_2(re.ReplaceAllLiteralString(newFilePatch, string(filepath.Separator)), dirRoot, fileNumber) if err != nil { return nil, err } diff --git a/builder/builder2v2/build_package_test.go b/builder/builder2v2/build_package_test.go index 143e8db..6f55abc 100644 --- a/builder/builder2v2/build_package_test.go +++ b/builder/builder2v2/build_package_test.go @@ -65,8 +65,8 @@ func TestBuilder2_2CanBuildPackageSection(t *testing.T) { if fileEmpty == nil { t.Fatalf("expected non-nil file, got nil") } - if fileEmpty.FileName != "/emptyfile.testdata.txt" { - t.Errorf("expected %v, got %v", "/emptyfile.testdata.txt", fileEmpty.FileName) + if fileEmpty.FileName != "./emptyfile.testdata.txt" { + t.Errorf("expected %v, got %v", "./emptyfile.testdata.txt", fileEmpty.FileName) } if fileEmpty.FileSPDXIdentifier != spdx.ElementID("File0") { t.Errorf("expected %v, got %v", "File0", fileEmpty.FileSPDXIdentifier) @@ -120,31 +120,31 @@ func TestBuilder2_2CanIgnoreFiles(t *testing.T) { t.Fatalf("expected %d, got %d", 5, len(pkg.Files)) } - want := "/dontscan.txt" + want := "./dontscan.txt" got := pkg.Files[spdx.ElementID("File0")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/keep/keep.txt" + want = "./keep/keep.txt" got = pkg.Files[spdx.ElementID("File1")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/keep.txt" + want = "./keep.txt" got = pkg.Files[spdx.ElementID("File2")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/subdir/keep/dontscan.txt" + want = "./subdir/keep/dontscan.txt" got = pkg.Files[spdx.ElementID("File3")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) } - want = "/subdir/keep/keep.txt" + want = "./subdir/keep/keep.txt" got = pkg.Files[spdx.ElementID("File4")].FileName if want != got { t.Errorf("expected %v, got %v", want, got) |