From bca2ddb00788bfacc9fa5eb95e544b11998216b6 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 15:47:10 +0200 Subject: [PATCH 01/14] builder: File paths are not relative, bug fixes Signed-off-by: Catalin Stratu --- examples/3-build/example_build.go | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/3-build/example_build.go b/examples/3-build/example_build.go index cc63bb73..8fc6b6bb 100644 --- a/examples/3-build/example_build.go +++ b/examples/3-build/example_build.go @@ -5,6 +5,7 @@ // This example demonstrates building an 'empty' SPDX document in memory that // corresponds to a given directory's contents, including all files with their // hashes and the package's verification code, and saving the document to disk. +// Run project: go run example_build.go project2 ../../testdata/project2 test.spdx package main From 64add5582c0ad6300af57ff7ef90dc7edce28761 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 15:50:43 +0200 Subject: [PATCH 02/14] builder: File paths are not relative, bug fix Signed-off-by: Catalin Stratu --- builder/builder2v2/build_package.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/builder/builder2v2/build_package.go b/builder/builder2v2/build_package.go index 35c0a868..ffb7ab3f 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -4,6 +4,7 @@ package builder2v2 import ( "fmt" + "path/filepath" "github.com/spdx/tools-golang/spdx" "github.com/spdx/tools-golang/utils" @@ -25,7 +26,7 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st files := map[spdx.ElementID]*spdx.File2_2{} fileNumber := 0 for _, fp := range filepaths { - newFile, err := BuildFileSection2_2(fp, dirRoot, fileNumber) + newFile, err := BuildFileSection2_2(filepath.FromSlash("./"+fp), dirRoot, fileNumber) if err != nil { return nil, err } From 8feaee9eb096b53e99b8b38e0d2a1f6fdf75cbb8 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 15:52:23 +0200 Subject: [PATCH 03/14] builder: File paths are not relative, bug fix 2.1 version Signed-off-by: Catalin Stratu --- builder/builder2v1/build_package.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/builder/builder2v1/build_package.go b/builder/builder2v1/build_package.go index 1dd66b67..fa12d0e4 100644 --- a/builder/builder2v1/build_package.go +++ b/builder/builder2v1/build_package.go @@ -4,6 +4,7 @@ package builder2v1 import ( "fmt" + "path/filepath" "github.com/spdx/tools-golang/spdx" "github.com/spdx/tools-golang/utils" @@ -25,7 +26,7 @@ func BuildPackageSection2_1(packageName string, dirRoot string, pathsIgnore []st files := map[spdx.ElementID]*spdx.File2_1{} fileNumber := 0 for _, fp := range filepaths { - newFile, err := BuildFileSection2_1(fp, dirRoot, fileNumber) + newFile, err := BuildFileSection2_1(filepath.FromSlash("./"+fp), dirRoot, fileNumber) if err != nil { return nil, err } From afc5d6449b2f92e44b423df2f3f1129c43473c53 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 16:33:33 +0200 Subject: [PATCH 04/14] bug fixes Signed-off-by: Catalin Stratu --- builder/builder2v1/build_package.go | 2 +- builder/builder2v2/build_package.go | 2 +- builder/builder2v2/build_package_test.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/builder/builder2v1/build_package.go b/builder/builder2v1/build_package.go index fa12d0e4..ffc5d06e 100644 --- a/builder/builder2v1/build_package.go +++ b/builder/builder2v1/build_package.go @@ -26,7 +26,7 @@ func BuildPackageSection2_1(packageName string, dirRoot string, pathsIgnore []st files := map[spdx.ElementID]*spdx.File2_1{} fileNumber := 0 for _, fp := range filepaths { - newFile, err := BuildFileSection2_1(filepath.FromSlash("./"+fp), dirRoot, fileNumber) + newFile, err := BuildFileSection2_1(filepath.FromSlash(filepath.ToSlash("./"+fp)), dirRoot, fileNumber) if err != nil { return nil, err } diff --git a/builder/builder2v2/build_package.go b/builder/builder2v2/build_package.go index ffb7ab3f..a5b2206c 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -26,7 +26,7 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st files := map[spdx.ElementID]*spdx.File2_2{} fileNumber := 0 for _, fp := range filepaths { - newFile, err := BuildFileSection2_2(filepath.FromSlash("./"+fp), dirRoot, fileNumber) + newFile, err := BuildFileSection2_2(filepath.FromSlash(filepath.ToSlash("./"+fp)), 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 143e8db7..f58d6b9d 100644 --- a/builder/builder2v2/build_package_test.go +++ b/builder/builder2v2/build_package_test.go @@ -65,7 +65,7 @@ func TestBuilder2_2CanBuildPackageSection(t *testing.T) { if fileEmpty == nil { t.Fatalf("expected non-nil file, got nil") } - if fileEmpty.FileName != "/emptyfile.testdata.txt" { + if fileEmpty.FileName != "./emptyfile.testdata.txt" { t.Errorf("expected %v, got %v", "/emptyfile.testdata.txt", fileEmpty.FileName) } if fileEmpty.FileSPDXIdentifier != spdx.ElementID("File0") { From d87b06509712d2369d1cad8b814370b0519c7379 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 16:42:13 +0200 Subject: [PATCH 05/14] file patch fixes Signed-off-by: Catalin Stratu --- builder/builder2v1/build_package.go | 5 +++-- builder/builder2v2/build_package.go | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/builder/builder2v1/build_package.go b/builder/builder2v1/build_package.go index ffc5d06e..b1503e1e 100644 --- a/builder/builder2v1/build_package.go +++ b/builder/builder2v1/build_package.go @@ -5,6 +5,7 @@ package builder2v1 import ( "fmt" "path/filepath" + "strings" "github.com/spdx/tools-golang/spdx" "github.com/spdx/tools-golang/utils" @@ -26,14 +27,14 @@ func BuildPackageSection2_1(packageName string, dirRoot string, pathsIgnore []st files := map[spdx.ElementID]*spdx.File2_1{} fileNumber := 0 for _, fp := range filepaths { - newFile, err := BuildFileSection2_1(filepath.FromSlash(filepath.ToSlash("./"+fp)), dirRoot, fileNumber) + newFilePatch := filepath.FromSlash("./" + fp) + newFile, err := BuildFileSection2_1(strings.Replace(newFilePatch, string(filepath.Separator), "/", -1), 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/builder2v2/build_package.go b/builder/builder2v2/build_package.go index a5b2206c..7f871a45 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -5,6 +5,7 @@ package builder2v2 import ( "fmt" "path/filepath" + "strings" "github.com/spdx/tools-golang/spdx" "github.com/spdx/tools-golang/utils" @@ -26,7 +27,8 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st files := map[spdx.ElementID]*spdx.File2_2{} fileNumber := 0 for _, fp := range filepaths { - newFile, err := BuildFileSection2_2(filepath.FromSlash(filepath.ToSlash("./"+fp)), dirRoot, fileNumber) + newFilePatch := filepath.FromSlash("./" + fp) + newFile, err := BuildFileSection2_2(strings.Replace(newFilePatch, string(filepath.Separator), "/", -1), dirRoot, fileNumber) if err != nil { return nil, err } From 673cb49f3e5472b269747dc14ef132caf9032050 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 17:07:38 +0200 Subject: [PATCH 06/14] file patch fixes Signed-off-by: Catalin Stratu --- builder/build_test.go | 34 ++++++++++++------------ builder/builder2v1/build_package.go | 11 +++++--- builder/builder2v2/build_file_test.go | 2 +- builder/builder2v2/build_package.go | 12 ++++++--- builder/builder2v2/build_package_test.go | 12 ++++----- 5 files changed, 39 insertions(+), 32 deletions(-) diff --git a/builder/build_test.go b/builder/build_test.go index 8c18c44c..1ea7fd58 100644 --- a/builder/build_test.go +++ b/builder/build_test.go @@ -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,7 +550,7 @@ func TestBuild2_2CreatesDocument(t *testing.T) { if file3 == nil { t.Fatalf("expected non-nil file, got nil") } - if file3.FileName != "/file3.testdata.txt" { + if file3.FileName != "./file3.testdata.txt" { t.Errorf("expected %v, got %v", "/file3.testdata.txt", file3.FileName) } if file3.FileSPDXIdentifier != spdx.ElementID("File2") { @@ -587,7 +587,7 @@ func TestBuild2_2CreatesDocument(t *testing.T) { if file4 == nil { t.Fatalf("expected non-nil file, got nil") } - if file4.FileName != "/folder1/file4.testdata.txt" { + 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") { @@ -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 b1503e1e..c133055a 100644 --- a/builder/builder2v1/build_package.go +++ b/builder/builder2v1/build_package.go @@ -4,11 +4,10 @@ package builder2v1 import ( "fmt" - "path/filepath" - "strings" - "github.com/spdx/tools-golang/spdx" "github.com/spdx/tools-golang/utils" + "path/filepath" + "regexp" ) // BuildPackageSection2_1 creates an SPDX Package (version 2.1), returning @@ -24,11 +23,15 @@ func BuildPackageSection2_1(packageName string, dirRoot string, pathsIgnore []st return nil, err } + re, ok := regexp.Compile("/+") + if ok != nil { + return nil, err + } files := map[spdx.ElementID]*spdx.File2_1{} fileNumber := 0 for _, fp := range filepaths { newFilePatch := filepath.FromSlash("./" + fp) - newFile, err := BuildFileSection2_1(strings.Replace(newFilePatch, string(filepath.Separator), "/", -1), dirRoot, fileNumber) + newFile, err := BuildFileSection2_1(re.ReplaceAllLiteralString(newFilePatch, string(filepath.Separator)), dirRoot, fileNumber) if err != nil { return nil, err } diff --git a/builder/builder2v2/build_file_test.go b/builder/builder2v2/build_file_test.go index 60f285c4..6fc26438 100644 --- a/builder/builder2v2/build_file_test.go +++ b/builder/builder2v2/build_file_test.go @@ -22,7 +22,7 @@ func TestBuilder2_2CanBuildFileSection(t *testing.T) { if file1 == nil { t.Fatalf("expected non-nil file, got nil") } - if file1.FileName != "/file1.testdata.txt" { + if file1.FileName != "./file1.testdata.txt" { t.Errorf("expected %v, got %v", "/file1.testdata.txt", file1.FileName) } if file1.FileSPDXIdentifier != spdx.ElementID("File17") { diff --git a/builder/builder2v2/build_package.go b/builder/builder2v2/build_package.go index 7f871a45..53b2613b 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -4,11 +4,10 @@ package builder2v2 import ( "fmt" - "path/filepath" - "strings" - "github.com/spdx/tools-golang/spdx" "github.com/spdx/tools-golang/utils" + "path/filepath" + "regexp" ) // BuildPackageSection2_2 creates an SPDX Package (version 2.2), returning @@ -24,11 +23,16 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st return nil, err } + re, ok := regexp.Compile("/+") + if ok != nil { + return nil, err + } + files := map[spdx.ElementID]*spdx.File2_2{} fileNumber := 0 for _, fp := range filepaths { newFilePatch := filepath.FromSlash("./" + fp) - newFile, err := BuildFileSection2_2(strings.Replace(newFilePatch, string(filepath.Separator), "/", -1), dirRoot, fileNumber) + 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 f58d6b9d..6f55abc2 100644 --- a/builder/builder2v2/build_package_test.go +++ b/builder/builder2v2/build_package_test.go @@ -66,7 +66,7 @@ func TestBuilder2_2CanBuildPackageSection(t *testing.T) { 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) + 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) From afab6dd30beb70ad7dbc8d5f602e5f52d12abc85 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 15:47:57 +0200 Subject: [PATCH 07/14] test fixes Signed-off-by: Catalin Stratu --- builder/build_test.go | 24 +++++++++--------- builder/builder2v1/build_file_test.go | 4 +-- builder/builder2v1/build_package_test.go | 14 +++++------ idsearcher/idsearcher_test.go | 32 ++++++++++++------------ 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/builder/build_test.go b/builder/build_test.go index 1ea7fd58..aa88a00e 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) @@ -551,7 +551,7 @@ func TestBuild2_2CreatesDocument(t *testing.T) { 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) + 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) @@ -588,7 +588,7 @@ func TestBuild2_2CreatesDocument(t *testing.T) { 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) + 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) diff --git a/builder/builder2v1/build_file_test.go b/builder/builder2v1/build_file_test.go index 1bdafd39..e0846c09 100644 --- a/builder/builder2v1/build_file_test.go +++ b/builder/builder2v1/build_file_test.go @@ -22,8 +22,8 @@ func TestBuilder2_1CanBuildFileSection(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("File17") { t.Errorf("expected %v, got %v", "File17", file1.FileSPDXIdentifier) diff --git a/builder/builder2v1/build_package_test.go b/builder/builder2v1/build_package_test.go index 8902932a..3ecd1dcb 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/idsearcher/idsearcher_test.go b/idsearcher/idsearcher_test.go index f348dc73..a54b26c6 100644 --- a/idsearcher/idsearcher_test.go +++ b/idsearcher/idsearcher_test.go @@ -214,8 +214,8 @@ func Test2_1SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f := pkg.Files[spdx.ElementID("File0")] - if f.FileName != "/dontscan.txt" { - t.Errorf("expected %v, got %v", "/dontscan.txt", f.FileName) + if f.FileName != "./dontscan.txt" { + t.Errorf("expected %v, got %v", "./dontscan.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) @@ -228,8 +228,8 @@ func Test2_1SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File1")] - if f.FileName != "/keep/keep.txt" { - t.Errorf("expected %v, got %v", "/keep/keep.txt", f.FileName) + if f.FileName != "../keep/keep.txt" { + t.Errorf("expected %v, got %v", "./keep/keep.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) @@ -242,8 +242,8 @@ func Test2_1SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File2")] - if f.FileName != "/keep.txt" { - t.Errorf("expected %v, got %v", "/keep.txt", f.FileName) + if f.FileName != "./keep.txt" { + t.Errorf("expected %v, got %v", "./keep.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) @@ -256,8 +256,8 @@ func Test2_1SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File3")] - if f.FileName != "/subdir/keep/dontscan.txt" { - t.Errorf("expected %v, got %v", "/subdir/keep/dontscan.txt", f.FileName) + if f.FileName != "./subdir/keep/dontscan.txt" { + t.Errorf("expected %v, got %v", "./subdir/keep/dontscan.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) @@ -270,8 +270,8 @@ func Test2_1SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File4")] - if f.FileName != "/subdir/keep/keep.txt" { - t.Errorf("expected %v, got %v", "/subdir/keep/keep.txt", f.FileName) + if f.FileName != "./subdir/keep/keep.txt" { + t.Errorf("expected %v, got %v", "./subdir/keep/keep.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) @@ -503,8 +503,8 @@ func Test2_2SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f := pkg.Files[spdx.ElementID("File0")] - if f.FileName != "/dontscan.txt" { - t.Errorf("expected %v, got %v", "/dontscan.txt", f.FileName) + if f.FileName != "./dontscan.txt" { + t.Errorf("expected %v, got %v", "./dontscan.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) @@ -545,8 +545,8 @@ func Test2_2SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File3")] - if f.FileName != "/subdir/keep/dontscan.txt" { - t.Errorf("expected %v, got %v", "/subdir/keep/dontscan.txt", f.FileName) + if f.FileName != "./subdir/keep/dontscan.txt" { + t.Errorf("expected %v, got %v", "./subdir/keep/dontscan.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) @@ -559,8 +559,8 @@ func Test2_2SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File4")] - if f.FileName != "/subdir/keep/keep.txt" { - t.Errorf("expected %v, got %v", "/subdir/keep/keep.txt", f.FileName) + if f.FileName != "./subdir/keep/keep.txt" { + t.Errorf("expected %v, got %v", "./subdir/keep/keep.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) From d39772c0ce6bdc2fcb0c0e86977f649b8997d887 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 15:53:41 +0200 Subject: [PATCH 08/14] test fixes Signed-off-by: Catalin Stratu --- builder/builder2v2/build_file_test.go | 2 +- idsearcher/idsearcher_test.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builder/builder2v2/build_file_test.go b/builder/builder2v2/build_file_test.go index 6fc26438..3394076d 100644 --- a/builder/builder2v2/build_file_test.go +++ b/builder/builder2v2/build_file_test.go @@ -23,7 +23,7 @@ func TestBuilder2_2CanBuildFileSection(t *testing.T) { 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) + t.Errorf("expected %v, got %v", "./file1.testdata.txt", file1.FileName) } if file1.FileSPDXIdentifier != spdx.ElementID("File17") { t.Errorf("expected %v, got %v", "File17", file1.FileSPDXIdentifier) diff --git a/idsearcher/idsearcher_test.go b/idsearcher/idsearcher_test.go index a54b26c6..bc6aa7e8 100644 --- a/idsearcher/idsearcher_test.go +++ b/idsearcher/idsearcher_test.go @@ -517,8 +517,8 @@ func Test2_2SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File1")] - if f.FileName != "/keep/keep.txt" { - t.Errorf("expected %v, got %v", "/keep/keep.txt", f.FileName) + if f.FileName != "./keep/keep.txt" { + t.Errorf("expected %v, got %v", "./keep/keep.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) @@ -531,8 +531,8 @@ func Test2_2SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File2")] - if f.FileName != "/keep.txt" { - t.Errorf("expected %v, got %v", "/keep.txt", f.FileName) + if f.FileName != "./keep.txt" { + t.Errorf("expected %v, got %v", "./keep.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { t.Errorf("expected len to be %d, got %d", 1, len(f.LicenseInfoInFile)) From 13f9275d24bc9ff81dc14851791cd049f2cbb2d9 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 16:05:31 +0200 Subject: [PATCH 09/14] test fixes Signed-off-by: Catalin Stratu --- builder/builder2v1/build_file_test.go | 4 ++-- builder/builder2v2/build_file_test.go | 4 ++-- idsearcher/idsearcher_test.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/builder/builder2v1/build_file_test.go b/builder/builder2v1/build_file_test.go index e0846c09..1bdafd39 100644 --- a/builder/builder2v1/build_file_test.go +++ b/builder/builder2v1/build_file_test.go @@ -22,8 +22,8 @@ func TestBuilder2_1CanBuildFileSection(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("File17") { t.Errorf("expected %v, got %v", "File17", file1.FileSPDXIdentifier) diff --git a/builder/builder2v2/build_file_test.go b/builder/builder2v2/build_file_test.go index 3394076d..60f285c4 100644 --- a/builder/builder2v2/build_file_test.go +++ b/builder/builder2v2/build_file_test.go @@ -22,8 +22,8 @@ func TestBuilder2_2CanBuildFileSection(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("File17") { t.Errorf("expected %v, got %v", "File17", file1.FileSPDXIdentifier) diff --git a/idsearcher/idsearcher_test.go b/idsearcher/idsearcher_test.go index bc6aa7e8..ab0adc93 100644 --- a/idsearcher/idsearcher_test.go +++ b/idsearcher/idsearcher_test.go @@ -228,7 +228,7 @@ func Test2_1SearcherCanFillInIDsAndIgnorePaths(t *testing.T) { } f = pkg.Files[spdx.ElementID("File1")] - if f.FileName != "../keep/keep.txt" { + if f.FileName != "./keep/keep.txt" { t.Errorf("expected %v, got %v", "./keep/keep.txt", f.FileName) } if len(f.LicenseInfoInFile) != 1 { From 1e3c66b7d68c718739b43efc57cf8eecb5ec9979 Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 20:37:30 +0200 Subject: [PATCH 10/14] Path fixes Signed-off-by: Catalin Stratu --- builder/builder2v1/build_package.go | 4 +++- builder/builder2v2/build_package.go | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/builder/builder2v1/build_package.go b/builder/builder2v1/build_package.go index c133055a..0092f48b 100644 --- a/builder/builder2v1/build_package.go +++ b/builder/builder2v1/build_package.go @@ -29,8 +29,10 @@ func BuildPackageSection2_1(packageName string, dirRoot string, pathsIgnore []st } files := map[spdx.ElementID]*spdx.File2_1{} fileNumber := 0 + dirRootLen := len(dirRoot) for _, fp := range filepaths { - newFilePatch := filepath.FromSlash("./" + fp) + newFileName := fp[dirRootLen+1:] + newFilePatch := filepath.FromSlash("./" + newFileName) newFile, err := BuildFileSection2_1(re.ReplaceAllLiteralString(newFilePatch, string(filepath.Separator)), dirRoot, fileNumber) if err != nil { return nil, err diff --git a/builder/builder2v2/build_package.go b/builder/builder2v2/build_package.go index 53b2613b..ef4e9a6f 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -30,8 +30,10 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st files := map[spdx.ElementID]*spdx.File2_2{} fileNumber := 0 + dirRootLen := len(dirRoot) for _, fp := range filepaths { - newFilePatch := filepath.FromSlash("./" + fp) + newFileName := fp[dirRootLen+1:] + newFilePatch := filepath.FromSlash("./" + newFileName) newFile, err := BuildFileSection2_2(re.ReplaceAllLiteralString(newFilePatch, string(filepath.Separator)), dirRoot, fileNumber) if err != nil { return nil, err From 1eaa6c826e6ee2b32de404e1cd82599479dcc5aa Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Mon, 14 Mar 2022 20:45:37 +0200 Subject: [PATCH 11/14] Path fixes Signed-off-by: Catalin Stratu --- builder/builder2v2/build_package.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/builder/builder2v2/build_package.go b/builder/builder2v2/build_package.go index ef4e9a6f..dff43bff 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -32,8 +32,8 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st fileNumber := 0 dirRootLen := len(dirRoot) for _, fp := range filepaths { - newFileName := fp[dirRootLen+1:] - newFilePatch := filepath.FromSlash("./" + newFileName) + newFileName := fp[dirRootLen:] + newFilePatch := filepath.FromSlash("." + newFileName) newFile, err := BuildFileSection2_2(re.ReplaceAllLiteralString(newFilePatch, string(filepath.Separator)), dirRoot, fileNumber) if err != nil { return nil, err From 18d903630e4233f49c3053a484e4c2b4a3d5fe67 Mon Sep 17 00:00:00 2001 From: Catalin Date: Tue, 15 Mar 2022 09:47:59 +0200 Subject: [PATCH 12/14] Fixes for Linux OS Signed-off-by: Catalin Stratu --- builder/builder2v1/build_package.go | 7 +-- builder/builder2v2/build_package.go | 5 +- examples/3-build/test.spdx | 72 +++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 examples/3-build/test.spdx diff --git a/builder/builder2v1/build_package.go b/builder/builder2v1/build_package.go index 0092f48b..20935168 100644 --- a/builder/builder2v1/build_package.go +++ b/builder/builder2v1/build_package.go @@ -29,10 +29,11 @@ func BuildPackageSection2_1(packageName string, dirRoot string, pathsIgnore []st } files := map[spdx.ElementID]*spdx.File2_1{} fileNumber := 0 - dirRootLen := len(dirRoot) + //dirRootLen := len(dirRoot) for _, fp := range filepaths { - newFileName := fp[dirRootLen+1:] - newFilePatch := filepath.FromSlash("./" + newFileName) + newFileName := fp + newFilePatch := filepath.FromSlash("." + newFileName) + fmt.Println(newFilePatch) newFile, err := BuildFileSection2_1(re.ReplaceAllLiteralString(newFilePatch, string(filepath.Separator)), dirRoot, fileNumber) if err != nil { return nil, err diff --git a/builder/builder2v2/build_package.go b/builder/builder2v2/build_package.go index dff43bff..dcba0f76 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -19,6 +19,7 @@ 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) + if err != nil { return nil, err } @@ -30,10 +31,8 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st files := map[spdx.ElementID]*spdx.File2_2{} fileNumber := 0 - dirRootLen := len(dirRoot) for _, fp := range filepaths { - newFileName := fp[dirRootLen:] - newFilePatch := filepath.FromSlash("." + newFileName) + 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/examples/3-build/test.spdx b/examples/3-build/test.spdx new file mode 100644 index 00000000..88a95320 --- /dev/null +++ b/examples/3-build/test.spdx @@ -0,0 +1,72 @@ +SPDXVersion: SPDX-2.2 +DataLicense: CC0-1.0 +SPDXID: SPDXRef-DOCUMENT +DocumentName: project2 +DocumentNamespace: https://example.com/whatever/testdata-project2-d1d2f67e003cd73c13c5ed7d0a1ea9dda997d319 +Creator: Person: Jane Doe +Creator: Tool: github.com/spdx/tools-golang/builder +Created: 2022-03-15T07:42:32Z + +##### Package: project2 + +PackageName: project2 +SPDXID: SPDXRef-Package-project2 +PackageDownloadLocation: NOASSERTION +FilesAnalyzed: true +PackageVerificationCode: d1d2f67e003cd73c13c5ed7d0a1ea9dda997d319 +PackageLicenseConcluded: NOASSERTION +PackageLicenseDeclared: NOASSERTION +PackageCopyrightText: NOASSERTION + +FileName: ./folder/has-one-id.py +SPDXID: SPDXRef-File0 +FileChecksum: SHA1: dcecdd26eebaea9c7a8263f190fc568210c8d4fd +FileChecksum: SHA256: d293a2e70f58fc75195fe25be631c298c23305e5dd1b599c00a74f800856ed90 +FileChecksum: MD5: 1b6d188c67ec4a866a5210b104824db7 +LicenseConcluded: NOASSERTION +FileCopyrightText: NOASSERTION + +FileName: ./folder/has-trailing-comment-marker.c +SPDXID: SPDXRef-File1 +FileChecksum: SHA1: a9ef82bbc630212f6aecf99f837b8dd1a67b0744 +FileChecksum: SHA256: 06d10a016e15f43a87dad889897e272f85074494701bf589966f31a572a97c87 +FileChecksum: MD5: 197d743c71b42926cca4751d82acc240 +LicenseConcluded: NOASSERTION +FileCopyrightText: NOASSERTION + +FileName: ./has-duplicate-ids.txt +SPDXID: SPDXRef-File2 +FileChecksum: SHA1: 8a53ead202d74264017291e0f9f54673b0d4dd17 +FileChecksum: SHA256: cc33878a21b713001f0a021d5150dc555ff487807e323e7dfa8b50f5b284eeee +FileChecksum: MD5: 5610a0a2b1f42001acd268145bb55720 +LicenseConcluded: NOASSERTION +FileCopyrightText: NOASSERTION + +FileName: ./has-id.txt +SPDXID: SPDXRef-File3 +FileChecksum: SHA1: 26d6221d682d9ba59116f9753a701f34271c8ce1 +FileChecksum: SHA256: 0a4bdaf990e9b330ff72022dd78110ae98b60e08337cf2105b89856373416805 +FileChecksum: MD5: f60baa793870d9085461ad6bbab50b7f +LicenseConcluded: NOASSERTION +FileCopyrightText: NOASSERTION + +FileName: ./has-multiple-ids.txt +SPDXID: SPDXRef-File4 +FileChecksum: SHA1: e352d23aa7208ec7e2f35669261b77d2b2051f70 +FileChecksum: SHA256: 1b994c5639a10bd00434616976bb31eeeef1dd97a89bab427579c5e6e216f8d5 +FileChecksum: MD5: f9414bce67777f537d2dec6ff52566d8 +LicenseConcluded: NOASSERTION +FileCopyrightText: NOASSERTION + +FileName: ./no-id.txt +SPDXID: SPDXRef-File5 +FileChecksum: SHA1: feb0d01805ad59d520491c8062d60cc9a850614f +FileChecksum: SHA256: 73eb012c38dbf684dcafed273055209a8878926a99518e48abaf02cc5072c1eb +FileChecksum: MD5: bd03a7b7fad55b25d75248c01c9c0b13 +LicenseConcluded: NOASSERTION +FileCopyrightText: NOASSERTION + +##### Relationships + +Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-Package-project2 + From bc89f8d4e27d92ba8943026f6d628d243891c366 Mon Sep 17 00:00:00 2001 From: Catalin Date: Tue, 15 Mar 2022 09:53:31 +0200 Subject: [PATCH 13/14] Fixes signoff Signed-off-by: Catalin Signed-off-by: Catalin Stratu --- examples/3-build/test.spdx | 72 -------------------------------------- 1 file changed, 72 deletions(-) delete mode 100644 examples/3-build/test.spdx diff --git a/examples/3-build/test.spdx b/examples/3-build/test.spdx deleted file mode 100644 index 88a95320..00000000 --- a/examples/3-build/test.spdx +++ /dev/null @@ -1,72 +0,0 @@ -SPDXVersion: SPDX-2.2 -DataLicense: CC0-1.0 -SPDXID: SPDXRef-DOCUMENT -DocumentName: project2 -DocumentNamespace: https://example.com/whatever/testdata-project2-d1d2f67e003cd73c13c5ed7d0a1ea9dda997d319 -Creator: Person: Jane Doe -Creator: Tool: github.com/spdx/tools-golang/builder -Created: 2022-03-15T07:42:32Z - -##### Package: project2 - -PackageName: project2 -SPDXID: SPDXRef-Package-project2 -PackageDownloadLocation: NOASSERTION -FilesAnalyzed: true -PackageVerificationCode: d1d2f67e003cd73c13c5ed7d0a1ea9dda997d319 -PackageLicenseConcluded: NOASSERTION -PackageLicenseDeclared: NOASSERTION -PackageCopyrightText: NOASSERTION - -FileName: ./folder/has-one-id.py -SPDXID: SPDXRef-File0 -FileChecksum: SHA1: dcecdd26eebaea9c7a8263f190fc568210c8d4fd -FileChecksum: SHA256: d293a2e70f58fc75195fe25be631c298c23305e5dd1b599c00a74f800856ed90 -FileChecksum: MD5: 1b6d188c67ec4a866a5210b104824db7 -LicenseConcluded: NOASSERTION -FileCopyrightText: NOASSERTION - -FileName: ./folder/has-trailing-comment-marker.c -SPDXID: SPDXRef-File1 -FileChecksum: SHA1: a9ef82bbc630212f6aecf99f837b8dd1a67b0744 -FileChecksum: SHA256: 06d10a016e15f43a87dad889897e272f85074494701bf589966f31a572a97c87 -FileChecksum: MD5: 197d743c71b42926cca4751d82acc240 -LicenseConcluded: NOASSERTION -FileCopyrightText: NOASSERTION - -FileName: ./has-duplicate-ids.txt -SPDXID: SPDXRef-File2 -FileChecksum: SHA1: 8a53ead202d74264017291e0f9f54673b0d4dd17 -FileChecksum: SHA256: cc33878a21b713001f0a021d5150dc555ff487807e323e7dfa8b50f5b284eeee -FileChecksum: MD5: 5610a0a2b1f42001acd268145bb55720 -LicenseConcluded: NOASSERTION -FileCopyrightText: NOASSERTION - -FileName: ./has-id.txt -SPDXID: SPDXRef-File3 -FileChecksum: SHA1: 26d6221d682d9ba59116f9753a701f34271c8ce1 -FileChecksum: SHA256: 0a4bdaf990e9b330ff72022dd78110ae98b60e08337cf2105b89856373416805 -FileChecksum: MD5: f60baa793870d9085461ad6bbab50b7f -LicenseConcluded: NOASSERTION -FileCopyrightText: NOASSERTION - -FileName: ./has-multiple-ids.txt -SPDXID: SPDXRef-File4 -FileChecksum: SHA1: e352d23aa7208ec7e2f35669261b77d2b2051f70 -FileChecksum: SHA256: 1b994c5639a10bd00434616976bb31eeeef1dd97a89bab427579c5e6e216f8d5 -FileChecksum: MD5: f9414bce67777f537d2dec6ff52566d8 -LicenseConcluded: NOASSERTION -FileCopyrightText: NOASSERTION - -FileName: ./no-id.txt -SPDXID: SPDXRef-File5 -FileChecksum: SHA1: feb0d01805ad59d520491c8062d60cc9a850614f -FileChecksum: SHA256: 73eb012c38dbf684dcafed273055209a8878926a99518e48abaf02cc5072c1eb -FileChecksum: MD5: bd03a7b7fad55b25d75248c01c9c0b13 -LicenseConcluded: NOASSERTION -FileCopyrightText: NOASSERTION - -##### Relationships - -Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-Package-project2 - From f7ea935382e82acded9629df367cf9f4c92db7ff Mon Sep 17 00:00:00 2001 From: Catalin Stratu Date: Tue, 15 Mar 2022 11:23:14 +0200 Subject: [PATCH 14/14] Fixes patch for WINDOWS OS Signed-off-by: Catalin Stratu --- builder/builder2v1/build_package.go | 18 ++++++++++++++---- builder/builder2v2/build_package.go | 13 ++++++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/builder/builder2v1/build_package.go b/builder/builder2v1/build_package.go index 20935168..e59e6763 100644 --- a/builder/builder2v1/build_package.go +++ b/builder/builder2v1/build_package.go @@ -8,6 +8,7 @@ import ( "github.com/spdx/tools-golang/utils" "path/filepath" "regexp" + "runtime" ) // BuildPackageSection2_1 creates an SPDX Package (version 2.1), returning @@ -22,18 +23,27 @@ 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 - //dirRootLen := len(dirRoot) for _, fp := range filepaths { - newFileName := fp - newFilePatch := filepath.FromSlash("." + newFileName) - fmt.Println(newFilePatch) + 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 diff --git a/builder/builder2v2/build_package.go b/builder/builder2v2/build_package.go index dcba0f76..640f9c77 100644 --- a/builder/builder2v2/build_package.go +++ b/builder/builder2v2/build_package.go @@ -8,6 +8,7 @@ import ( "github.com/spdx/tools-golang/utils" "path/filepath" "regexp" + "runtime" ) // BuildPackageSection2_2 creates an SPDX Package (version 2.2), returning @@ -19,6 +20,7 @@ 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 @@ -28,11 +30,20 @@ func BuildPackageSection2_2(packageName string, dirRoot string, pathsIgnore []st 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 { - newFilePatch := filepath.FromSlash("." + fp) + 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