license_finder 0.9.4-java → 0.9.5-java

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/.gitignore +0 -7
  3. data/.travis.yml +1 -3
  4. data/CHANGELOG.rdoc +13 -0
  5. data/db/migrate/201307251004_data_fix_manual_licenses.rb +2 -2
  6. data/db/migrate/201307251107_reassociate_license.rb +18 -18
  7. data/db/migrate/201311192002_add_manually_approved_to_dependencies.rb +7 -0
  8. data/db/migrate/201311192003_reassociate_manual_approval.rb +14 -0
  9. data/db/migrate/201311192010_drop_approvals.rb +5 -0
  10. data/features/cli.feature +1 -1
  11. data/features/html_report.feature +1 -1
  12. data/features/{non_bundler_dependencies.feature → manually_managed_dependencies.feature} +6 -6
  13. data/features/step_definitions/html_report_steps.rb +2 -9
  14. data/features/step_definitions/{non_bundler_steps.rb → manually_managed_steps.rb} +0 -0
  15. data/features/step_definitions/shared_steps.rb +4 -8
  16. data/lib/license_finder.rb +21 -17
  17. data/lib/license_finder/bower.rb +3 -34
  18. data/lib/license_finder/bower_package.rb +63 -0
  19. data/lib/license_finder/bundler.rb +73 -0
  20. data/lib/license_finder/bundler_package.rb +33 -0
  21. data/lib/license_finder/cli.rb +33 -35
  22. data/lib/license_finder/dependency_manager.rb +14 -23
  23. data/lib/license_finder/license/apache2.rb +1 -1
  24. data/lib/license_finder/license/lgpl.rb +1 -0
  25. data/lib/license_finder/npm.rb +22 -39
  26. data/lib/license_finder/npm_package.rb +61 -0
  27. data/lib/license_finder/package.rb +14 -80
  28. data/lib/license_finder/package_saver.rb +13 -75
  29. data/lib/license_finder/pip.rb +21 -33
  30. data/lib/license_finder/pip_package.rb +51 -0
  31. data/lib/license_finder/platform.rb +3 -15
  32. data/lib/license_finder/possible_license_file.rb +0 -4
  33. data/lib/license_finder/possible_license_files.rb +4 -0
  34. data/lib/license_finder/tables.rb +2 -2
  35. data/lib/license_finder/tables/bundler_group.rb +3 -0
  36. data/lib/license_finder/tables/dependency.rb +43 -18
  37. data/lib/license_finder/tables/license_alias.rb +4 -0
  38. data/lib/license_finder/yml_to_sql.rb +22 -30
  39. data/license_finder.gemspec +3 -3
  40. data/readme.md +5 -5
  41. data/spec/lib/license_finder/bower_package_spec.rb +56 -0
  42. data/spec/lib/license_finder/bower_spec.rb +3 -24
  43. data/spec/lib/license_finder/bundler_package_spec.rb +62 -0
  44. data/spec/lib/license_finder/{bundle_spec.rb → bundler_spec.rb} +7 -7
  45. data/spec/lib/license_finder/cli_spec.rb +6 -6
  46. data/spec/lib/license_finder/dependency_manager_spec.rb +14 -15
  47. data/spec/lib/license_finder/html_report_spec.rb +2 -3
  48. data/spec/lib/license_finder/markdown_report_spec.rb +4 -4
  49. data/spec/lib/license_finder/npm_package_spec.rb +51 -0
  50. data/spec/lib/license_finder/npm_spec.rb +25 -25
  51. data/spec/lib/license_finder/package_saver_spec.rb +50 -190
  52. data/spec/lib/license_finder/pip_package_spec.rb +74 -0
  53. data/spec/lib/license_finder/pip_spec.rb +33 -55
  54. data/spec/lib/license_finder/tables/dependency_spec.rb +83 -32
  55. data/spec/lib/license_finder/yml_to_sql_spec.rb +5 -12
  56. data/spec/spec_helper.rb +22 -2
  57. metadata +30 -18
  58. data/lib/license_finder/bundle.rb +0 -74
  59. data/lib/license_finder/tables/approval.rb +0 -4
  60. data/spec/lib/license_finder/package_spec.rb +0 -98
@@ -1,9 +1,9 @@
1
1
  require './lib/license_finder/platform'
2
2
 
3
3
  Gem::Specification.new do |s|
4
- s.required_ruby_version = '>= 1.9.2'
4
+ s.required_ruby_version = '>= 1.9.3'
5
5
  s.name = "license_finder"
6
- s.version = "0.9.4"
6
+ s.version = "0.9.5"
7
7
  s.authors = ["Jacob Maine", "Matthew Kane Parker", "Ian Lesperance", "David Edwards", "Paul Meskers", "Brent Wheeldon", "Trevor John", "David Tengdin", "William Ramsey"]
8
8
  s.email = ["licensefinder@pivotalabs.com"]
9
9
  s.homepage = "https://github.com/pivotal/LicenseFinder"
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency "sequel"
24
24
  s.add_dependency "thor"
25
25
  s.add_dependency "rake"
26
- s.add_dependency "httparty", "0.11.0"
26
+ s.add_dependency "httparty"
27
27
  s.add_dependency LicenseFinder::Platform.sqlite_gem
28
28
 
29
29
  %w(rspec xpath cucumber pry).each do |gem|
data/readme.md CHANGED
@@ -135,25 +135,25 @@ To remove a group from the ignored Bundler groups:
135
135
  $ license_finder ignored_bundler_groups remove development
136
136
  ```
137
137
 
138
- ### Managing unsupported dependencies
138
+ ### Manually managing dependencies
139
139
 
140
- license_finder can track dependencies that Bundler/PyPi/NPM doesn't know about (JS libraries that don't
140
+ license_finder can track dependencies that your package managers don't know about (JS libraries that don't
141
141
  appear in your Gemfile/requirements.txt/package.json, etc.)
142
142
 
143
143
  ```sh
144
144
  $ license_finder dependencies add MIT my_js_dep 0.1.2
145
145
  ```
146
146
 
147
- To automatically approve a non-bundler dependency when you add it, use:
147
+ To automatically approve an unmanaged dependency when you add it, use:
148
148
 
149
149
  ```sh
150
150
  $ license_finder dependencies add MIT my_js_dep 0.1.2 --approve
151
151
  ```
152
152
 
153
153
  The version is optional. Run `license_finder dependencies help` for additional documentation about
154
- managing non-Bundler dependencies.
154
+ managing these dependencies.
155
155
 
156
- license_finder cannot automatically detect when a non-Bundler dependency has been removed from your
156
+ license_finder cannot automatically detect when one of these dependencies has been removed from your
157
157
  project, so you can use:
158
158
 
159
159
  ```sh
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ module LicenseFinder
4
+ describe BowerPackage do
5
+ subject do
6
+ described_class.new(
7
+ "canonicalDir" => "/path/to/thing",
8
+ "pkgMeta" => {
9
+ "name" => "dependency-library",
10
+ "description" => "description",
11
+ "version" => "1.3.3.7",
12
+ "main" => "normalize.css",
13
+ "readme" => "some readme stuff"
14
+ }
15
+ )
16
+ end
17
+
18
+ it_behaves_like "it conforms to interface required by PackageSaver"
19
+
20
+ its(:name) { should == "dependency-library" }
21
+ its(:version) { should == "1.3.3.7" }
22
+ its(:summary) { should == "description" }
23
+ its(:description) { should == "some readme stuff" }
24
+
25
+ describe '#license' do
26
+ def stub_license_files(license_files)
27
+ PossibleLicenseFiles.stub(:find).with("/path/to/thing").and_return(license_files)
28
+ end
29
+
30
+ let(:package1) { { "pkgMeta" => {"license" => "MIT"} } }
31
+ let(:package2) { { "pkgMeta" => {"licenses" => [{"type" => "BSD", "url" => "github.github/github"}]} } }
32
+ let(:package3) { { "pkgMeta" => {"license" => {"type" => "PSF", "url" => "github.github/github"}} } }
33
+ let(:package4) { { "pkgMeta" => {"licenses" => ["MIT"]} } }
34
+
35
+ it 'finds the license for both license structures' do
36
+ BowerPackage.new(package1).license.should eq("MIT")
37
+ BowerPackage.new(package2).license.should eq("BSD")
38
+ BowerPackage.new(package3).license.should eq("PSF")
39
+ BowerPackage.new(package4).license.should eq("MIT")
40
+ end
41
+
42
+ it "returns a license in a file if detected" do
43
+ stub_license_files [double(:file, license: 'Detected License')]
44
+
45
+ subject.license.should == "Detected License"
46
+ end
47
+
48
+ it "returns 'other' otherwise" do
49
+ stub_license_files []
50
+
51
+ subject.license.should == "other"
52
+ end
53
+ end
54
+ end
55
+ end
56
+
@@ -35,30 +35,9 @@ module LicenseFinder
35
35
  expect(current_packages.size).to eq(2)
36
36
  expect(current_packages.first).to be_a(Package)
37
37
  end
38
-
39
- it 'memoizes the current_packages' do
40
- allow(Bower).to receive(:`).with(/bower/).and_return('{}').once
41
-
42
- Bower.current_packages
43
- Bower.current_packages
44
- end
45
- end
46
-
47
- describe '.harvest_license' do
48
- let(:package1) { {"license" => "MIT"} }
49
- let(:package2) { {"licenses" => [{"type" => "BSD", "url" => "github.github/github"}]} }
50
- let(:package3) { {"license" => {"type" => "PSF", "url" => "github.github/github"}} }
51
- let(:package4) { {"licenses" => ["MIT"]} }
52
-
53
- it 'finds the license for both license structures' do
54
- Bower.harvest_license(package1).should eq("MIT")
55
- Bower.harvest_license(package2).should eq("BSD")
56
- Bower.harvest_license(package3).should eq("PSF")
57
- Bower.harvest_license(package4).should eq("MIT")
58
- end
59
38
  end
60
39
 
61
- describe '.has_package_file?' do
40
+ describe '.active?' do
62
41
  let(:package) { Pathname.new('bower.json').expand_path }
63
42
 
64
43
  context 'with a bower.json file' do
@@ -67,7 +46,7 @@ module LicenseFinder
67
46
  end
68
47
 
69
48
  it 'returns true' do
70
- expect(Bower.has_package_file?).to eq(true)
49
+ expect(Bower.active?).to eq(true)
71
50
  end
72
51
  end
73
52
 
@@ -77,7 +56,7 @@ module LicenseFinder
77
56
  end
78
57
 
79
58
  it 'returns false' do
80
- expect(Bower.has_package_file?).to eq(false)
59
+ expect(Bower.active?).to eq(false)
81
60
  end
82
61
  end
83
62
  end
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+
3
+ module LicenseFinder
4
+ describe BundlerPackage do
5
+ subject { described_class.new(gemspec, nil) }
6
+
7
+ it_behaves_like "it conforms to interface required by PackageSaver"
8
+
9
+ let(:gemspec) do
10
+ Gem::Specification.new do |s|
11
+ s.name = 'spec_name'
12
+ s.version = '2.1.3'
13
+ s.summary = 'summary'
14
+ s.description = 'description'
15
+ s.homepage = 'homepage'
16
+
17
+ s.add_dependency 'foo'
18
+ end
19
+ end
20
+
21
+ its(:name) { should == 'spec_name' }
22
+ its(:version) { should == '2.1.3' }
23
+ its(:summary) { should == "summary" }
24
+ its(:description) { should == "description" }
25
+ its(:groups) { should == [] }
26
+ its(:children) { should == [] }
27
+
28
+ describe "#license" do
29
+ def stub_license_files(license_files)
30
+ PossibleLicenseFiles.stub(:find).and_return(license_files)
31
+ end
32
+
33
+ it "returns the license from the gemspec if provided" do
34
+ gemspec.stub(:license).and_return('Gemspec License')
35
+
36
+ subject.license.should == "Gemspec License"
37
+ end
38
+
39
+ it "returns a license in a file if detected" do
40
+ stub_license_files [double(:file, license: 'Detected License')]
41
+
42
+ subject.license.should == "Detected License"
43
+ end
44
+
45
+ it "returns 'other' otherwise" do
46
+ stub_license_files []
47
+
48
+ subject.license.should == "other"
49
+ end
50
+ end
51
+
52
+ describe "#groups" do
53
+ subject { described_class.new(gemspec, bundler_dependency) }
54
+
55
+ let(:bundler_dependency) { double(:dependency, groups: [1, 2, 3]) }
56
+
57
+ it "returns bundler dependency's groups" do
58
+ subject.groups.should == bundler_dependency.groups
59
+ end
60
+ end
61
+ end
62
+ end
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  module LicenseFinder
4
- describe Bundle do
4
+ describe Bundler do
5
5
  let(:definition) do
6
6
  double('definition', {
7
7
  :dependencies => [],
@@ -26,15 +26,15 @@ module LicenseFinder
26
26
  end
27
27
  end
28
28
 
29
- describe '.current_gems' do
29
+ describe '.current_packages' do
30
30
  subject do
31
- Bundle.current_gems(config)
31
+ Bundler.current_packages(config)
32
32
  end
33
33
 
34
34
  let(:config) { double(:config, ignore_groups: ['dev', 'test']) }
35
35
 
36
36
  before do
37
- Bundler::Definition.stub(:build).and_return(definition)
37
+ ::Bundler::Definition.stub(:build).and_return(definition)
38
38
  end
39
39
 
40
40
  it "should have 2 dependencies" do
@@ -63,7 +63,7 @@ module LicenseFinder
63
63
  end
64
64
  end
65
65
 
66
- describe '.has_gemfile?' do
66
+ describe '.active?' do
67
67
  let(:gemfile) { Pathname.new('Gemfile').expand_path }
68
68
 
69
69
  before :each do
@@ -74,7 +74,7 @@ module LicenseFinder
74
74
  it 'returns false' do
75
75
  allow(File).to receive(:exists?).with(gemfile).and_return(false)
76
76
 
77
- Bundle.has_gemfile?.should == false
77
+ Bundler.active?.should == false
78
78
  end
79
79
  end
80
80
 
@@ -82,7 +82,7 @@ module LicenseFinder
82
82
  it 'returns true' do
83
83
  allow(File).to receive(:exists?).with(gemfile).and_return(true)
84
84
 
85
- Bundle.has_gemfile?.should == true
85
+ Bundler.active?.should == true
86
86
  end
87
87
  end
88
88
  end
@@ -5,7 +5,7 @@ module LicenseFinder
5
5
  describe Dependencies do
6
6
  describe "add" do
7
7
  it "adds a dependency" do
8
- DependencyManager.should_receive(:create_non_bundler).with("MIT", "js_dep", "1.2.3")
8
+ DependencyManager.should_receive(:create_manually_managed).with("MIT", "js_dep", "1.2.3")
9
9
 
10
10
  silence_stdout do
11
11
  subject.add("MIT", "js_dep", "1.2.3")
@@ -13,7 +13,7 @@ module LicenseFinder
13
13
  end
14
14
 
15
15
  it "does not require a version" do
16
- DependencyManager.should_receive(:create_non_bundler).with("MIT", "js_dep", nil)
16
+ DependencyManager.should_receive(:create_manually_managed).with("MIT", "js_dep", nil)
17
17
 
18
18
  silence_stdout do
19
19
  subject.add("MIT", "js_dep")
@@ -21,7 +21,7 @@ module LicenseFinder
21
21
  end
22
22
 
23
23
  it "has an --approve option to approve the added dependency" do
24
- DependencyManager.should_receive(:create_non_bundler).with("MIT", "js_dep", "1.2.3")
24
+ DependencyManager.should_receive(:create_manually_managed).with("MIT", "js_dep", "1.2.3")
25
25
  DependencyManager.should_receive(:approve!).with("js_dep")
26
26
 
27
27
  silence_stdout do
@@ -32,7 +32,7 @@ module LicenseFinder
32
32
 
33
33
  describe "remove" do
34
34
  it "removes a dependency" do
35
- DependencyManager.should_receive(:destroy_non_bundler).with("js_dep")
35
+ DependencyManager.should_receive(:destroy_manually_managed).with("js_dep")
36
36
  silence_stdout do
37
37
  subject.remove("js_dep")
38
38
  end
@@ -160,7 +160,7 @@ module LicenseFinder
160
160
  describe Main do
161
161
  describe "default" do
162
162
  it "checks for action items" do
163
- DependencyManager.should_receive(:sync_with_bundler)
163
+ DependencyManager.should_receive(:sync_with_package_managers)
164
164
  Dependency.stub(:unapproved) { [] }
165
165
  silence_stdout do
166
166
  described_class.start([])
@@ -170,7 +170,7 @@ module LicenseFinder
170
170
 
171
171
  describe "#rescan" do
172
172
  it "resyncs with Gemfile" do
173
- DependencyManager.should_receive(:sync_with_bundler)
173
+ DependencyManager.should_receive(:sync_with_package_managers)
174
174
  Dependency.stub(:unapproved) { [] }
175
175
 
176
176
  silence_stdout do
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'digest'
3
2
 
4
3
  module LicenseFinder
5
4
  describe DependencyManager do
@@ -22,29 +21,29 @@ module LicenseFinder
22
21
  Dependency.create(name: "old dependency 1")
23
22
  Dependency.create(name: "old dependency 2")
24
23
 
25
- current_gems = [gem1, gem2]
26
- Bundle.stub(:current_gems).with(config) { current_gems }
27
- PackageSaver.should_receive(:save_packages).with(current_gems).and_return([cur1, cur2])
24
+ current_packages = [gem1, gem2]
25
+ Bundler.stub(:current_packages) { current_packages }
26
+ PackageSaver.should_receive(:save_all).with(current_packages).and_return([cur1, cur2])
28
27
 
29
- described_class.sync_with_bundler
28
+ described_class.sync_with_package_managers
30
29
  Dependency.all.map(&:name).should =~ [cur1, cur2, man1].map(&:name)
31
30
  end
32
31
  end
33
32
 
34
- describe ".create_non_bundler" do
33
+ describe ".create_manually_managed" do
35
34
  it "should add a Dependency" do
36
35
  expect do
37
- described_class.create_non_bundler("MIT", "js_dep", "0.0.0")
36
+ described_class.create_manually_managed("MIT", "js_dep", "0.0.0")
38
37
  end.to change(Dependency, :count).by(1)
39
38
  end
40
39
 
41
40
  it "should mark the dependency as manual" do
42
- described_class.create_non_bundler("MIT", "js_dep", "0.0.0")
41
+ described_class.create_manually_managed("MIT", "js_dep", "0.0.0")
43
42
  .should be_manual
44
43
  end
45
44
 
46
45
  it "should set the appropriate values" do
47
- dep = described_class.create_non_bundler("GPL", "js_dep", "0.0.0")
46
+ dep = described_class.create_manually_managed("GPL", "js_dep", "0.0.0")
48
47
  dep.name.should == "js_dep"
49
48
  dep.version.should == "0.0.0"
50
49
  dep.license.name.should == "GPL"
@@ -53,16 +52,16 @@ module LicenseFinder
53
52
 
54
53
  it "should complain if the dependency already exists" do
55
54
  Dependency.create(name: "current dependency 1")
56
- expect { described_class.create_non_bundler("GPL", "current dependency 1", "0.0.0") }
55
+ expect { described_class.create_manually_managed("GPL", "current dependency 1", "0.0.0") }
57
56
  .to raise_error(LicenseFinder::Error)
58
57
  end
59
58
  end
60
59
 
61
- describe ".destroy_non_bundler" do
62
- it "should remove a non bundler Dependency" do
63
- described_class.create_non_bundler("GPL", "a non-bundler dep", nil)
60
+ describe ".destroy_manually_managed" do
61
+ it "should remove a manually managed Dependency" do
62
+ described_class.create_manually_managed("GPL", "a manually managed dep", nil)
64
63
  expect do
65
- described_class.destroy_non_bundler("a non-bundler dep")
64
+ described_class.destroy_manually_managed("a manually managed dep")
66
65
  end.to change(Dependency, :count).by(-1)
67
66
  end
68
67
 
@@ -70,7 +69,7 @@ module LicenseFinder
70
69
  Dependency.create(name: "a bundler dep")
71
70
  expect do
72
71
  expect do
73
- described_class.destroy_non_bundler("a bundler dep")
72
+ described_class.destroy_manually_managed("a bundler dep")
74
73
  end.to raise_error(LicenseFinder::Error)
75
74
  end.to_not change(Dependency, :count)
76
75
  end
@@ -5,9 +5,8 @@ module LicenseFinder
5
5
  describe HtmlReport do
6
6
  describe "#to_s" do
7
7
  let(:dependency) do
8
- dep = Dependency.new name: "the-name"
8
+ dep = Dependency.new name: "the-name", manually_approved: true
9
9
  dep.license = LicenseAlias.create name: 'MIT'
10
- dep.approval = Approval.create state: true
11
10
  dep
12
11
  end
13
12
 
@@ -24,7 +23,7 @@ module LicenseFinder
24
23
  end
25
24
 
26
25
  context "when the dependency is not approved" do
27
- before { dependency.approval.state = false }
26
+ before { dependency.manually_approved = false }
28
27
 
29
28
  it "should not add an approved class to he dependency's container" do
30
29
  should have_selector ".unapproved"
@@ -6,20 +6,20 @@ module LicenseFinder
6
6
  let(:dep1) do
7
7
  dependency = Dependency.new(
8
8
  'name' => 'gem_a',
9
- 'version' => '1.0'
9
+ 'version' => '1.0',
10
+ 'manually_approved' => false
10
11
  )
11
12
  dependency.license = LicenseFinder::LicenseAlias.create(name: 'MIT')
12
- dependency.approval = Approval.create(state: false)
13
13
  dependency
14
14
  end
15
15
 
16
16
  let(:dep2) do
17
17
  dependency = Dependency.new(
18
18
  'name' => 'gem_b',
19
- 'version' => '2.3'
19
+ 'version' => '2.3',
20
+ 'manually_approved' => true
20
21
  )
21
22
  dependency.license = LicenseFinder::LicenseAlias.create(name: 'BSD')
22
- dependency.approval = Approval.create(state: true)
23
23
  dependency
24
24
  end
25
25