@@ -68,24 +68,40 @@ func TestLicensesAreCompatible(t *testing.T) {
6868 {"compatible (diff case equal): Apache-2.0, APACHE-2.0" , & nodePair {
6969 getLicenseNode ("Apache-2.0" , false ),
7070 getLicenseNode ("APACHE-2.0" , false )}, true },
71- // {"compatible (same version with +): Apache-1.0+, Apache-1.0", &nodePair{
72- // getLicenseNode("Apache-1.0+", true),
73- // getLicenseNode("Apache-1.0", false)}, true},
74- // {"compatible (later version with +): Apache-1.0+, Apache-2.0", &nodePair{
75- // getLicenseNode("Apache-1.0+", true),
76- // getLicenseNode("Apache-2.0", false)}, true},
77- // {"compatible (same version with -or-later): GPL-2.0-or-later, GPL-2.0", &nodePair{
78- // getLicenseNode("GPL-2.0-or-later", true),
79- // getLicenseNode("GPL-2.0", false)}, true},
80- // {"compatible (same version with -or-later and -only): GPL-2.0-or-later, GPL-2.0-only", &nodePair{
81- // getLicenseNode("GPL-2.0-or-later", true),
82- // getLicenseNode("GPL-2.0-only", false)}, true}, // TODO: Double check that -or-later and -only should be true for GT
83- // {"compatible (later version with -or-later): GPL-2.0-or-later, GPL-3.0", &nodePair{
84- // getLicenseNode("GPL-2.0-or-later", true),
85- // getLicenseNode("GPL-3.0", false)}, true},
86- // {"incompatible (different versions using -only): GPL-3.0-only, GPL-2.0-only", &nodePair{
87- // getLicenseNode("GPL-3.0-only", false),
88- // getLicenseNode("GPL-2.0-only", false)}, false},
71+ {"compatible (same version with +): Apache-1.0+, Apache-1.0" , & nodePair {
72+ getLicenseNode ("Apache-1.0" , true ),
73+ getLicenseNode ("Apache-1.0" , false )}, true },
74+ {"compatible (later version with +): Apache-1.0+, Apache-2.0" , & nodePair {
75+ getLicenseNode ("Apache-1.0" , true ),
76+ getLicenseNode ("Apache-2.0" , false )}, true },
77+ {"compatible (second version with +): Apache-2.0, Apache-1.0+" , & nodePair {
78+ getLicenseNode ("Apache-2.0" , false ),
79+ getLicenseNode ("Apache-1.0" , true )}, true },
80+ {"compatible (later version with both +): Apache-1.0+, Apache-2.0+" , & nodePair {
81+ getLicenseNode ("Apache-1.0" , true ),
82+ getLicenseNode ("Apache-2.0" , true )}, true },
83+ {"compatible (same version with -or-later): GPL-2.0-or-later, GPL-2.0" , & nodePair {
84+ getLicenseNode ("GPL-2.0-or-later" , true ),
85+ getLicenseNode ("GPL-2.0" , false )}, true },
86+ {"compatible (same version with -or-later and -only): GPL-2.0-or-later, GPL-2.0-only" , & nodePair {
87+ getLicenseNode ("GPL-2.0-or-later" , true ),
88+ getLicenseNode ("GPL-2.0-only" , false )}, true }, // TODO: Double check that -or-later and -only should be true for GT
89+ {"compatible (later version with -or-later): GPL-2.0-or-later, GPL-3.0" , & nodePair {
90+ getLicenseNode ("GPL-2.0-or-later" , true ),
91+ getLicenseNode ("GPL-3.0" , false )}, true },
92+ {"incompatible (same version with -or-later exception): GPL-2.0, GPL-2.0-or-later WITH Bison-exception-2.2" , & nodePair {
93+ getLicenseNode ("GPL-2.0" , true ),
94+ & node {
95+ role : licenseNode ,
96+ exp : nil ,
97+ lic : & licenseNodePartial {
98+ license : "GPL-2.0" , hasPlus : true ,
99+ hasException : true , exception : "Bison-exception-2.2" },
100+ ref : nil ,
101+ }}, false },
102+ {"incompatible (different versions using -only): GPL-3.0-only, GPL-2.0-only" , & nodePair {
103+ getLicenseNode ("GPL-3.0-only" , false ),
104+ getLicenseNode ("GPL-2.0-only" , false )}, false },
89105 {"incompatible (different versions with letter): LPPL-1.3c, LPPL-1.3a" , & nodePair {
90106 getLicenseNode ("LPPL-1.3c" , false ),
91107 getLicenseNode ("LPPL-1.3a" , false )}, false },
@@ -99,8 +115,8 @@ func TestLicensesAreCompatible(t *testing.T) {
99115 getLicenseNode ("MIT" , false ),
100116 getLicenseNode ("ISC" , false )}, false },
101117 {"not simple license: (MIT OR ISC), GPL-3.0" , & nodePair {
102- getLicenseNode ("(MIT OR ISC)" , false ),
103- getLicenseNode ("GPL-3.0" , false )}, false }, // TODO: should it raise error?
118+ getParsedNode ("(MIT OR ISC)" ),
119+ getLicenseNode ("GPL-3.0" , false )}, false },
104120 }
105121
106122 for _ , test := range tests {
@@ -120,9 +136,9 @@ func TestRangesAreCompatible(t *testing.T) {
120136 {"compatible - both use -or-later" , & nodePair {
121137 firstNode : getLicenseNode ("GPL-1.0-or-later" , true ),
122138 secondNode : getLicenseNode ("GPL-2.0-or-later" , true )}, true },
123- // {"compatible - both use +", &nodePair{ // TODO: fails here and in js, but passes js satisfies
124- // firstNode: getLicenseNode("Apache-1.0", true),
125- // secondNode: getLicenseNode("Apache-2.0", true)}, true},
139+ {"compatible - both use +" , & nodePair {
140+ firstNode : getLicenseNode ("Apache-1.0" , true ),
141+ secondNode : getLicenseNode ("Apache-2.0" , true )}, true },
126142 {"not compatible" , & nodePair {
127143 firstNode : getLicenseNode ("GPL-1.0-or-later" , true ),
128144 secondNode : getLicenseNode ("LGPL-3.0-or-later" , true )}, false },
@@ -136,32 +152,6 @@ func TestRangesAreCompatible(t *testing.T) {
136152 }
137153}
138154
139- func TestLicenseInRange (t * testing.T ) {
140- tests := []struct {
141- name string
142- license string
143- licenseRange []string
144- result bool
145- }{
146- {"in range" , "GPL-3.0" , []string {
147- "GPL-1.0-or-later" ,
148- "GPL-2.0-or-later" ,
149- "GPL-3.0" ,
150- "GPL-3.0-only" ,
151- "GPL-3.0-or-later" }, true },
152- {"not in range" , "GPL-3.0" , []string {
153- "GPL-2.0" ,
154- "GPL-2.0-only" }, false },
155- }
156-
157- for _ , test := range tests {
158- test := test
159- t .Run (test .name , func (t * testing.T ) {
160- assert .Equal (t , test .result , licenseInRange (test .license , test .licenseRange ))
161- })
162- }
163- }
164-
165155func TestIdentifierInRange (t * testing.T ) {
166156 tests := []struct {
167157 name string
@@ -173,10 +163,10 @@ func TestIdentifierInRange(t *testing.T) {
173163 secondNode : getLicenseNode ("GPL-2.0-or-later" , true )}, true },
174164 {"in or-later range (same)" , & nodePair {
175165 firstNode : getLicenseNode ("GPL-2.0" , false ),
176- secondNode : getLicenseNode ("GPL-2.0-or-later" , true )}, false }, // TODO: why doesn't this
177- {"in + range" , & nodePair {
166+ secondNode : getLicenseNode ("GPL-2.0-or-later" , true )}, true },
167+ {"in + range (1.0+) " , & nodePair {
178168 firstNode : getLicenseNode ("Apache-2.0" , false ),
179- secondNode : getLicenseNode ("Apache-1.0+ " , true )}, false }, // TODO: think this doesn't match because Apache doesn't have any -or-later
169+ secondNode : getLicenseNode ("Apache-1.0" , true )}, true },
180170 {"not in range" , & nodePair {
181171 firstNode : getLicenseNode ("GPL-1.0" , false ),
182172 secondNode : getLicenseNode ("GPL-2.0-or-later" , true )}, false },
0 commit comments