Files
zeekayandHanzo Dev aa87442fdd Record upstream authorship centrally in NOTICE instead of in every file header
Source files keep their SPDX-License-Identifier and Hanzo copyright line; the
Gitea, Gogs and LFS Test Server copyrights they used to repeat now live once in
NOTICE, alongside LICENSE. The header lint accepts any copyright line above the
SPDX line, so it no longer demands an upstream one.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-10 17:50:35 -07:00

177 lines
3.2 KiB
Go

// Copyright 2026 Hanzo AI, Inc. All rights reserved.
// SPDX-License-Identifier: MIT
package repository
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func Test_getLicense(t *testing.T) {
type args struct {
name string
values *LicenseValues
}
tests := []struct {
name string
args args
want string
wantErr assert.ErrorAssertionFunc
}{
{
name: "regular",
args: args{
name: "MIT",
values: &LicenseValues{Owner: "Forge", Year: "2023"},
},
want: `MIT License
Copyright (c) 2023 Forge
Permission is hereby granted`,
wantErr: assert.NoError,
},
{
name: "license not found",
args: args{
name: "notfound",
},
wantErr: assert.Error,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := GetLicense(tt.args.name, tt.args.values)
if !tt.wantErr(t, err, fmt.Sprintf("GetLicense(%v, %v)", tt.args.name, tt.args.values)) {
return
}
assert.Contains(t, string(got), tt.want, "GetLicense(%v, %v)", tt.args.name, tt.args.values)
})
}
}
func Test_fillLicensePlaceholder(t *testing.T) {
type args struct {
name string
values *LicenseValues
origin string
}
tests := []struct {
name string
args args
want string
}{
{
name: "owner",
args: args{
name: "regular",
values: &LicenseValues{Year: "2023", Owner: "Forge", Email: "[email protected]", Repo: "forge"},
origin: `
<name of author>
<owner>
[NAME]
[name of copyright owner]
[name of copyright holder]
<COPYRIGHT HOLDERS>
<copyright holders>
<AUTHOR>
<author's name or designee>
[one or more legally recognised persons or entities offering the Work under the terms and conditions of this Licence]
`,
},
want: `
Forge
Forge
Forge
Forge
Forge
Forge
Forge
Forge
Forge
Forge
`,
},
{
name: "email",
args: args{
name: "regular",
values: &LicenseValues{Year: "2023", Owner: "Forge", Email: "[email protected]", Repo: "forge"},
origin: `
[EMAIL]
`,
},
want: `
[email protected]
`,
},
{
name: "repo",
args: args{
name: "regular",
values: &LicenseValues{Year: "2023", Owner: "Forge", Email: "[email protected]", Repo: "forge"},
origin: `
<program>
<one line to give the program's name and a brief idea of what it does.>
`,
},
want: `
forge
forge
`,
},
{
name: "year",
args: args{
name: "regular",
values: &LicenseValues{Year: "2023", Owner: "Forge", Email: "[email protected]", Repo: "forge"},
origin: `
<year>
[YEAR]
{YEAR}
[yyyy]
[Year]
[year]
`,
},
want: `
2023
2023
2023
2023
2023
2023
`,
},
{
name: "0BSD",
args: args{
name: "0BSD",
values: &LicenseValues{Year: "2023", Owner: "Forge", Email: "[email protected]", Repo: "forge"},
origin: `
Copyright (C) YEAR by AUTHOR EMAIL
...
... THE AUTHOR BE LIABLE FOR ...
`,
},
want: `
Copyright (C) 2023 by Forge [email protected]
...
... THE AUTHOR BE LIABLE FOR ...
`,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert.Equalf(t, tt.want, string(fillLicensePlaceholder(tt.args.name, tt.args.values, []byte(tt.args.origin))), "fillLicensePlaceholder(%v, %v, %v)", tt.args.name, tt.args.values, tt.args.origin)
})
}
}