xref: /aosp_15_r20/external/spdx-tools/builder/builder2v2/build_file_test.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
1// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
2
3package builder2v2
4
5import (
6	"testing"
7
8	"github.com/spdx/tools-golang/spdx/common"
9)
10
11// ===== File section builder tests =====
12func TestBuilder2_2CanBuildFileSection(t *testing.T) {
13	filePath := "/file1.testdata.txt"
14	prefix := "../../testdata/project1/"
15	fileNumber := 17
16
17	file1, err := BuildFileSection2_2(filePath, prefix, fileNumber)
18	if err != nil {
19		t.Fatalf("expected nil error, got %v", err)
20	}
21
22	if file1 == nil {
23		t.Fatalf("expected non-nil file, got nil")
24	}
25	if file1.FileName != "/file1.testdata.txt" {
26		t.Errorf("expected %v, got %v", "/file1.testdata.txt", file1.FileName)
27	}
28	if file1.FileSPDXIdentifier != common.ElementID("File17") {
29		t.Errorf("expected %v, got %v", "File17", file1.FileSPDXIdentifier)
30	}
31
32	for _, checksum := range file1.Checksums {
33		switch checksum.Algorithm {
34		case common.SHA1:
35			if checksum.Value != "024f870eb6323f532515f7a09d5646a97083b819" {
36				t.Errorf("expected %v, got %v", "024f870eb6323f532515f7a09d5646a97083b819", checksum.Value)
37			}
38		case common.SHA256:
39			if checksum.Value != "b14e44284ca477b4c0db34b15ca4c454b2947cce7883e22321cf2984050e15bf" {
40				t.Errorf("expected %v, got %v", "b14e44284ca477b4c0db34b15ca4c454b2947cce7883e22321cf2984050e15bf", checksum.Value)
41			}
42		case common.MD5:
43			if checksum.Value != "37c8208479dfe42d2bb29debd6e32d4a" {
44				t.Errorf("expected %v, got %v", "37c8208479dfe42d2bb29debd6e32d4a", checksum.Value)
45			}
46		}
47	}
48
49	if file1.LicenseConcluded != "NOASSERTION" {
50		t.Errorf("expected %v, got %v", "NOASSERTION", file1.LicenseConcluded)
51	}
52	if len(file1.LicenseInfoInFiles) != 1 {
53		t.Errorf("expected %v, got %v", 1, len(file1.LicenseInfoInFiles))
54	} else {
55		if file1.LicenseInfoInFiles[0] != "NOASSERTION" {
56			t.Errorf("expected %v, got %v", "NOASSERTION", file1.LicenseInfoInFiles[0])
57		}
58	}
59	if file1.FileCopyrightText != "NOASSERTION" {
60		t.Errorf("expected %v, got %v", "NOASSERTION", file1.FileCopyrightText)
61	}
62
63}
64
65func TestBuilder2_2BuildFileSectionFailsForInvalidFilePath(t *testing.T) {
66	filePath := "/file1.testdata.txt"
67	prefix := "oops/wrong/path"
68	fileNumber := 11
69
70	_, err := BuildFileSection2_2(filePath, prefix, fileNumber)
71	if err == nil {
72		t.Fatalf("expected non-nil error, got nil")
73	}
74}
75