aboutsummaryrefslogtreecommitdiff
path: root/spdxconv_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'spdxconv_test.go')
-rw-r--r--spdxconv_test.go152
1 files changed, 152 insertions, 0 deletions
diff --git a/spdxconv_test.go b/spdxconv_test.go
new file mode 100644
index 0000000..9c66aea
--- /dev/null
+++ b/spdxconv_test.go
@@ -0,0 +1,152 @@
+// SPDX-License-Identifier: GPL-3.0-only
+// SPDX-FileCopyrightText: 2025 M. Shulhan <ms@kilabit.info>
+
+package spdxconv
+
+import (
+ "testing"
+
+ "git.sr.ht/~shulhan/pakakeh.go/lib/git"
+ "git.sr.ht/~shulhan/pakakeh.go/lib/test"
+)
+
+func TestNew(t *testing.T) {
+ type testCase struct {
+ exp *SPDXConv
+ dir string
+ expError string
+ }
+
+ var testData *test.Data
+ var err error
+ testData, err = test.LoadData(`testdata/New_test.txt`)
+ if err != nil {
+ t.Fatal(err)
+ }
+ var tempDir = t.TempDir()
+ testData.ExtractInput(tempDir)
+ t.Chdir(tempDir)
+
+ var gitRoot *git.Git
+ gitRoot, err = git.New(`.`)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var listCase = []testCase{{
+ dir: `.`,
+ exp: &SPDXConv{
+ dir: tempDir,
+ scmDir: tempDir,
+ scm: gitRoot,
+ },
+ }}
+ var tc testCase
+ var conv *SPDXConv
+ for _, tc = range listCase {
+ conv, err = New(`.`)
+ if err != nil {
+ test.Assert(t, tc.dir+`: error`, tc.expError, err.Error())
+ continue
+ }
+ test.Assert(t, tc.dir, tc.exp, conv)
+ }
+}
+
+func TestSPDXConv_loadConfig(t *testing.T) {
+ type testCase struct {
+ dir string
+ exp config
+ }
+ var listCase = []testCase{{
+ dir: `testdata/loadConfig/config_not_exists`,
+ exp: config{},
+ }, {
+ dir: `testdata/loadConfig/config_exists`,
+ exp: config{
+ LicenseIdentifier: `GPL-3.0-only`,
+ FileCopyrightText: `Author <author@email.info>`,
+ MaxLineMatch: 10,
+ MatchLicense: []configMatchLicense{{
+ Pattern: `^(//+|#+)*\s+(.*)governed by a BSD-style(.*)$`,
+ LicenseIdentifier: `BSD-3-Clause`,
+ DeleteLinePattern: []string{
+ `^(//+|#+)*\s*$`,
+ `^(//+|#+)*\s+license that(.*)$`,
+ },
+ DeleteMatch: true,
+ }},
+ },
+ }}
+
+ var conv = SPDXConv{}
+ var tc testCase
+ var err error
+ for _, tc = range listCase {
+ conv.dir = tc.dir
+ err = conv.loadConfig(tc.dir)
+ if err != nil {
+ t.Fatal(err)
+ }
+ test.Assert(t, tc.dir, tc.exp, conv.cfg)
+ }
+}
+
+func TestSPDXConv_scanFile(t *testing.T) {
+ var conv *SPDXConv
+ var err error
+ conv, err = New(`testdata/scan/`)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ type testCase struct {
+ dir string
+ name string
+ exp []string
+ }
+ var listCase = []testCase{{
+ dir: `.`,
+ name: `test.go`,
+ exp: []string{`test.go`},
+ }, {
+ dir: `.`,
+ name: `test.html`,
+ exp: []string{`test.html`},
+ }, {
+ dir: `vendor`,
+ name: `dummy`,
+ }}
+ var tc testCase
+ for _, tc = range listCase {
+ got, err := conv.scanFile(tc.dir, tc.name)
+ if err != nil {
+ t.Fatal(err)
+ }
+ test.Assert(t, tc.dir+"/"+tc.name, tc.exp, got)
+ }
+}
+
+func TestSPDXConv_scanFiles(t *testing.T) {
+ var conv *SPDXConv
+ var err error
+
+ conv, err = New(`testdata/scan/`)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var got []string
+ got, err = conv.scanFiles([]string{`testdata/scan/`})
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var exp = []string{
+ `testdata/scan/.gitignore`,
+ `testdata/scan/test.go`,
+ `testdata/scan/test.html`,
+ `testdata/scan/test.sh`,
+ }
+ test.Assert(t, `scanFiles: testdata/scan/`, exp, got)
+}