licensee 8.9.2 → 9.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +1 -1
  3. data/bin/licensee +42 -28
  4. data/lib/licensee.rb +14 -28
  5. data/lib/licensee/content_helper.rb +38 -12
  6. data/lib/licensee/license.rb +22 -9
  7. data/lib/licensee/matchers.rb +14 -0
  8. data/lib/licensee/matchers/cabal.rb +16 -0
  9. data/lib/licensee/matchers/{copyright_matcher.rb → copyright.rb} +1 -5
  10. data/lib/licensee/matchers/{cran_matcher.rb → cran.rb} +1 -1
  11. data/lib/licensee/matchers/{dice_matcher.rb → dice.rb} +1 -7
  12. data/lib/licensee/matchers/{dist_zilla_matcher.rb → dist_zilla.rb} +1 -1
  13. data/lib/licensee/matchers/{exact_matcher.rb → exact.rb} +2 -1
  14. data/lib/licensee/matchers/gemspec.rb +24 -0
  15. data/lib/licensee/matchers/{package_matcher.rb → matcher.rb} +5 -3
  16. data/lib/licensee/matchers/{npm_bower_matcher.rb → npm_bower.rb} +2 -2
  17. data/lib/licensee/matchers/package.rb +22 -0
  18. data/lib/licensee/project_files.rb +8 -0
  19. data/lib/licensee/project_files/license_file.rb +22 -4
  20. data/lib/licensee/project_files/package_manager_file.rb +37 -0
  21. data/lib/licensee/project_files/project_file.rb +65 -0
  22. data/lib/licensee/project_files/{readme.rb → readme_file.rb} +2 -2
  23. data/lib/licensee/projects.rb +7 -0
  24. data/lib/licensee/projects/fs_project.rb +64 -27
  25. data/lib/licensee/projects/git_project.rb +49 -43
  26. data/lib/licensee/projects/project.rb +149 -0
  27. data/lib/licensee/version.rb +1 -1
  28. data/spec/bin_spec.rb +9 -2
  29. data/spec/fixtures/crlf-license/LICENSE +674 -0
  30. data/spec/fixtures/fcpl-modified-mpl/LICENSE +193 -193
  31. data/spec/fixtures/ipsum.txt +19 -0
  32. data/spec/fixtures/license-in-parent-folder/LICENSE.txt +21 -0
  33. data/spec/fixtures/license-in-parent-folder/license-folder/LICENSE.txt +21 -0
  34. data/spec/fixtures/multiple-license-files/LICENSE +362 -0
  35. data/spec/fixtures/multiple-license-files/LICENSE.txt +21 -0
  36. data/spec/integration_spec.rb +57 -22
  37. data/spec/licensee/content_helper_spec.rb +33 -9
  38. data/spec/licensee/license_spec.rb +8 -1
  39. data/spec/licensee/matchers/cabal_matcher_spec.rb +45 -0
  40. data/spec/licensee/matchers/copyright_matcher_spec.rb +1 -1
  41. data/spec/licensee/matchers/cran_matcher_spec.rb +11 -2
  42. data/spec/licensee/matchers/dice_matcher_spec.rb +1 -2
  43. data/spec/licensee/matchers/dist_zilla_matcher_spec.rb +11 -2
  44. data/spec/licensee/matchers/exact_matcher_spec.rb +1 -1
  45. data/spec/licensee/matchers/gemspec_matcher_spec.rb +19 -1
  46. data/spec/licensee/matchers/npm_bower_matcher_spec.rb +23 -6
  47. data/spec/licensee/matchers/package_matcher_spec.rb +31 -2
  48. data/spec/licensee/project_files/license_file_spec.rb +62 -6
  49. data/spec/licensee/project_files/package_info_spec.rb +10 -1
  50. data/spec/{project_file_spec.rb → licensee/project_files/project_file_spec.rb} +14 -1
  51. data/spec/licensee/project_files/readme_spec.rb +1 -1
  52. data/spec/licensee/project_spec.rb +134 -9
  53. data/spec/licensee_spec.rb +4 -3
  54. data/spec/spec_helper.rb +12 -23
  55. data/spec/vendored_license_spec.rb +16 -13
  56. metadata +29 -17
  57. data/lib/licensee/matchers/gemspec_matcher.rb +0 -19
  58. data/lib/licensee/project.rb +0 -87
  59. data/lib/licensee/project_file.rb +0 -39
  60. data/lib/licensee/project_files/package_info.rb +0 -31
@@ -1,4 +1,4 @@
1
- RSpec.describe Licensee::Project::PackageInfo do
1
+ RSpec.describe Licensee::ProjectFiles::PackageManagerFile do
2
2
  let(:content) { '' }
3
3
  let(:filename) { '' }
4
4
  subject { described_class.new(content, filename) }
@@ -6,6 +6,7 @@ RSpec.describe Licensee::Project::PackageInfo do
6
6
  context 'name scoring' do
7
7
  {
8
8
  'licensee.gemspec' => 1.0,
9
+ 'test.cabal' => 1.0,
9
10
  'package.json' => 1.0,
10
11
  'DESCRIPTION' => 0.9,
11
12
  'dist.ini' => 0.8,
@@ -32,6 +33,14 @@ RSpec.describe Licensee::Project::PackageInfo do
32
33
  end
33
34
  end
34
35
 
36
+ context 'with cabal file ' do
37
+ let(:filename) { 'test.cabal' }
38
+
39
+ it 'returns the cabal matcher' do
40
+ expect(possible_matchers).to eql([Licensee::Matchers::Cabal])
41
+ end
42
+ end
43
+
35
44
  context 'with package.json' do
36
45
  let(:filename) { 'package.json' }
37
46
 
@@ -1,4 +1,4 @@
1
- RSpec.describe Licensee::Project::File do
1
+ RSpec.describe Licensee::ProjectFiles::ProjectFile do
2
2
  let(:filename) { 'LICENSE.txt' }
3
3
  let(:mit) { Licensee::License.find('mit') }
4
4
  let(:content) { mit.content }
@@ -30,4 +30,17 @@ RSpec.describe Licensee::Project::File do
30
30
  it 'returns the license' do
31
31
  expect(subject.license).to eql(mit)
32
32
  end
33
+
34
+ context 'with additional metadata' do
35
+ subject { described_class.new(content, name: filename, dir: Dir.pwd) }
36
+
37
+ it 'stores the filename' do
38
+ expect(subject.filename).to eql(filename)
39
+ expect(subject[:name]).to eql(filename)
40
+ end
41
+
42
+ it 'stores additional metadata' do
43
+ expect(subject[:dir]).to eql(Dir.pwd)
44
+ end
45
+ end
33
46
  end
@@ -1,4 +1,4 @@
1
- RSpec.describe Licensee::Project::Readme do
1
+ RSpec.describe Licensee::ProjectFiles::ReadmeFile do
2
2
  let(:filename) { 'README.md' }
3
3
  let(:content) { '' }
4
4
  subject { described_class.new(content, filename) }
@@ -1,11 +1,13 @@
1
- [Licensee::FSProject, Licensee::GitProject].each do |project_type|
1
+ [Licensee::Projects::FSProject,
2
+ Licensee::Projects::GitProject].each do |project_type|
2
3
  RSpec.describe project_type do
3
4
  let(:mit) { Licensee::License.find('mit') }
5
+ let(:other) { Licensee::License.find('other') }
4
6
  let(:fixture) { 'mit' }
5
7
  let(:path) { fixture_path(fixture) }
6
8
  subject { described_class.new(path) }
7
9
 
8
- if described_class == Licensee::GitProject
10
+ if described_class == Licensee::Projects::GitProject
9
11
  before do
10
12
  Dir.chdir path do
11
13
  `git init`
@@ -14,7 +16,32 @@
14
16
  end
15
17
  end
16
18
 
17
- after { FileUtils.rm_rf File.expand_path '.git', path }
19
+ after do
20
+ subject.close
21
+ FileUtils.rm_rf File.expand_path '.git', path
22
+ end
23
+ end
24
+
25
+ if described_class == Licensee::Projects::GitProject
26
+ context 'when initialized with a repo' do
27
+ let(:repo) { Rugged::Repository.new(path) }
28
+ subject { described_class.new(repo) }
29
+
30
+ it 'returns the repository' do
31
+ expect(subject.repository).to be_a(Rugged::Repository)
32
+ end
33
+ end
34
+
35
+ context 'when initialized with a revision' do
36
+ let(:revision) { subject.repository.last_commit.oid }
37
+ before do
38
+ subject.instance_variable_set('@revision', revision)
39
+ end
40
+
41
+ it 'returns the commit' do
42
+ expect(subject.send(:commit).oid).to eql(revision)
43
+ end
44
+ end
18
45
  end
19
46
 
20
47
  it 'returns the license' do
@@ -23,12 +50,12 @@
23
50
  end
24
51
 
25
52
  it 'returns the matched file' do
26
- expect(subject.matched_file).to be_a(Licensee::Project::LicenseFile)
53
+ expect(subject.matched_file).to be_a(Licensee::ProjectFiles::LicenseFile)
27
54
  expect(subject.matched_file.filename).to eql('LICENSE.txt')
28
55
  end
29
56
 
30
57
  it 'returns the license file' do
31
- expect(subject.license_file).to be_a(Licensee::Project::LicenseFile)
58
+ expect(subject.license_file).to be_a(Licensee::ProjectFiles::LicenseFile)
32
59
  expect(subject.license_file.filename).to eql('LICENSE.txt')
33
60
  end
34
61
 
@@ -47,7 +74,7 @@
47
74
  expect(files.count).to eql(2)
48
75
  expect(files.first[:name]).to eql('LICENSE.txt')
49
76
 
50
- if described_class == Licensee::GitProject
77
+ if described_class == Licensee::Projects::GitProject
51
78
  expect(files.first).to have_key(:oid)
52
79
  end
53
80
  end
@@ -56,6 +83,31 @@
56
83
  content = subject.send(:load_file, files.first)
57
84
  expect(content).to match('Permission is hereby granted')
58
85
  end
86
+
87
+ if described_class == Licensee::Projects::FSProject
88
+ context 'with search root argument' do
89
+ let(:fixture) { 'license-in-parent-folder/license-folder/package' }
90
+ let(:path) { fixture_path(fixture) }
91
+ let(:license_folder) { 'license-in-parent-folder/license-folder' }
92
+ let(:search_root) { fixture_path(license_folder) }
93
+ let(:subject) { described_class.new(path, search_root: search_root) }
94
+ let(:files) { subject.send(:files) }
95
+
96
+ it 'looks for licenses in parent directories up to the search root' do
97
+ # should not include the license in 'license-in-parent-folder' dir
98
+ expect(files.count).to eql(1)
99
+ expect(files.first[:name]).to eql('LICENSE.txt')
100
+ end
101
+ end
102
+
103
+ context 'without search root argument' do
104
+ let(:fixture) { 'license-in-parent-folder/license-folder/package' }
105
+
106
+ it 'looks for licenses in current directory only' do
107
+ expect(files.count).to eql(0)
108
+ end
109
+ end
110
+ end
59
111
  end
60
112
 
61
113
  context 'encoding correctness' do
@@ -73,7 +125,7 @@
73
125
  subject { described_class.new(path, detect_readme: true) }
74
126
 
75
127
  it 'returns the readme' do
76
- expect(subject.readme_file).to be_a(Licensee::Project::Readme)
128
+ expect(subject.readme_file).to be_a(Licensee::ProjectFiles::ReadmeFile)
77
129
  expect(subject.readme_file.filename).to eql('README.md')
78
130
  end
79
131
 
@@ -89,7 +141,7 @@
89
141
  # Using a `.gemspec` extension in the fixture breaks `gem release`
90
142
  before do
91
143
  FileUtils.cp("#{path}/project._gemspec", "#{path}/project.gemspec")
92
- if described_class == Licensee::GitProject
144
+ if described_class == Licensee::Projects::GitProject
93
145
  Dir.chdir path do
94
146
  `git add project.gemspec`
95
147
  `git commit -m 'add real gemspec'`
@@ -104,7 +156,8 @@
104
156
  subject { described_class.new(path, detect_packages: true) }
105
157
 
106
158
  it 'returns the package file' do
107
- expect(subject.package_file).to be_a(Licensee::Project::PackageInfo)
159
+ expected = Licensee::ProjectFiles::PackageManagerFile
160
+ expect(subject.package_file).to be_a(expected)
108
161
  expect(subject.package_file.filename).to eql('project.gemspec')
109
162
  end
110
163
 
@@ -113,5 +166,77 @@
113
166
  expect(subject.license).to eql(mit)
114
167
  end
115
168
  end
169
+
170
+ context 'multiple licenses' do
171
+ let(:fixture) { 'multiple-license-files' }
172
+
173
+ it 'returns other for license' do
174
+ expect(subject.license).to eql(other)
175
+ end
176
+
177
+ it 'returns nil for matched_file' do
178
+ expect(subject.matched_file).to be_nil
179
+ end
180
+
181
+ it 'returns nil for license_file' do
182
+ expect(subject.license_file).to be_nil
183
+ end
184
+
185
+ it 'returns both licenses' do
186
+ expect(subject.licenses.count).to eql(2)
187
+ expect(subject.licenses.first).to eql(Licensee::License.find('mpl-2.0'))
188
+ expect(subject.licenses.last).to eql(mit)
189
+ end
190
+
191
+ it 'returns both matched_files' do
192
+ expect(subject.matched_files.count).to eql(2)
193
+ expect(subject.matched_files.first.filename).to eql('LICENSE')
194
+ expect(subject.matched_files.last.filename).to eql('LICENSE.txt')
195
+ end
196
+
197
+ it 'returns both license_files' do
198
+ expect(subject.license_files.count).to eql(2)
199
+ expect(subject.license_files.first.filename).to eql('LICENSE')
200
+ expect(subject.license_files.last.filename).to eql('LICENSE.txt')
201
+ end
202
+ end
203
+
204
+ context 'lgpl' do
205
+ let(:gpl) { Licensee::License.find('gpl-3.0') }
206
+ let(:lgpl) { Licensee::License.find('lgpl-3.0') }
207
+ let(:fixture) { 'lgpl' }
208
+
209
+ it 'license returns lgpl' do
210
+ expect(subject.license).to eql(lgpl)
211
+ end
212
+
213
+ it 'matched_file returns copying.lesser' do
214
+ expect(subject.matched_file).to_not be_nil
215
+ expect(subject.matched_file.filename).to eql('COPYING.lesser')
216
+ end
217
+
218
+ it 'license_file returns copying.lesser' do
219
+ expect(subject.license_file).to_not be_nil
220
+ expect(subject.license_file.filename).to eql('COPYING.lesser')
221
+ end
222
+
223
+ it 'returns both licenses' do
224
+ expect(subject.licenses.count).to eql(2)
225
+ expect(subject.licenses.first).to eql(lgpl)
226
+ expect(subject.licenses.last).to eql(gpl)
227
+ end
228
+
229
+ it 'returns both matched_files' do
230
+ expect(subject.matched_files.count).to eql(2)
231
+ expect(subject.matched_files.first.filename).to eql('COPYING.lesser')
232
+ expect(subject.matched_files.last.filename).to eql('LICENSE')
233
+ end
234
+
235
+ it 'returns both license_files' do
236
+ expect(subject.license_files.count).to eql(2)
237
+ expect(subject.license_files.first.filename).to eql('COPYING.lesser')
238
+ expect(subject.license_files.last.filename).to eql('LICENSE')
239
+ end
240
+ end
116
241
  end
117
242
  end
@@ -18,20 +18,21 @@ RSpec.describe Licensee do
18
18
  end
19
19
 
20
20
  it 'inits a project' do
21
- expect(Licensee.project(project_path)).to be_a(Licensee::Project)
21
+ expect(Licensee.project(project_path)).to be_a(Licensee::Projects::Project)
22
22
  end
23
23
 
24
24
  context 'confidence threshold' do
25
25
  it 'exposes the confidence threshold' do
26
- expect(described_class.confidence_threshold).to eql(95)
26
+ expect(described_class.confidence_threshold).to eql(98)
27
27
  end
28
28
 
29
29
  it 'exposes the inverse of the confidence threshold' do
30
- expect(described_class.inverse_confidence_threshold).to eql(0.05)
30
+ expect(described_class.inverse_confidence_threshold).to eql(0.02)
31
31
  end
32
32
 
33
33
  context 'user overridden' do
34
34
  before { Licensee.confidence_threshold = 50 }
35
+ after { Licensee.confidence_threshold = nil }
35
36
 
36
37
  it 'lets the user override the confidence threshold' do
37
38
  expect(described_class.confidence_threshold).to eql(50)
data/spec/spec_helper.rb CHANGED
@@ -36,29 +36,16 @@ def sub_copyright_info(text)
36
36
  text
37
37
  end
38
38
 
39
- def wrap(text, line_width = 80)
40
- text = text.clone
41
- text.gsub!(/([^\n])\n([^\n])/, '\1 \2')
42
-
43
- text = text.split("\n").collect do |line|
44
- if line.length > line_width
45
- line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip
46
- else
47
- line
48
- end
49
- end * "\n"
50
-
51
- text.strip
52
- end
53
-
54
39
  # Add random words to the end of a license to test similarity tollerances
55
40
  def add_random_words(string, count = 5)
56
- string = string.dup
57
- ipsum = %w[lorem ipsum dolor sit amet consectetur adipiscing elit]
41
+ words = string.dup.split(' ')
42
+ ipsum = File.read(fixture_path('ipsum.txt')).split(' ')
58
43
  count.times do
59
- string << " #{ipsum[Random.rand(ipsum.length)]}"
44
+ word = ipsum[Random.rand(ipsum.length)]
45
+ index = Random.rand(words.length)
46
+ words.insert(index, word)
60
47
  end
61
- string
48
+ words.join(' ')
62
49
  end
63
50
 
64
51
  # Init git dir
@@ -85,14 +72,15 @@ end
85
72
 
86
73
  RSpec::Matchers.define :be_detected_as do |expected|
87
74
  match do |actual|
88
- @expected_as_array = [expected.content]
89
- license_file = Licensee::Project::LicenseFile.new(actual, 'LICENSE')
75
+ @expected_as_array = [expected.content_normalized(wrap: 80)]
76
+ license_file = Licensee::ProjectFiles::LicenseFile.new(actual, 'LICENSE')
77
+ @actual = license_file.content_normalized(wrap: 80)
90
78
  return false unless license_file.license
91
79
  values_match? expected, license_file.license
92
80
  end
93
81
 
94
82
  failure_message do |actual|
95
- license_file = Licensee::Project::LicenseFile.new(actual, 'LICENSE')
83
+ license_file = Licensee::ProjectFiles::LicenseFile.new(actual, 'LICENSE')
96
84
  license_name = expected.meta['spdx-id'] || expected.key
97
85
  similarity = expected.similarity(license_file)
98
86
  msg = "Expected the content to match the #{license_name} license"
@@ -101,9 +89,10 @@ RSpec::Matchers.define :be_detected_as do |expected|
101
89
  end
102
90
 
103
91
  failure_message_when_negated do |actual|
104
- license_file = Licensee::Project::LicenseFile.new(actual, 'LICENSE')
92
+ license_file = Licensee::ProjectFiles::LicenseFile.new(actual, 'LICENSE')
105
93
  license_name = expected.meta['spdx-id'] || expected.key
106
94
  similarity = expected.similarity(license_file)
95
+
107
96
  msg = "Expected the content to *not* match the #{license_name} license"
108
97
  msg << " (#{format_percent(similarity)} similarity)"
109
98
  end
@@ -1,13 +1,15 @@
1
- RSpec.describe 'vendored licenes' do
1
+ RSpec.describe 'vendored licenses' do
2
2
  let(:filename) { 'LICENSE.txt' }
3
- let(:license_file) { Licensee::Project::LicenseFile.new(content, filename) }
3
+ let(:license_file) do
4
+ Licensee::ProjectFiles::LicenseFile.new(content, filename)
5
+ end
4
6
  let(:detected_license) { license_file.license if license_file }
5
7
  let(:wtfpl) { Licensee::License.find('wtfpl') }
6
8
 
7
9
  Licensee.licenses(hidden: true).each do |license|
8
10
  next if license.pseudo_license?
9
11
 
10
- context "the #{license.meta['spdx-id'] || license.key} license" do
12
+ context "the #{license.name} license" do
11
13
  let(:content_with_copyright) { sub_copyright_info(license.content) }
12
14
  let(:content) { content_with_copyright }
13
15
 
@@ -17,8 +19,10 @@ RSpec.describe 'vendored licenes' do
17
19
 
18
20
  context 'when modified' do
19
21
  let(:line_length) { 60 }
20
- let(:random_words) { 3 }
21
- let(:content_rewrapped) { wrap(content_with_copyright, line_length) }
22
+ let(:random_words) { 75 }
23
+ let(:content_rewrapped) do
24
+ Licensee::ContentHelper.wrap(content_with_copyright, line_length)
25
+ end
22
26
  let(:content_with_random_words) do
23
27
  add_random_words(content_with_copyright, random_words)
24
28
  end
@@ -27,7 +31,6 @@ RSpec.describe 'vendored licenes' do
27
31
  let(:content) { wtfpl.send :strip_title, content_with_copyright }
28
32
 
29
33
  it 'detects the license' do
30
- skip 'The WTFPL is too short to be modified' if license == wtfpl
31
34
  expect(content).to be_detected_as(license)
32
35
  end
33
36
  end
@@ -53,18 +56,18 @@ RSpec.describe 'vendored licenes' do
53
56
  context 'with random words added' do
54
57
  let(:content) { content_with_random_words }
55
58
 
56
- it 'detects the license' do
57
- skip 'The WTFPL is too short to be modified' if license == wtfpl
58
- expect(content).to be_detected_as(license)
59
+ it 'does not match the license' do
60
+ expect(content).to_not be_detected_as(license)
59
61
  end
60
62
  end
61
63
 
62
64
  context 'when rewrapped with random words added' do
63
- let(:content) { wrap(content_with_random_words, line_length) }
65
+ let(:content) do
66
+ Licensee::ContentHelper.wrap(content_with_random_words, line_length)
67
+ end
64
68
 
65
- it 'detects the license' do
66
- skip 'The WTFPL is too short to be modified' if license == wtfpl
67
- expect(content).to be_detected_as(license)
69
+ it 'does not match the license' do
70
+ expect(content).to_not be_detected_as(license)
68
71
  end
69
72
  end
70
73
  end
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: 8.9.2
4
+ version: 9.0.0.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Balter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-22 00:00:00.000000000 Z
11
+ date: 2017-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rugged
@@ -108,21 +108,26 @@ files:
108
108
  - lib/licensee.rb
109
109
  - lib/licensee/content_helper.rb
110
110
  - lib/licensee/license.rb
111
- - lib/licensee/matchers/copyright_matcher.rb
112
- - lib/licensee/matchers/cran_matcher.rb
113
- - lib/licensee/matchers/dice_matcher.rb
114
- - lib/licensee/matchers/dist_zilla_matcher.rb
115
- - lib/licensee/matchers/exact_matcher.rb
116
- - lib/licensee/matchers/gemspec_matcher.rb
117
- - lib/licensee/matchers/npm_bower_matcher.rb
118
- - lib/licensee/matchers/package_matcher.rb
119
- - lib/licensee/project.rb
120
- - lib/licensee/project_file.rb
111
+ - lib/licensee/matchers.rb
112
+ - lib/licensee/matchers/cabal.rb
113
+ - lib/licensee/matchers/copyright.rb
114
+ - lib/licensee/matchers/cran.rb
115
+ - lib/licensee/matchers/dice.rb
116
+ - lib/licensee/matchers/dist_zilla.rb
117
+ - lib/licensee/matchers/exact.rb
118
+ - lib/licensee/matchers/gemspec.rb
119
+ - lib/licensee/matchers/matcher.rb
120
+ - lib/licensee/matchers/npm_bower.rb
121
+ - lib/licensee/matchers/package.rb
122
+ - lib/licensee/project_files.rb
121
123
  - lib/licensee/project_files/license_file.rb
122
- - lib/licensee/project_files/package_info.rb
123
- - lib/licensee/project_files/readme.rb
124
+ - lib/licensee/project_files/package_manager_file.rb
125
+ - lib/licensee/project_files/project_file.rb
126
+ - lib/licensee/project_files/readme_file.rb
127
+ - lib/licensee/projects.rb
124
128
  - lib/licensee/projects/fs_project.rb
125
129
  - lib/licensee/projects/git_project.rb
130
+ - lib/licensee/projects/project.rb
126
131
  - lib/licensee/rule.rb
127
132
  - lib/licensee/version.rb
128
133
  - spec/bin_spec.rb
@@ -130,22 +135,29 @@ files:
130
135
  - spec/fixtures/cc-by-nc-sa/LICENSE
131
136
  - spec/fixtures/cc-by-nd/LICENSE
132
137
  - spec/fixtures/copyright-encoding/COPYING
138
+ - spec/fixtures/crlf-license/LICENSE
133
139
  - spec/fixtures/description-license/DESCRIPTION
134
140
  - spec/fixtures/description-license/LICENSE
135
141
  - spec/fixtures/fcpl-modified-mpl/LICENSE
136
142
  - spec/fixtures/gemspec/project._gemspec
137
143
  - spec/fixtures/gpl3-without-instructions/LICENSE
144
+ - spec/fixtures/ipsum.txt
138
145
  - spec/fixtures/lgpl/COPYING.lesser
139
146
  - spec/fixtures/lgpl/LICENSE
140
147
  - spec/fixtures/license-folder/README.md
148
+ - spec/fixtures/license-in-parent-folder/LICENSE.txt
149
+ - spec/fixtures/license-in-parent-folder/license-folder/LICENSE.txt
141
150
  - spec/fixtures/mit/LICENSE.txt
142
151
  - spec/fixtures/mit/README.md
143
152
  - spec/fixtures/mpl-without-hrs/LICENSE
153
+ - spec/fixtures/multiple-license-files/LICENSE
154
+ - spec/fixtures/multiple-license-files/LICENSE.txt
144
155
  - spec/fixtures/readme/README.md
145
156
  - spec/fixtures/wrk-modified-apache/LICENSE
146
157
  - spec/integration_spec.rb
147
158
  - spec/licensee/content_helper_spec.rb
148
159
  - spec/licensee/license_spec.rb
160
+ - spec/licensee/matchers/cabal_matcher_spec.rb
149
161
  - spec/licensee/matchers/copyright_matcher_spec.rb
150
162
  - spec/licensee/matchers/cran_matcher_spec.rb
151
163
  - spec/licensee/matchers/dice_matcher_spec.rb
@@ -156,11 +168,11 @@ files:
156
168
  - spec/licensee/matchers/package_matcher_spec.rb
157
169
  - spec/licensee/project_files/license_file_spec.rb
158
170
  - spec/licensee/project_files/package_info_spec.rb
171
+ - spec/licensee/project_files/project_file_spec.rb
159
172
  - spec/licensee/project_files/readme_spec.rb
160
173
  - spec/licensee/project_spec.rb
161
174
  - spec/licensee/rule_spec.rb
162
175
  - spec/licensee_spec.rb
163
- - spec/project_file_spec.rb
164
176
  - spec/spec_helper.rb
165
177
  - spec/vendored_license_spec.rb
166
178
  - vendor/choosealicense.com/_data/fields.yml
@@ -211,9 +223,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
223
  version: '2.1'
212
224
  required_rubygems_version: !ruby/object:Gem::Requirement
213
225
  requirements:
214
- - - ">="
226
+ - - ">"
215
227
  - !ruby/object:Gem::Version
216
- version: '0'
228
+ version: 1.3.1
217
229
  requirements: []
218
230
  rubyforge_project:
219
231
  rubygems_version: 2.6.11