diff options
Diffstat (limited to 'spdxconv_test.go')
| -rw-r--r-- | spdxconv_test.go | 152 |
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) +} |
