license_finder 0.9.1-java → 0.9.2-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/CHANGELOG.rdoc +11 -1
  2. data/features/node_dependencies.feature +9 -0
  3. data/features/python_dependencies.feature +9 -0
  4. data/features/step_definitions/html_report_steps.rb +3 -1
  5. data/features/step_definitions/node_steps.rb +8 -0
  6. data/features/step_definitions/python_steps.rb +8 -0
  7. data/features/step_definitions/shared_steps.rb +48 -0
  8. data/lib/data/licenses/Python.txt +47 -0
  9. data/lib/license_finder.rb +4 -2
  10. data/lib/license_finder/bundle.rb +15 -9
  11. data/lib/license_finder/dependency_manager.rb +14 -1
  12. data/lib/license_finder/license/apache2.rb +1 -1
  13. data/lib/license_finder/license/bsd.rb +1 -1
  14. data/lib/license_finder/license/mit.rb +1 -1
  15. data/lib/license_finder/license/python.rb +8 -0
  16. data/lib/license_finder/npm.rb +56 -0
  17. data/lib/license_finder/{bundled_gem.rb → package.rb} +45 -3
  18. data/lib/license_finder/{bundled_gem_saver.rb → package_saver.rb} +15 -13
  19. data/lib/license_finder/pip.rb +59 -0
  20. data/lib/license_finder/reports/html_report.rb +10 -1
  21. data/lib/templates/html_report.erb +14 -12
  22. data/license_finder.gemspec +3 -1
  23. data/readme.md +10 -4
  24. data/release/manual_instructions.md +7 -6
  25. data/spec/lib/license_finder/bundle_spec.rb +24 -0
  26. data/spec/lib/license_finder/dependency_manager_spec.rb +4 -4
  27. data/spec/lib/license_finder/license/python_spec.rb +7 -0
  28. data/spec/lib/license_finder/npm_spec.rb +79 -0
  29. data/spec/lib/license_finder/{bundled_gem_saver_spec.rb → package_saver_spec.rb} +17 -17
  30. data/spec/lib/license_finder/{bundled_gem_spec.rb → package_spec.rb} +20 -2
  31. data/spec/lib/license_finder/pip_spec.rb +89 -0
  32. data/spec/spec_helper.rb +1 -0
  33. data/spec/support/license_examples.rb +1 -1
  34. metadata +58 -8
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module LicenseFinder
4
- describe BundledGem do
4
+ describe Package do
5
5
  subject { described_class.new(gemspec) }
6
6
 
7
7
  let(:gemspec) do
@@ -26,7 +26,7 @@ module LicenseFinder
26
26
 
27
27
  describe "#license" do
28
28
  subject do
29
- details = BundledGem.new(gemspec)
29
+ details = Package.new(gemspec)
30
30
  details.stub(:license_files).and_return([license_file])
31
31
  details
32
32
  end
@@ -77,4 +77,22 @@ module LicenseFinder
77
77
  end
78
78
  end
79
79
  end
80
+
81
+ describe PythonPackage do
82
+ it "calls out to Pip if no license is found using conventional means" do
83
+ allow(Pip).to receive(:license_for).and_return("PSF")
84
+
85
+ package = PythonPackage.new(OpenStruct.new(name: 'jasmine', version: '1.3.1', full_gem_path: '/foo/bar'))
86
+
87
+ expect(package.determine_license).to eq("PSF")
88
+ end
89
+
90
+ it "returns other if no license could be found" do
91
+ allow(Pip).to receive(:license_for).and_return("other")
92
+
93
+ package = PythonPackage.new(OpenStruct.new(name: 'jasmine', version: '1.3.1', full_gem_path: '/foo/bar'))
94
+
95
+ expect(package.determine_license).to eq("other")
96
+ end
97
+ end
80
98
  end
@@ -0,0 +1,89 @@
1
+ require 'spec_helper'
2
+
3
+ module LicenseFinder
4
+ describe Pip do
5
+ describe '.current_dists' do
6
+ it 'lists all the current dists' do
7
+ allow(Pip).to receive(:`).with(/python/).and_return('[["jasmine", "1.3.1", "MIT"], ["jasmine-core", "1.3.1", "MIT"]]')
8
+
9
+ current_dists = Pip.current_dists
10
+
11
+ expect(current_dists.size).to eq(2)
12
+ expect(current_dists.first).to be_a(Package)
13
+ end
14
+
15
+ it 'memoizes the current_dists' do
16
+ allow(Pip).to receive(:`).with(/python/).and_return('[]').once
17
+
18
+ Pip.current_dists
19
+ Pip.current_dists
20
+ end
21
+ end
22
+
23
+ describe '.has_requirements' do
24
+ let(:requirements) { Pathname.new('requirements.txt').expand_path }
25
+
26
+ context 'with a requirements file' do
27
+ before :each do
28
+ allow(File).to receive(:exists?).with(requirements).and_return(true)
29
+ end
30
+
31
+ it 'returns true' do
32
+ expect(Pip.has_requirements?).to eq(true)
33
+ end
34
+ end
35
+
36
+ context 'without a requirements file' do
37
+ before :each do
38
+ allow(File).to receive(:exists?).with(requirements).and_return(false)
39
+ end
40
+
41
+ it 'returns false' do
42
+ expect(Pip.has_requirements?).to eq(false)
43
+ end
44
+ end
45
+ end
46
+
47
+ describe '.license_for' do
48
+ let(:package) { PythonPackage.new(OpenStruct.new(name: 'jasmine', version: '1.3.1')) }
49
+
50
+ before :each do
51
+ stub_request(:get, "https://pypi.python.org/pypi/jasmine/1.3.1/json").
52
+ to_return(:status => 200, :body => "{}", :headers => {})
53
+ end
54
+
55
+ it 'reaches out to PyPI with the package name and version' do
56
+ Pip.license_for(package)
57
+
58
+ WebMock.should have_requested(:get, "https://pypi.python.org/pypi/jasmine/1.3.1/json")
59
+ end
60
+
61
+ it 'returns the license from info => license preferentially' do
62
+ data = { info: { license: "MIT", classifiers: [ 'License :: OSI Approved :: Apache 2.0 License' ] } }
63
+
64
+ stub_request(:get, "https://pypi.python.org/pypi/jasmine/1.3.1/json").
65
+ to_return(:status => 200, :body => JSON.generate(data), :headers => {})
66
+
67
+ expect(Pip.license_for(package)).to eq('MIT')
68
+ end
69
+
70
+ it 'returns the first license from the classifiers if no info => license exists' do
71
+ data = { info: { classifiers: [ 'License :: OSI Approved :: Apache 2.0 License' ] } }
72
+
73
+ stub_request(:get, "https://pypi.python.org/pypi/jasmine/1.3.1/json").
74
+ to_return(:status => 200, :body => JSON.generate(data), :headers => {})
75
+
76
+ expect(Pip.license_for(package)).to eq('Apache 2.0 License')
77
+ end
78
+
79
+ it 'returns other if no license can be found' do
80
+ data = {}
81
+
82
+ stub_request(:get, "https://pypi.python.org/pypi/jasmine/1.3.1/json").
83
+ to_return(:status => 200, :body => JSON.generate(data), :headers => {})
84
+
85
+ expect(Pip.license_for(package)).to eq('other')
86
+ end
87
+ end
88
+ end
89
+ end
data/spec/spec_helper.rb CHANGED
@@ -4,6 +4,7 @@ require 'bundler/setup'
4
4
  require 'pry'
5
5
  require 'license_finder'
6
6
  require 'rspec'
7
+ require 'webmock/rspec'
7
8
 
8
9
  Dir[File.join(File.dirname(__FILE__), 'support', '**', '*.rb')].each do |file|
9
10
  require file
@@ -24,7 +24,7 @@ shared_examples_for "a license matcher" do
24
24
 
25
25
  describe "#license_text" do
26
26
  it "should always produce a license text" do
27
- subject.class.license_text.should_not be_nil, "No license text found for #{subject.class}! Add a license template to lib/templates named '#{subject.class.demodulized_name}.txt'"
27
+ subject.class.license_text.should_not be_nil, "No license text found for #{subject.class}! Add a license template to lib/data/licenses named '#{subject.class.demodulized_name}.txt'"
28
28
  end
29
29
  end
30
30
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: license_finder
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.9.1
5
+ version: 0.9.2
6
6
  platform: java
7
7
  authors:
8
8
  - Jacob Maine
@@ -17,7 +17,7 @@ authors:
17
17
  autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
- date: 2013-07-30 00:00:00.000000000 Z
20
+ date: 2013-08-17 00:00:00.000000000 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: bundler
@@ -83,6 +83,22 @@ dependencies:
83
83
  none: false
84
84
  prerelease: false
85
85
  type: :runtime
86
+ - !ruby/object:Gem::Dependency
87
+ name: httparty
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - '>='
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ none: false
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ none: false
100
+ prerelease: false
101
+ type: :runtime
86
102
  - !ruby/object:Gem::Dependency
87
103
  name: jdbc-sqlite3
88
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -195,6 +211,22 @@ dependencies:
195
211
  none: false
196
212
  prerelease: false
197
213
  type: :development
214
+ - !ruby/object:Gem::Dependency
215
+ name: webmock
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ~>
219
+ - !ruby/object:Gem::Version
220
+ version: '1.13'
221
+ none: false
222
+ requirement: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - ~>
225
+ - !ruby/object:Gem::Version
226
+ version: '1.13'
227
+ none: false
228
+ prerelease: false
229
+ type: :development
198
230
  description: |2
199
231
  Do you know the licenses of all your application's dependencies? What open source software licenses will your business accept?
200
232
 
@@ -234,16 +266,20 @@ files:
234
266
  - features/cli.feature
235
267
  - features/html_report.feature
236
268
  - features/ignore_bundle_groups.feature
269
+ - features/node_dependencies.feature
237
270
  - features/non_bundler_dependencies.feature
238
271
  - features/project_name.feature
272
+ - features/python_dependencies.feature
239
273
  - features/rails_rake.feature
240
274
  - features/set_license.feature
241
275
  - features/step_definitions/approve_dependencies_steps.rb
242
276
  - features/step_definitions/cli_steps.rb
243
277
  - features/step_definitions/html_report_steps.rb
244
278
  - features/step_definitions/ignore_bundle_groups_steps.rb
279
+ - features/step_definitions/node_steps.rb
245
280
  - features/step_definitions/non_bundler_steps.rb
246
281
  - features/step_definitions/project_name_steps.rb
282
+ - features/step_definitions/python_steps.rb
247
283
  - features/step_definitions/rails_rake_steps.rb
248
284
  - features/step_definitions/set_license_steps.rb
249
285
  - features/step_definitions/shared_steps.rb
@@ -261,12 +297,11 @@ files:
261
297
  - lib/data/licenses/LGPL.txt
262
298
  - lib/data/licenses/MIT.txt
263
299
  - lib/data/licenses/NewBSD.txt
300
+ - lib/data/licenses/Python.txt
264
301
  - lib/data/licenses/Ruby.txt
265
302
  - lib/data/licenses/SimplifiedBSD.txt
266
303
  - lib/license_finder.rb
267
304
  - lib/license_finder/bundle.rb
268
- - lib/license_finder/bundled_gem.rb
269
- - lib/license_finder/bundled_gem_saver.rb
270
305
  - lib/license_finder/cli.rb
271
306
  - lib/license_finder/configuration.rb
272
307
  - lib/license_finder/dependency_manager.rb
@@ -278,9 +313,14 @@ files:
278
313
  - lib/license_finder/license/lgpl.rb
279
314
  - lib/license_finder/license/mit.rb
280
315
  - lib/license_finder/license/new_bsd.rb
316
+ - lib/license_finder/license/python.rb
281
317
  - lib/license_finder/license/ruby.rb
282
318
  - lib/license_finder/license/simplified_bsd.rb
283
319
  - lib/license_finder/license_url.rb
320
+ - lib/license_finder/npm.rb
321
+ - lib/license_finder/package.rb
322
+ - lib/license_finder/package_saver.rb
323
+ - lib/license_finder/pip.rb
284
324
  - lib/license_finder/platform.rb
285
325
  - lib/license_finder/possible_license_file.rb
286
326
  - lib/license_finder/possible_license_files.rb
@@ -329,8 +369,6 @@ files:
329
369
  - spec/fixtures/readme/Readme.markdown
330
370
  - spec/fixtures/utf8_gem/README
331
371
  - spec/lib/license_finder/bundle_spec.rb
332
- - spec/lib/license_finder/bundled_gem_saver_spec.rb
333
- - spec/lib/license_finder/bundled_gem_spec.rb
334
372
  - spec/lib/license_finder/cli_spec.rb
335
373
  - spec/lib/license_finder/configuration_spec.rb
336
374
  - spec/lib/license_finder/dependency_manager_spec.rb
@@ -342,10 +380,15 @@ files:
342
380
  - spec/lib/license_finder/license/lgpl_spec.rb
343
381
  - spec/lib/license_finder/license/mit_spec.rb
344
382
  - spec/lib/license_finder/license/new_bsd_spec.rb
383
+ - spec/lib/license_finder/license/python_spec.rb
345
384
  - spec/lib/license_finder/license/ruby_spec.rb
346
385
  - spec/lib/license_finder/license/simplified_bsd_spec.rb
347
386
  - spec/lib/license_finder/license_spec.rb
348
387
  - spec/lib/license_finder/license_url_spec.rb
388
+ - spec/lib/license_finder/npm_spec.rb
389
+ - spec/lib/license_finder/package_saver_spec.rb
390
+ - spec/lib/license_finder/package_spec.rb
391
+ - spec/lib/license_finder/pip_spec.rb
349
392
  - spec/lib/license_finder/possible_license_file_spec.rb
350
393
  - spec/lib/license_finder/possible_license_files_spec.rb
351
394
  - spec/lib/license_finder/reporter_spec.rb
@@ -393,16 +436,20 @@ test_files:
393
436
  - features/cli.feature
394
437
  - features/html_report.feature
395
438
  - features/ignore_bundle_groups.feature
439
+ - features/node_dependencies.feature
396
440
  - features/non_bundler_dependencies.feature
397
441
  - features/project_name.feature
442
+ - features/python_dependencies.feature
398
443
  - features/rails_rake.feature
399
444
  - features/set_license.feature
400
445
  - features/step_definitions/approve_dependencies_steps.rb
401
446
  - features/step_definitions/cli_steps.rb
402
447
  - features/step_definitions/html_report_steps.rb
403
448
  - features/step_definitions/ignore_bundle_groups_steps.rb
449
+ - features/step_definitions/node_steps.rb
404
450
  - features/step_definitions/non_bundler_steps.rb
405
451
  - features/step_definitions/project_name_steps.rb
452
+ - features/step_definitions/python_steps.rb
406
453
  - features/step_definitions/rails_rake_steps.rb
407
454
  - features/step_definitions/set_license_steps.rb
408
455
  - features/step_definitions/shared_steps.rb
@@ -436,8 +483,6 @@ test_files:
436
483
  - spec/fixtures/readme/Readme.markdown
437
484
  - spec/fixtures/utf8_gem/README
438
485
  - spec/lib/license_finder/bundle_spec.rb
439
- - spec/lib/license_finder/bundled_gem_saver_spec.rb
440
- - spec/lib/license_finder/bundled_gem_spec.rb
441
486
  - spec/lib/license_finder/cli_spec.rb
442
487
  - spec/lib/license_finder/configuration_spec.rb
443
488
  - spec/lib/license_finder/dependency_manager_spec.rb
@@ -449,10 +494,15 @@ test_files:
449
494
  - spec/lib/license_finder/license/lgpl_spec.rb
450
495
  - spec/lib/license_finder/license/mit_spec.rb
451
496
  - spec/lib/license_finder/license/new_bsd_spec.rb
497
+ - spec/lib/license_finder/license/python_spec.rb
452
498
  - spec/lib/license_finder/license/ruby_spec.rb
453
499
  - spec/lib/license_finder/license/simplified_bsd_spec.rb
454
500
  - spec/lib/license_finder/license_spec.rb
455
501
  - spec/lib/license_finder/license_url_spec.rb
502
+ - spec/lib/license_finder/npm_spec.rb
503
+ - spec/lib/license_finder/package_saver_spec.rb
504
+ - spec/lib/license_finder/package_spec.rb
505
+ - spec/lib/license_finder/pip_spec.rb
456
506
  - spec/lib/license_finder/possible_license_file_spec.rb
457
507
  - spec/lib/license_finder/possible_license_files_spec.rb
458
508
  - spec/lib/license_finder/reporter_spec.rb