licensee 9.9.0.beta.3 → 9.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/licensee/content_helper.rb +5 -0
- data/lib/licensee/license.rb +6 -0
- data/lib/licensee/matchers/copyright.rb +1 -1
- data/lib/licensee/project_files/license_file.rb +1 -0
- data/lib/licensee/project_files/project_file.rb +1 -1
- data/lib/licensee/version.rb +1 -1
- data/spec/fixtures/detect.json +2 -2
- data/spec/licensee/content_helper_spec.rb +6 -0
- data/spec/licensee/license_spec.rb +6 -0
- data/spec/licensee/matchers/copyright_matcher_spec.rb +2 -1
- data/spec/licensee/project_files/license_file_spec.rb +18 -1
- data/spec/licensee/project_files/project_file_spec.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e68d77bd40c2b0782aaa0a9e7e2920bbb1fc618f9b9c2de2d327e0402133718
|
4
|
+
data.tar.gz: 3c9f04a3200fdb7a54861698f2dd341c057c7c3cf39326679e70c4927a1cdbcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a59d88fea1c24eb704762f0482656e100e8d57b76d52d1cf2265db7193e81996ae8a1719fbadbab9e5f0f3d2ba9aa80304769ca47c40776b4c6caee9383ebb3
|
7
|
+
data.tar.gz: 88e89806f40aab22b987d2bae53add71b0ee7a0ba2ba92daed4574c900d3f00629cf066991f38a64efdebabbb06e95450a346382bf82b9741b1ccd93c61b0cad
|
@@ -82,6 +82,7 @@ module Licensee
|
|
82
82
|
string, _partition, _instructions = string.partition(END_OF_TERMS_REGEX)
|
83
83
|
string = strip_markup(string)
|
84
84
|
string = normalize_quotes(string)
|
85
|
+
string = normalize_https(string)
|
85
86
|
strip_whitespace(string)
|
86
87
|
end
|
87
88
|
|
@@ -178,5 +179,9 @@ module Licensee
|
|
178
179
|
def normalize_quotes(string)
|
179
180
|
string.gsub(/\s'([\w -]*?\w)'/, ' "\1"')
|
180
181
|
end
|
182
|
+
|
183
|
+
def normalize_https(string)
|
184
|
+
string.gsub(/http:/, 'https:')
|
185
|
+
end
|
181
186
|
end
|
182
187
|
end
|
data/lib/licensee/license.rb
CHANGED
@@ -117,6 +117,12 @@ module Licensee
|
|
117
117
|
@meta ||= LicenseMeta.from_yaml(yaml)
|
118
118
|
end
|
119
119
|
|
120
|
+
def spdx_id
|
121
|
+
return meta.spdx_id if meta.spdx_id
|
122
|
+
return 'NOASSERTION' if key == 'other'
|
123
|
+
return 'NONE' if key == 'no-license'
|
124
|
+
end
|
125
|
+
|
120
126
|
# Returns the human-readable license name
|
121
127
|
def name
|
122
128
|
title ? title : key.capitalize
|
@@ -5,7 +5,7 @@ module Licensee
|
|
5
5
|
|
6
6
|
# rubocop:disable Metrics/LineLength
|
7
7
|
COPYRIGHT_SYMBOLS = Regexp.union([/copyright/i, /\(c\)/i, "\u00A9", "\xC2\xA9"])
|
8
|
-
REGEX = /\A\s*#{COPYRIGHT_SYMBOLS}
|
8
|
+
REGEX = /\A(\s*#{COPYRIGHT_SYMBOLS}.*$)+/i
|
9
9
|
# rubocop:enable Metrics/LineLength
|
10
10
|
|
11
11
|
def match
|
data/lib/licensee/version.rb
CHANGED
data/spec/fixtures/detect.json
CHANGED
@@ -94,7 +94,7 @@
|
|
94
94
|
"name": "exact",
|
95
95
|
"confidence": 100
|
96
96
|
},
|
97
|
-
"matched_license": "
|
97
|
+
"matched_license": "MIT"
|
98
98
|
},
|
99
99
|
{
|
100
100
|
"filename": "licensee.gemspec",
|
@@ -105,7 +105,7 @@
|
|
105
105
|
"name": "gemspec",
|
106
106
|
"confidence": 90
|
107
107
|
},
|
108
|
-
"matched_license": "
|
108
|
+
"matched_license": "MIT"
|
109
109
|
}
|
110
110
|
]
|
111
111
|
}
|
@@ -103,6 +103,12 @@ LICENSE
|
|
103
103
|
expect(license.content_normalized).to_not include('* *')
|
104
104
|
end
|
105
105
|
|
106
|
+
it 'normalizes http: to https:' do
|
107
|
+
license = Licensee::License.find('mpl-2.0')
|
108
|
+
expect(license.content).to include('http:')
|
109
|
+
expect(license.content_normalized).to_not include('http:')
|
110
|
+
end
|
111
|
+
|
106
112
|
it 'wraps' do
|
107
113
|
lines = mit.content_normalized(wrap: 40).split("\n")
|
108
114
|
expect(lines.first.length).to be <= 40
|
@@ -11,6 +11,7 @@ RSpec.describe Licensee::License do
|
|
11
11
|
let(:cc_by) { described_class.find('cc-by-4.0') }
|
12
12
|
let(:unlicense) { described_class.find('unlicense') }
|
13
13
|
let(:other) { described_class.find('other') }
|
14
|
+
let(:no_license) { described_class.find('no-license') }
|
14
15
|
let(:gpl) { described_class.find('gpl-3.0') }
|
15
16
|
let(:lgpl) { described_class.find('lgpl-3.0') }
|
16
17
|
let(:content_hash) { '46cdc03462b9af57968df67b450cc4372ac41f53' }
|
@@ -168,6 +169,11 @@ RSpec.describe Licensee::License do
|
|
168
169
|
expect(gpl.spdx_id).to eql('GPL-3.0')
|
169
170
|
end
|
170
171
|
|
172
|
+
it 'exposes special SPDX ID for pseudo licenses' do
|
173
|
+
expect(other.spdx_id).to eql('NOASSERTION')
|
174
|
+
expect(no_license.spdx_id).to eql('NONE')
|
175
|
+
end
|
176
|
+
|
171
177
|
context '#other?' do
|
172
178
|
it 'knows MIT is not other' do
|
173
179
|
expect(gpl).to_not be_other
|
@@ -26,7 +26,8 @@ RSpec.describe Licensee::Matchers::Copyright do
|
|
26
26
|
'Comma-separated date' => 'Copyright (c) 2003, 2004 Ben Balter',
|
27
27
|
'Hyphen-separated date' => 'Copyright (c) 2003-2004 Ben Balter',
|
28
28
|
'ASCII-8BIT encoded' => "Copyright \xC2\xA92015 Ben Balter`",
|
29
|
-
'No year' => 'Copyright Ben Balter'
|
29
|
+
'No year' => 'Copyright Ben Balter',
|
30
|
+
'Multiline' => "Copyright Ben Balter\nCopyright Another Entity"
|
30
31
|
.force_encoding('ASCII-8BIT')
|
31
32
|
}.each do |description, notice|
|
32
33
|
context "with a #{description} notice" do
|
@@ -1,5 +1,6 @@
|
|
1
1
|
RSpec.describe Licensee::ProjectFiles::LicenseFile do
|
2
2
|
let(:filename) { 'LICENSE.txt' }
|
3
|
+
let(:gpl) { Licensee::License.find('gpl-3.0') }
|
3
4
|
let(:mit) { Licensee::License.find('mit') }
|
4
5
|
let(:content) { sub_copyright_info(mit) }
|
5
6
|
let(:content_hash) { '46cdc03462b9af57968df67b450cc4372ac41f53' }
|
@@ -26,6 +27,23 @@ RSpec.describe Licensee::ProjectFiles::LicenseFile do
|
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
30
|
+
context 'with a non-templated license' do
|
31
|
+
let(:content) { sub_copyright_info(gpl) }
|
32
|
+
|
33
|
+
it "doesn't match" do
|
34
|
+
expect(subject.attribution).to be_nil
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'with a copyright file' do
|
39
|
+
let(:filename) { 'COPYRIGHT' }
|
40
|
+
let(:content) { 'Copyright (C) 2015 Ben Balter' }
|
41
|
+
|
42
|
+
it "doesn't match" do
|
43
|
+
expect(subject.attribution).to eql(content)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
29
47
|
it 'creates the wordset' do
|
30
48
|
expect(subject.wordset.count).to eql(91)
|
31
49
|
expect(subject.wordset.first).to eql('permission')
|
@@ -215,7 +233,6 @@ Creative Commons Attribution-NonCommercial 4.0
|
|
215
233
|
end
|
216
234
|
|
217
235
|
context 'GPL' do
|
218
|
-
let(:gpl) { Licensee::License.find('gpl-3.0') }
|
219
236
|
let(:content) { sub_copyright_info(gpl) }
|
220
237
|
|
221
238
|
it 'knows its GPL' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: licensee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.9.0
|
4
|
+
version: 9.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Balter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
@@ -339,9 +339,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
339
339
|
version: '2.1'
|
340
340
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
341
341
|
requirements:
|
342
|
-
- - "
|
342
|
+
- - ">="
|
343
343
|
- !ruby/object:Gem::Version
|
344
|
-
version:
|
344
|
+
version: '0'
|
345
345
|
requirements: []
|
346
346
|
rubyforge_project:
|
347
347
|
rubygems_version: 2.7.6
|