aboutsummaryrefslogtreecommitdiff
path: root/builder
diff options
context:
space:
mode:
authorSteve Winslow <steve@swinslow.net>2022-03-26 15:59:53 -0400
committerGitHub <noreply@github.com>2022-03-26 15:59:53 -0400
commitbea3d05bc9b46c93805a51a4c6b79b9ad7b78800 (patch)
treeb813843a450a45d0a6b56568a8d69a1bde9e7628 /builder
parent4250e11a6f1fac2967008d51f5170630f1f75faa (diff)
parentf7ea935382e82acded9629df367cf9f4c92db7ff (diff)
downloadspdx-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.go58
-rw-r--r--builder/builder2v1/build_package.go24
-rw-r--r--builder/builder2v1/build_package_test.go14
-rw-r--r--builder/builder2v2/build_package.go23
-rw-r--r--builder/builder2v2/build_package_test.go14
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)