spdx 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +17 -0
- data/.travis.yml +0 -1
- data/Rakefile +0 -0
- data/lib/spdx.rb +49 -19
- data/lib/spdx/version.rb +1 -1
- data/spdx.gemspec +14 -14
- data/spec/spdx_spec.rb +120 -43
- metadata +23 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab3e6557189a1de56e427e3fb850c5e621b1d090
|
4
|
+
data.tar.gz: c49c6f91cf60a21b90332ad232a062ddf8544aaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a597db243044fc4922958419fb0969e3411df16a4d384d34f16a4c404be00ccc2184ab80cceb29fc0a2add60df0d7beb6e13d8def2aeee2a2952a74e8546ecdc
|
7
|
+
data.tar.gz: 86b3640405a433ae217476cec7bf27e9e161ea08724716675d732bc4c1e04ced1feb8349720efa7fa668a089170221b853d5803e272e78ccdb9b51c289adaa41
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
AllCops:
|
2
|
+
TargetRubyVersion: 2.4
|
3
|
+
|
4
|
+
Metrics/BlockLength:
|
5
|
+
Max: 125
|
6
|
+
Exclude:
|
7
|
+
- spec/**/*_spec.rb
|
8
|
+
|
9
|
+
# It's 2019, allow longer line lengths
|
10
|
+
Metrics/LineLength:
|
11
|
+
Max: 120
|
12
|
+
|
13
|
+
Metrics/AbcSize:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
Style/FrozenStringLiteralComment:
|
17
|
+
Enabled: False
|
data/.travis.yml
CHANGED
data/Rakefile
CHANGED
File without changes
|
data/lib/spdx.rb
CHANGED
@@ -1,28 +1,31 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'spdx/version'
|
2
|
+
require 'spdx-licenses'
|
3
|
+
require 'fuzzy_match'
|
4
4
|
|
5
|
-
|
5
|
+
# Fuzzy matcher for licenses to SPDX standard licenses
|
6
|
+
module Spdx # rubocop:disable Metrics/ModuleLength
|
6
7
|
def self.find(name)
|
7
8
|
name = name.strip
|
8
9
|
return nil if commercial?(name)
|
10
|
+
|
9
11
|
search(name)
|
10
12
|
end
|
11
13
|
|
12
14
|
def self.search(name)
|
13
15
|
lookup(name) ||
|
14
|
-
|
15
|
-
|
16
|
+
find_by_special_case(name) ||
|
17
|
+
closest(name)
|
16
18
|
end
|
17
19
|
|
18
20
|
def self.commercial?(name)
|
19
|
-
name.
|
21
|
+
name.casecmp('commercial').zero?
|
20
22
|
end
|
21
23
|
|
22
24
|
def self.lookup(name)
|
23
25
|
return false if name.nil?
|
24
26
|
return SpdxLicenses[name] if SpdxLicenses.exist?(name)
|
25
|
-
|
27
|
+
|
28
|
+
lowercase = SpdxLicenses.data.keys.sort.find { |k| k.casecmp(name).zero? }
|
26
29
|
SpdxLicenses[lowercase] if lowercase
|
27
30
|
end
|
28
31
|
|
@@ -31,13 +34,14 @@ module Spdx
|
|
31
34
|
name.gsub!(/(\d)/, ' \1 ')
|
32
35
|
best_match = fuzzy_match(name)
|
33
36
|
return nil unless best_match
|
37
|
+
|
34
38
|
lookup(best_match) || find_by_name(best_match)
|
35
39
|
end
|
36
40
|
|
37
41
|
def self.matches(name, max_distance = 40)
|
38
42
|
names.map { |key| [key, Text::Levenshtein.distance(name, key)] }
|
39
|
-
|
40
|
-
|
43
|
+
.select { |arr| arr[1] <= max_distance }
|
44
|
+
.sort_by { |arr| arr[1] }
|
41
45
|
end
|
42
46
|
|
43
47
|
def self.fuzzy_match(name)
|
@@ -45,27 +49,29 @@ module Spdx
|
|
45
49
|
end
|
46
50
|
|
47
51
|
def self.stop_words
|
48
|
-
%w
|
52
|
+
%w[version software the or right all]
|
49
53
|
end
|
50
54
|
|
51
55
|
def self.find_by_name(name)
|
52
|
-
match = SpdxLicenses.data.find{|
|
56
|
+
match = SpdxLicenses.data.find { |_k, v| v['name'] == name }
|
53
57
|
lookup(match[0]) if match
|
54
58
|
end
|
55
59
|
|
56
60
|
def self.find_by_special_case(name)
|
57
61
|
gpl = gpl_match(name)
|
58
62
|
return gpl if gpl
|
63
|
+
|
59
64
|
lookup(special_cases[name.downcase.strip])
|
60
65
|
end
|
61
66
|
|
62
67
|
def self.gpl_match(name)
|
63
68
|
match = name.match(/^(l|a)?gpl-?\s?_?v?(1|2|3)\.?(\d)?(\+)?$/i)
|
64
69
|
return unless match
|
70
|
+
|
65
71
|
lookup "#{match[1]}GPL-#{match[2]}.#{match[3] || 0}#{match[4]}"
|
66
72
|
end
|
67
73
|
|
68
|
-
def self.special_cases
|
74
|
+
def self.special_cases # rubocop:disable Metrics/MethodLength
|
69
75
|
{
|
70
76
|
'perl_5' => 'Artistic-1.0-Perl',
|
71
77
|
'bsd3' => 'BSD-3-Clause',
|
@@ -86,7 +92,7 @@ module Spdx
|
|
86
92
|
'mpl1.0' => 'mpl-1.0',
|
87
93
|
'mpl1.1' => 'mpl-1.1',
|
88
94
|
'mpl2' => 'mpl-2.0',
|
89
|
-
|
95
|
+
'gnu lesser general public license' => 'LGPL-2.1+',
|
90
96
|
'lgplv2 or later' => 'LGPL-2.1+',
|
91
97
|
'gpl2 w/ cpe' => 'GPL-2.0-with-classpath-exception',
|
92
98
|
'new bsd license (gpl-compatible)' => 'BSD-3-Clause',
|
@@ -132,14 +138,38 @@ module Spdx
|
|
132
138
|
'3-clause bsdl' => 'BSD-3-clause',
|
133
139
|
'2-clause bsd' => 'BSD-2-clause',
|
134
140
|
'3-clause bsd' => 'BSD-3-clause',
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
141
|
+
'bsd 3-clause' => 'BSD-3-clause',
|
142
|
+
'bsd 2-clause' => 'BSD-2-clause',
|
143
|
+
'two-clause bsd-style license' => 'BSD-2-clause',
|
144
|
+
'bsd style' => 'BSD-3-clause',
|
145
|
+
'cc0 1.0 universal (cc0 1.0) public domain dedication' => 'CC0-1.0',
|
146
|
+
'common development and distribution license 1.0 (cddl-1.0)' => 'CDDL-1.0',
|
147
|
+
'european union public licence 1.0 (eupl 1.0)' => 'EUPL-1.0',
|
148
|
+
'european union public licence 1.1 (eupl 1.1)' => 'EUPL-1.1',
|
149
|
+
'european union public licence 1.2 (eupl 1.2)' => 'EUPL-1.2',
|
150
|
+
'vovida software license 1.0' => 'VSL-1.0',
|
151
|
+
'w3c license' => 'W3C',
|
152
|
+
'zlib/libpng license' => 'zlib-acknowledgement',
|
153
|
+
'gnu general public license (gpl)' => 'GPL-2.0+',
|
154
|
+
'gnu general public license v2 (gplv2)' => 'GPL-2.0',
|
155
|
+
'gnu general public license v2 or later (gplv2+)' => 'GPL-2.0+',
|
156
|
+
'gnu general public license v3 (gplv3)' => 'GPL-3.0',
|
157
|
+
'gnu general public license v3 or later (gplv3+)' => 'GPL-3.0+',
|
158
|
+
'gnu lesser general public license v2 (lgplv2)' => 'LGPL-2.0',
|
159
|
+
'gnu lesser general public license v2 or later (lgplv2+)' => 'LGPL-2.0+',
|
160
|
+
'gnu lesser general public license v3 (lgplv3)' => 'LGPL-3.0',
|
161
|
+
'gnu lesser general public license v3 or later (lgplv3+)' => 'LGPL-3.0+',
|
162
|
+
'gnu library or lesser general public license (lgpl)' => 'LGPL-2.0+',
|
163
|
+
'netscape public License (npl)' => 'NPL-1.1',
|
164
|
+
'apache software license' => 'Apache-2.0',
|
165
|
+
'academic free license (afl)' => 'AFL-3.0',
|
166
|
+
'gnu free documentation license (fdl)' => 'GFDL-1.3',
|
167
|
+
'sun industry standards source license (sissl)' => 'SISSL-1.2',
|
168
|
+
'zope public license' => 'ZPL-2.1'
|
139
169
|
}
|
140
170
|
end
|
141
171
|
|
142
172
|
def self.names
|
143
|
-
SpdxLicenses.data.keys + SpdxLicenses.data.map{|
|
173
|
+
(SpdxLicenses.data.keys + SpdxLicenses.data.map { |_k, v| v['name'] }).sort
|
144
174
|
end
|
145
175
|
end
|
data/lib/spdx/version.rb
CHANGED
data/spdx.gemspec
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'spdx/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
6
|
+
spec.name = 'spdx'
|
8
7
|
spec.version = Spdx::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary =
|
12
|
-
spec.homepage =
|
13
|
-
spec.license =
|
8
|
+
spec.authors = ['Andrew Nesbitt']
|
9
|
+
spec.email = ['andrewnez@gmail.com']
|
10
|
+
spec.summary = 'A SPDX license normalizer'
|
11
|
+
spec.homepage = 'https://github.com/librariesio/spdx'
|
12
|
+
spec.license = 'MIT'
|
14
13
|
|
15
14
|
spec.files = `git ls-files -z`.split("\x0")
|
16
15
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
-
spec.require_paths = [
|
17
|
+
spec.require_paths = ['lib']
|
19
18
|
|
20
|
-
spec.add_dependency
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
19
|
+
spec.add_dependency 'fuzzy_match', '~> 2.1'
|
20
|
+
spec.add_dependency 'spdx-licenses', '~> 1.2'
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.16'
|
22
|
+
spec.add_development_dependency 'rake', '~> 12'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.7'
|
24
|
+
spec.add_development_dependency 'rubocop'
|
25
25
|
end
|
data/spec/spdx_spec.rb
CHANGED
@@ -2,45 +2,117 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Spdx do
|
4
4
|
describe 'find' do
|
5
|
-
it
|
6
|
-
expect(Spdx.find('Apache-2.0').name).to eq(
|
5
|
+
it 'should return know license from short code' do
|
6
|
+
expect(Spdx.find('Apache-2.0').name).to eq('Apache License 2.0')
|
7
7
|
end
|
8
8
|
|
9
|
-
it
|
10
|
-
expect(Spdx.find('apache-2.0').name).to eq(
|
11
|
-
expect(Spdx.find('agpl-3.0').name).to eq(
|
9
|
+
it 'should work with case-insentive short codes' do
|
10
|
+
expect(Spdx.find('apache-2.0').name).to eq('Apache License 2.0')
|
11
|
+
expect(Spdx.find('agpl-3.0').name).to eq('GNU Affero General Public License v3.0')
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
15
|
-
expect(Spdx.find('Apache License 2.0').name).to eq(
|
14
|
+
it 'should return know license from full name' do
|
15
|
+
expect(Spdx.find('Apache License 2.0').name).to eq('Apache License 2.0')
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
18
|
+
it 'should return nil for commercial' do
|
19
19
|
expect(Spdx.find('Commercial')).to be_nil
|
20
20
|
end
|
21
21
|
|
22
|
-
it
|
22
|
+
it 'should return nil for garbage' do
|
23
23
|
expect(Spdx.find('foo bar baz')).to be_nil
|
24
24
|
expect(Spdx.find('Copyright Zendesk. All Rights Reserved.')).to be_nil
|
25
25
|
expect(Spdx.find('https://github.com/AuthorizeNet/sdk-ruby/blob/master/license.txt')).to be_nil
|
26
26
|
end
|
27
27
|
|
28
|
-
it
|
29
|
-
expect(Spdx.find('The Apache Software License, Version 2.0').name).to eq(
|
30
|
-
expect(Spdx.find('Apache 2.0').name).to eq(
|
31
|
-
expect(Spdx.find('Apache2').name).to eq(
|
32
|
-
expect(Spdx.find('Apache License, Version 2.0').name).to eq(
|
33
|
-
expect(Spdx.find('Educational Community License, Version 2.0').name).to eq(
|
34
|
-
expect(Spdx.find('CDDL + GPLv2 with classpath exception').name).to
|
35
|
-
|
36
|
-
expect(Spdx.find('
|
28
|
+
it 'should return know license from an alias' do
|
29
|
+
expect(Spdx.find('The Apache Software License, Version 2.0').name).to eq('Apache License 2.0')
|
30
|
+
expect(Spdx.find('Apache 2.0').name).to eq('Apache License 2.0')
|
31
|
+
expect(Spdx.find('Apache2').name).to eq('Apache License 2.0')
|
32
|
+
expect(Spdx.find('Apache License, Version 2.0').name).to eq('Apache License 2.0')
|
33
|
+
expect(Spdx.find('Educational Community License, Version 2.0').name).to eq('Educational Community License v2.0')
|
34
|
+
expect(Spdx.find('CDDL + GPLv2 with classpath exception').name).to \
|
35
|
+
eq('GNU General Public License v2.0 w/Classpath exception')
|
36
|
+
expect(Spdx.find('The MIT License').name).to eq('MIT License')
|
37
|
+
expect(Spdx.find('UNLICENSE').name).to eq('The Unlicense')
|
37
38
|
end
|
38
39
|
|
39
|
-
it
|
40
|
-
expect(Spdx.find(
|
40
|
+
it 'should strip whitespace from strings before lookups' do
|
41
|
+
expect(Spdx.find(' BSD-3-Clause').id).to eq('BSD-3-Clause')
|
41
42
|
end
|
42
43
|
|
43
|
-
it
|
44
|
+
it 'should handle pypi classifiers properly' do
|
45
|
+
pypi_mappings = [
|
46
|
+
['Aladdin Free Public License (AFPL)', 'Aladdin'],
|
47
|
+
['CC0 1.0 Universal (CC0 1.0) Public Domain Dedication', 'CC0-1.0'],
|
48
|
+
['CeCILL-B Free Software License Agreement (CECILL-B)', 'CECILL-B'],
|
49
|
+
['CeCILL-C Free Software License Agreement (CECILL-C)', 'CECILL-C'],
|
50
|
+
['Eiffel Forum License (EFL)', 'EFL-2.0'],
|
51
|
+
['Netscape Public License (NPL)', 'NPL-1.1'],
|
52
|
+
['Nokia Open Source License (NOKOS)', 'Nokia'],
|
53
|
+
['Academic Free License (AFL)', 'AFL-3.0'],
|
54
|
+
['Apache Software License', 'Apache-2.0'],
|
55
|
+
['Apple Public Source License', 'APSL-2.0'],
|
56
|
+
['Artistic License', 'Artistic-2.0'],
|
57
|
+
['Attribution Assurance License', 'AAL'],
|
58
|
+
['Boost Software License 1.0 (BSL-1.0)', 'BSL-1.0'],
|
59
|
+
['BSD License', 'BSD-3-Clause'],
|
60
|
+
['Common Development and Distribution License 1.0 (CDDL-1.0)', 'CDDL-1.0'],
|
61
|
+
['Common Public License', 'CPL-1.0'],
|
62
|
+
['Eclipse Public License 1.0 (EPL-1.0)', 'EPL-1.0'],
|
63
|
+
['Eclipse Public License 2.0 (EPL-2.0)', 'EPL-2.0'],
|
64
|
+
['Eiffel Forum License', 'EFL-2.0'],
|
65
|
+
['European Union Public Licence 1.0 (EUPL 1.0)', 'EUPL-1.0'],
|
66
|
+
['European Union Public Licence 1.1 (EUPL 1.1)', 'EUPL-1.1'],
|
67
|
+
['European Union Public Licence 1.2 (EUPL 1.2)', 'EUPL-1.2'],
|
68
|
+
['GNU Affero General Public License v3', 'AGPL-3.0'],
|
69
|
+
['GNU Affero General Public License v3 or later (AGPLv3+)', 'AGPL-3.0-or-later'],
|
70
|
+
['GNU Free Documentation License (FDL)', 'GFDL-1.3'],
|
71
|
+
['GNU General Public License (GPL)', 'GPL-2.0+'],
|
72
|
+
['GNU General Public License v2 (GPLv2)', 'GPL-2.0'],
|
73
|
+
['GNU General Public License v2 or later (GPLv2+)', 'GPL-2.0+'],
|
74
|
+
['GNU General Public License v3 (GPLv3)', 'GPL-3.0'],
|
75
|
+
['GNU General Public License v3 or later (GPLv3+)', 'GPL-3.0+'],
|
76
|
+
['GNU Lesser General Public License v2 (LGPLv2)', 'LGPL-2.0'],
|
77
|
+
['GNU Lesser General Public License v2 or later (LGPLv2+)', 'LGPL-2.0+'],
|
78
|
+
['GNU Lesser General Public License v3 (LGPLv3)', 'LGPL-3.0'],
|
79
|
+
['GNU Lesser General Public License v3 or later (LGPLv3+)', 'LGPL-3.0+'],
|
80
|
+
['GNU Library or Lesser General Public License (LGPL)', 'LGPL-2.0+'],
|
81
|
+
['IBM Public License', 'IPL-1.0'],
|
82
|
+
['Intel Open Source License', 'Intel'],
|
83
|
+
['ISC License (ISCL)', 'ISC'],
|
84
|
+
['MirOS License (MirOS)', 'MirOS'],
|
85
|
+
['MIT License', 'MIT'],
|
86
|
+
['Motosoto License', 'Motosoto'],
|
87
|
+
['Mozilla Public License 1.0 (MPL)', 'MPL-1.0'],
|
88
|
+
['Mozilla Public License 1.1 (MPL 1.1)', 'MPL-1.1'],
|
89
|
+
['Mozilla Public License 2.0 (MPL 2.0)', 'MPL-2.0'],
|
90
|
+
['Nethack General Public License', 'NGPL'],
|
91
|
+
['Nokia Open Source License', 'Nokia'],
|
92
|
+
['Open Group Test Suite License', 'OGTSL'],
|
93
|
+
['PostgreSQL License', 'PostgreSQL'],
|
94
|
+
['Python License (CNRI Python License)', 'CNRI-Python'],
|
95
|
+
['Python Software Foundation License', 'Python-2.0'],
|
96
|
+
['Qt Public License (QPL)', 'QPL-1.0'],
|
97
|
+
['Ricoh Source Code Public License', 'RSCPL'],
|
98
|
+
['SIL Open Font License 1.1 (OFL-1.1)', 'OFL-1.1'],
|
99
|
+
['Sleepycat License', 'Sleepycat'],
|
100
|
+
['Sun Industry Standards Source License (SISSL)', 'SISSL-1.2'],
|
101
|
+
['Sun Public License', 'SPL-1.0'],
|
102
|
+
['Universal Permissive License (UPL)', 'UPL-1.0'],
|
103
|
+
['University of Illinois/NCSA Open Source License', 'NCSA'],
|
104
|
+
['Vovida Software License 1.0', 'VSL-1.0'],
|
105
|
+
['W3C License', 'W3C'],
|
106
|
+
['X.Net License', 'Xnet'],
|
107
|
+
['zlib/libpng License', 'zlib-acknowledgement'],
|
108
|
+
['Zope Public License', 'ZPL-2.1']
|
109
|
+
]
|
110
|
+
pypi_mappings.each do |license, mapped|
|
111
|
+
expect(Spdx.find(license).id).to eq(mapped)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should return know licenses for special cases' do
|
44
116
|
expect(Spdx.find('MPL1').name).to eq('Mozilla Public License 1.0')
|
45
117
|
expect(Spdx.find('MPL1.0').name).to eq('Mozilla Public License 1.0')
|
46
118
|
expect(Spdx.find('MPL1.1').name).to eq('Mozilla Public License 1.1')
|
@@ -51,21 +123,24 @@ describe Spdx do
|
|
51
123
|
expect(Spdx.find('GPL3').name).to eq('GNU General Public License v3.0 only')
|
52
124
|
expect(Spdx.find('GPL 3.0').name).to eq('GNU General Public License v3.0 only')
|
53
125
|
expect(Spdx.find('GPL-3').name).to eq('GNU General Public License v3.0 only')
|
54
|
-
expect(Spdx.find('GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]').name).to
|
55
|
-
|
126
|
+
expect(Spdx.find('GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]').name).to \
|
127
|
+
eq('GNU General Public License v2.0 or later')
|
128
|
+
expect(Spdx.find('GPL-2 | GPL-3 [expanded from: GPL]').name).to \
|
129
|
+
eq('GNU General Public License v2.0 or later')
|
56
130
|
expect(Spdx.find('GPL (≥ 3)').name).to eq('GNU General Public License v3.0 or later')
|
57
131
|
expect(Spdx.find('gpl30').name).to eq('GNU General Public License v3.0 only')
|
58
|
-
expect(Spdx.find(
|
59
|
-
expect(Spdx.find(
|
60
|
-
expect(Spdx.find(
|
61
|
-
expect(Spdx.find(
|
62
|
-
expect(Spdx.find(
|
63
|
-
expect(Spdx.find(
|
64
|
-
|
65
|
-
expect(Spdx.find(
|
66
|
-
expect(Spdx.find(
|
67
|
-
expect(Spdx.find(
|
68
|
-
expect(Spdx.find('
|
132
|
+
expect(Spdx.find('GPL v2+').name).to eq('GNU General Public License v2.0 or later')
|
133
|
+
expect(Spdx.find('GPL 2').name).to eq('GNU General Public License v2.0 only')
|
134
|
+
expect(Spdx.find('GPL v2').name).to eq('GNU General Public License v2.0 only')
|
135
|
+
expect(Spdx.find('GPL2').name).to eq('GNU General Public License v2.0 only')
|
136
|
+
expect(Spdx.find('GPL-2 | GPL-3').name).to eq('GNU General Public License v2.0 or later')
|
137
|
+
expect(Spdx.find('GPL-2 | GPL-3 [expanded from: GPL (≥ 2.0)]').name).to \
|
138
|
+
eq('GNU General Public License v2.0 or later')
|
139
|
+
expect(Spdx.find('GPL2 w/ CPE').name).to eq('GNU General Public License v2.0 w/Classpath exception')
|
140
|
+
expect(Spdx.find('GPL 2.0').name).to eq('GNU General Public License v2.0 only')
|
141
|
+
expect(Spdx.find('New BSD License (GPL-compatible)').name).to eq('BSD 3-Clause "New" or "Revised" License')
|
142
|
+
expect(Spdx.find('The GPL V3').name).to eq('GNU General Public License v3.0 only')
|
143
|
+
expect(Spdx.find('perl_5').name).to eq('Artistic License 1.0 (Perl)')
|
69
144
|
expect(Spdx.find('BSD3').name).to eq('BSD 3-Clause "New" or "Revised" License')
|
70
145
|
expect(Spdx.find('BSD').name).to eq('BSD 3-Clause "New" or "Revised" License')
|
71
146
|
expect(Spdx.find('GPLv3').name).to eq('GNU General Public License v3.0 only')
|
@@ -74,14 +149,16 @@ describe Spdx do
|
|
74
149
|
expect(Spdx.find('Public Domain').name).to eq('The Unlicense')
|
75
150
|
expect(Spdx.find('GPL-2').name).to eq('GNU General Public License v2.0 only')
|
76
151
|
expect(Spdx.find('GPL').name).to eq('GNU General Public License v2.0 or later')
|
77
|
-
expect(Spdx.find('GNU LESSER GENERAL PUBLIC LICENSE').name).to
|
152
|
+
expect(Spdx.find('GNU LESSER GENERAL PUBLIC LICENSE').name).to \
|
153
|
+
eq('GNU Library General Public License v2.1 or later')
|
78
154
|
expect(Spdx.find('New BSD License').name).to eq('BSD 3-Clause "New" or "Revised" License')
|
79
155
|
expect(Spdx.find('(MIT OR X11) ').name).to eq('MIT License')
|
80
156
|
expect(Spdx.find('mit-license').name).to eq('MIT License')
|
81
157
|
expect(Spdx.find('lgpl-3').name).to eq('GNU Lesser General Public License v3.0 only')
|
82
158
|
expect(Spdx.find('agpl-3').name).to eq('GNU Affero General Public License v3.0')
|
83
159
|
expect(Spdx.find('cc by-sa 4.0').name).to eq('Creative Commons Attribution Share Alike 4.0 International')
|
84
|
-
expect(Spdx.find('cc by-nc-sa 3.0').name).to
|
160
|
+
expect(Spdx.find('cc by-nc-sa 3.0').name).to \
|
161
|
+
eq('Creative Commons Attribution Non Commercial Share Alike 3.0 Unported')
|
85
162
|
expect(Spdx.find('cc by-sa 3.0').name).to eq('Creative Commons Attribution Share Alike 3.0 Unported')
|
86
163
|
expect(Spdx.find('gpl_1').name).to eq('GNU General Public License v1.0 only')
|
87
164
|
expect(Spdx.find('gpl_2').name).to eq('GNU General Public License v2.0 only')
|
@@ -93,14 +170,14 @@ describe Spdx do
|
|
93
170
|
expect(Spdx.find('lgpl_2_1').name).to eq('GNU Lesser General Public License v2.1 only')
|
94
171
|
expect(Spdx.find('lgpl_v2_1').name).to eq('GNU Lesser General Public License v2.1 only')
|
95
172
|
|
96
|
-
expect(Spdx.find(
|
97
|
-
expect(Spdx.find(
|
98
|
-
expect(Spdx.find(
|
99
|
-
expect(Spdx.find(
|
100
|
-
expect(Spdx.find(
|
173
|
+
expect(Spdx.find('BSD 3-Clause').name).to eq('BSD 3-Clause "New" or "Revised" License')
|
174
|
+
expect(Spdx.find('BSD 3-Clause').name).to eq('BSD 3-Clause "New" or "Revised" License')
|
175
|
+
expect(Spdx.find('BSD 2-Clause').name).to eq('BSD 2-Clause "Simplified" License')
|
176
|
+
expect(Spdx.find('BSD 2-clause').name).to eq('BSD 2-Clause "Simplified" License')
|
177
|
+
expect(Spdx.find('BSD Style').name).to eq('BSD 3-Clause "New" or "Revised" License')
|
101
178
|
|
102
|
-
expect(Spdx.find(
|
103
|
-
expect(Spdx.find(
|
179
|
+
expect(Spdx.find('GNU LGPL v3+').name).to eq('GNU Lesser General Public License v3.0 only')
|
180
|
+
expect(Spdx.find('ZPL 2.1').name).to eq('Zope Public License 2.1')
|
104
181
|
end
|
105
182
|
end
|
106
183
|
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spdx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Nesbitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: fuzzy_match
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
19
|
+
version: '2.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: spdx-licenses
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2
|
33
|
+
version: '1.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2
|
40
|
+
version: '1.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.7'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description:
|
84
98
|
email:
|
85
99
|
- andrewnez@gmail.com
|
@@ -93,6 +107,7 @@ files:
|
|
93
107
|
- ".github/SUPPORT.md"
|
94
108
|
- ".gitignore"
|
95
109
|
- ".rspec"
|
110
|
+
- ".rubocop.yml"
|
96
111
|
- ".travis.yml"
|
97
112
|
- CODE_OF_CONDUCT.md
|
98
113
|
- Gemfile
|