aboutsummaryrefslogtreecommitdiff
path: root/tvloader
diff options
context:
space:
mode:
authorspecter25 <ujjwalcoding012@gmail.com>2021-03-21 01:22:26 +0530
committerspecter25 <ujjwalcoding012@gmail.com>2021-03-21 01:22:26 +0530
commitaf976619f2cc0badd250fb12628a0ac42b5a18ca (patch)
treed6ba02d46b173ddde31e05e813c30d79f97b15c1 /tvloader
parenta16d50ee155238df280a68252acc25e9afb7acea (diff)
downloadspdx-tools-af976619f2cc0badd250fb12628a0ac42b5a18ca.tar.gz
Create struct to store checksums
- Store the checksums in a struct with properties algorithm and value - Define permitted algorithm as constants Signed-off-by: specter25 <ujjwalcoding012@gmail.com>
Diffstat (limited to 'tvloader')
-rw-r--r--tvloader/parser2v2/parse_file.go15
-rw-r--r--tvloader/parser2v2/parse_file_test.go25
-rw-r--r--tvloader/parser2v2/parse_package.go16
-rw-r--r--tvloader/parser2v2/parse_package_test.go24
4 files changed, 51 insertions, 29 deletions
diff --git a/tvloader/parser2v2/parse_file.go b/tvloader/parser2v2/parse_file.go
index c0e3c92..c0e3c26 100644
--- a/tvloader/parser2v2/parse_file.go
+++ b/tvloader/parser2v2/parse_file.go
@@ -58,13 +58,16 @@ func (parser *tvParser2_2) parsePairFromFile2_2(tag string, value string) error
if err != nil {
return err
}
+ if parser.file.FileChecksums == nil {
+ parser.file.FileChecksums = map[spdx.ChecksumAlgorithm2_2]spdx.Checksum2_2{}
+ }
switch subkey {
- case "SHA1":
- parser.file.FileChecksumSHA1 = subvalue
- case "SHA256":
- parser.file.FileChecksumSHA256 = subvalue
- case "MD5":
- parser.file.FileChecksumMD5 = subvalue
+ case spdx.SHA1:
+ parser.file.FileChecksums[spdx.SHA1] = spdx.Checksum2_2{Algorithm: spdx.SHA1, Value: subvalue}
+ case spdx.SHA256:
+ parser.file.FileChecksums[spdx.SHA256] = spdx.Checksum2_2{Algorithm: spdx.SHA256, Value: subvalue}
+ case spdx.MD5:
+ parser.file.FileChecksums[spdx.MD5] = spdx.Checksum2_2{Algorithm: spdx.MD5, Value: subvalue}
default:
return fmt.Errorf("got unknown checksum type %s", subkey)
}
diff --git a/tvloader/parser2v2/parse_file_test.go b/tvloader/parser2v2/parse_file_test.go
index ffa7662..87283dc 100644
--- a/tvloader/parser2v2/parse_file_test.go
+++ b/tvloader/parser2v2/parse_file_test.go
@@ -443,16 +443,23 @@ func TestParser2_2CanParseFileTags(t *testing.T) {
if err != nil {
t.Errorf("expected nil error, got %v", err)
}
- if parser.file.FileChecksumSHA1 != codeSha1 {
- t.Errorf("expected %s for FileChecksumSHA1, got %s", codeSha1, parser.file.FileChecksumSHA1)
- }
- if parser.file.FileChecksumSHA256 != codeSha256 {
- t.Errorf("expected %s for FileChecksumSHA256, got %s", codeSha256, parser.file.FileChecksumSHA256)
- }
- if parser.file.FileChecksumMD5 != codeMd5 {
- t.Errorf("expected %s for FileChecksumMD5, got %s", codeMd5, parser.file.FileChecksumMD5)
- }
+ for _, checksum := range parser.file.FileChecksums {
+ switch checksum.Algorithm {
+ case spdx.SHA1:
+ if checksum.Value != codeSha1 {
+ t.Errorf("expected %s for FileChecksumSHA1, got %s", codeSha1, checksum.Value)
+ }
+ case spdx.SHA256:
+ if checksum.Value != codeSha256 {
+ t.Errorf("expected %s for FileChecksumSHA1, got %s", codeSha256, checksum.Value)
+ }
+ case spdx.MD5:
+ if checksum.Value != codeMd5 {
+ t.Errorf("expected %s for FileChecksumSHA1, got %s", codeMd5, checksum.Value)
+ }
+ }
+ }
// Concluded License
err = parser.parsePairFromFile2_2("LicenseConcluded", "Apache-2.0 OR GPL-2.0-or-later")
if err != nil {
diff --git a/tvloader/parser2v2/parse_package.go b/tvloader/parser2v2/parse_package.go
index ddc9cb0..32a6aca 100644
--- a/tvloader/parser2v2/parse_package.go
+++ b/tvloader/parser2v2/parse_package.go
@@ -100,16 +100,20 @@ func (parser *tvParser2_2) parsePairFromPackage2_2(tag string, value string) err
if err != nil {
return err
}
+ if parser.pkg.PackageChecksums == nil {
+ parser.pkg.PackageChecksums = make(map[spdx.ChecksumAlgorithm2_2]spdx.Checksum2_2, 9)
+ }
switch subkey {
- case "SHA1":
- parser.pkg.PackageChecksumSHA1 = subvalue
- case "SHA256":
- parser.pkg.PackageChecksumSHA256 = subvalue
- case "MD5":
- parser.pkg.PackageChecksumMD5 = subvalue
+ case spdx.SHA1:
+ parser.pkg.PackageChecksums[spdx.SHA1] = spdx.Checksum2_2{Algorithm: spdx.SHA1, Value: subvalue}
+ case spdx.SHA256:
+ parser.pkg.PackageChecksums[spdx.SHA256] = spdx.Checksum2_2{Algorithm: spdx.SHA256, Value: subvalue}
+ case spdx.MD5:
+ parser.pkg.PackageChecksums[spdx.MD5] = spdx.Checksum2_2{Algorithm: spdx.MD5, Value: subvalue}
default:
return fmt.Errorf("got unknown checksum type %s", subkey)
}
+
case "PackageHomePage":
parser.pkg.PackageHomePage = value
case "PackageSourceInfo":
diff --git a/tvloader/parser2v2/parse_package_test.go b/tvloader/parser2v2/parse_package_test.go
index 6f40170..38e7aba 100644
--- a/tvloader/parser2v2/parse_package_test.go
+++ b/tvloader/parser2v2/parse_package_test.go
@@ -353,14 +353,22 @@ func TestParser2_2CanParsePackageTags(t *testing.T) {
if err != nil {
t.Errorf("expected nil error, got %v", err)
}
- if parser.pkg.PackageChecksumSHA1 != codeSha1 {
- t.Errorf("expected %s for PackageChecksumSHA1, got %s", codeSha1, parser.pkg.PackageChecksumSHA1)
- }
- if parser.pkg.PackageChecksumSHA256 != codeSha256 {
- t.Errorf("expected %s for PackageChecksumSHA256, got %s", codeSha256, parser.pkg.PackageChecksumSHA256)
- }
- if parser.pkg.PackageChecksumMD5 != codeMd5 {
- t.Errorf("expected %s for PackageChecksumMD5, got %s", codeMd5, parser.pkg.PackageChecksumMD5)
+ for _, checksum := range parser.pkg.PackageChecksums {
+ switch checksum.Algorithm {
+ case spdx.SHA1:
+ if checksum.Value != codeSha1 {
+ t.Errorf("expected %s for FileChecksumSHA1, got %s", codeSha1, checksum.Value)
+ }
+ case spdx.SHA256:
+ if checksum.Value != codeSha256 {
+ t.Errorf("expected %s for FileChecksumSHA1, got %s", codeSha256, checksum.Value)
+ }
+ case spdx.MD5:
+ if checksum.Value != codeMd5 {
+ t.Errorf("expected %s for FileChecksumSHA1, got %s", codeMd5, checksum.Value)
+ }
+
+ }
}
// Package Home Page