license_finder 1.1.1 → 1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -2
  3. data/CHANGELOG.rdoc +10 -0
  4. data/Gemfile +1 -1
  5. data/README.md +363 -0
  6. data/Rakefile +30 -1
  7. data/TODO.md +28 -0
  8. data/bin/license_finder_pip.py +18 -0
  9. data/db/migrate/201410031451_rename_dependency_license_name.rb +6 -0
  10. data/features/multiple_licenses.feature +9 -0
  11. data/features/step_definitions/cli_steps.rb +9 -9
  12. data/features/step_definitions/cocoapod_steps.rb +1 -1
  13. data/features/step_definitions/configure_bundler_groups_steps.rb +3 -3
  14. data/features/step_definitions/configure_whitelist_steps.rb +4 -4
  15. data/features/step_definitions/gradle_steps.rb +1 -1
  16. data/features/step_definitions/manually_added_steps.rb +3 -3
  17. data/features/step_definitions/manually_approved_steps.rb +5 -5
  18. data/features/step_definitions/manually_assigned_license_steps.rb +4 -4
  19. data/features/step_definitions/maven_steps.rb +1 -1
  20. data/features/step_definitions/multiple_licenses_steps.rb +14 -0
  21. data/features/step_definitions/node_steps.rb +1 -1
  22. data/features/step_definitions/python_steps.rb +1 -1
  23. data/features/step_definitions/report_csv_steps.rb +3 -3
  24. data/features/step_definitions/report_html_steps.rb +5 -5
  25. data/features/step_definitions/shared_steps.rb +23 -6
  26. data/lib/license_finder.rb +3 -0
  27. data/lib/license_finder/cli.rb +13 -34
  28. data/lib/license_finder/configuration.rb +8 -4
  29. data/lib/license_finder/dependency_manager.rb +25 -15
  30. data/lib/license_finder/license.rb +8 -0
  31. data/lib/license_finder/logger.rb +59 -0
  32. data/lib/license_finder/package.rb +37 -30
  33. data/lib/license_finder/package_manager.rb +20 -0
  34. data/lib/license_finder/package_managers/bower.rb +4 -9
  35. data/lib/license_finder/package_managers/bower_package.rb +2 -1
  36. data/lib/license_finder/package_managers/bundler.rb +26 -41
  37. data/lib/license_finder/package_managers/bundler_package.rb +6 -3
  38. data/lib/license_finder/package_managers/cocoa_pods.rb +18 -10
  39. data/lib/license_finder/package_managers/cocoa_pods_package.rb +4 -3
  40. data/lib/license_finder/package_managers/gradle.rb +7 -11
  41. data/lib/license_finder/package_managers/gradle_package.rb +2 -7
  42. data/lib/license_finder/package_managers/maven.rb +5 -9
  43. data/lib/license_finder/package_managers/maven_package.rb +4 -8
  44. data/lib/license_finder/package_managers/npm.rb +6 -10
  45. data/lib/license_finder/package_managers/npm_package.rb +2 -1
  46. data/lib/license_finder/package_managers/pip.rb +11 -24
  47. data/lib/license_finder/package_managers/pip_package.rb +2 -1
  48. data/lib/license_finder/package_saver.rb +2 -2
  49. data/lib/license_finder/platform.rb +4 -0
  50. data/lib/license_finder/possible_license_file.rb +4 -0
  51. data/lib/license_finder/possible_license_files.rb +2 -1
  52. data/lib/license_finder/reports/detailed_text_report.rb +1 -1
  53. data/lib/license_finder/reports/formatted_report.rb +1 -1
  54. data/lib/license_finder/tables/dependency.rb +22 -12
  55. data/lib/license_finder/yml_to_sql.rb +1 -1
  56. data/lib/templates/html_report.erb +4 -4
  57. data/lib/templates/markdown_report.erb +4 -4
  58. data/lib/templates/text_report.erb +1 -1
  59. data/license_finder.gemspec +28 -12
  60. data/spec/lib/license_finder/cli_spec.rb +193 -185
  61. data/spec/lib/license_finder/configuration_spec.rb +46 -47
  62. data/spec/lib/license_finder/dependency_manager_spec.rb +48 -44
  63. data/spec/lib/license_finder/license/definitions_spec.rb +26 -26
  64. data/spec/lib/license_finder/license_spec.rb +25 -25
  65. data/spec/lib/license_finder/package_managers/bower_package_spec.rb +33 -17
  66. data/spec/lib/license_finder/package_managers/bower_spec.rb +35 -35
  67. data/spec/lib/license_finder/package_managers/bundler_package_spec.rb +20 -15
  68. data/spec/lib/license_finder/package_managers/bundler_spec.rb +12 -19
  69. data/spec/lib/license_finder/package_managers/cocoa_pods_package_spec.rb +8 -5
  70. data/spec/lib/license_finder/package_managers/cocoa_pods_spec.rb +20 -22
  71. data/spec/lib/license_finder/package_managers/gradle_package_spec.rb +8 -5
  72. data/spec/lib/license_finder/package_managers/gradle_spec.rb +20 -20
  73. data/spec/lib/license_finder/package_managers/maven_package_spec.rb +8 -5
  74. data/spec/lib/license_finder/package_managers/maven_spec.rb +18 -18
  75. data/spec/lib/license_finder/package_managers/npm_package_spec.rb +36 -17
  76. data/spec/lib/license_finder/package_managers/npm_spec.rb +17 -17
  77. data/spec/lib/license_finder/package_managers/pip_package_spec.rb +16 -10
  78. data/spec/lib/license_finder/package_managers/pip_spec.rb +21 -18
  79. data/spec/lib/license_finder/package_saver_spec.rb +15 -25
  80. data/spec/lib/license_finder/possible_license_file_spec.rb +5 -4
  81. data/spec/lib/license_finder/possible_license_files_spec.rb +11 -5
  82. data/spec/lib/license_finder/reports/detailed_text_report_spec.rb +3 -3
  83. data/spec/lib/license_finder/reports/html_report_spec.rb +23 -23
  84. data/spec/lib/license_finder/reports/markdown_report_spec.rb +12 -12
  85. data/spec/lib/license_finder/reports/reporter_spec.rb +11 -11
  86. data/spec/lib/license_finder/reports/text_report_spec.rb +3 -3
  87. data/spec/lib/license_finder/tables/dependency_spec.rb +59 -41
  88. data/spec/lib/license_finder/yml_to_sql_spec.rb +21 -21
  89. data/spec/lib/license_finder_spec.rb +1 -1
  90. data/spec/spec_helper.rb +0 -13
  91. data/spec/support/shared_examples_for_package.rb +46 -0
  92. data/spec/support/shared_examples_for_package_manager.rb +15 -0
  93. metadata +19 -114
  94. data/readme.md +0 -259
@@ -4,10 +4,10 @@ module LicenseFinder
4
4
  describe Configuration do
5
5
  describe ".ensure_default" do
6
6
  it "should init and use saved config" do
7
- Configuration::Persistence.should_receive(:init)
8
- Configuration::Persistence.stub(:get).and_return('whitelist' => ['Saved License'])
7
+ expect(Configuration::Persistence).to receive(:init)
8
+ allow(Configuration::Persistence).to receive(:get).and_return('whitelist' => ['Saved License'])
9
9
 
10
- described_class.ensure_default.whitelist.should == ['Saved License']
10
+ expect(described_class.ensure_default.whitelist).to eq(['Saved License'])
11
11
  end
12
12
  end
13
13
 
@@ -25,11 +25,11 @@ module LicenseFinder
25
25
  describe '.new' do
26
26
  it "should default missing attributes" do
27
27
  subject = described_class.new({})
28
- subject.whitelist.should == []
29
- subject.ignore_groups.should == []
30
- subject.ignore_dependencies.should == []
31
- subject.artifacts.dir.should == Pathname('./doc/')
32
- subject.gradle_command.should == 'gradle'
28
+ expect(subject.whitelist).to eq([])
29
+ expect(subject.ignore_groups).to eq([])
30
+ expect(subject.ignore_dependencies).to eq([])
31
+ expect(subject.artifacts.dir).to eq(Pathname('./doc/'))
32
+ expect(subject.gradle_command).to eq('gradle')
33
33
  end
34
34
 
35
35
  it "should default missing attributes even if they are saved as nils in the YAML file" do
@@ -42,12 +42,12 @@ module LicenseFinder
42
42
  "gradle_command" => nil
43
43
  }
44
44
  subject = described_class.new(attributes)
45
- subject.whitelist.should == []
46
- subject.ignore_groups.should == []
47
- subject.ignore_dependencies.should == []
48
- subject.artifacts.dir.should == Pathname('./doc/')
49
- subject.project_name.should_not be_nil
50
- subject.gradle_command.should == 'gradle'
45
+ expect(subject.whitelist).to eq([])
46
+ expect(subject.ignore_groups).to eq([])
47
+ expect(subject.ignore_dependencies).to eq([])
48
+ expect(subject.artifacts.dir).to eq(Pathname('./doc/'))
49
+ expect(subject.project_name).not_to be_nil
50
+ expect(subject.gradle_command).to eq('gradle')
51
51
  end
52
52
 
53
53
  it "should set the all of the attributes on the instance" do
@@ -60,36 +60,36 @@ module LicenseFinder
60
60
  "gradle_command" => "./gradlew"
61
61
  }
62
62
  subject = described_class.new(attributes)
63
- subject.whitelist.should == %w{a whitelist}
64
- subject.ignore_groups.should == %w{test development}
65
- subject.ignore_dependencies.should == %w{bundler}
66
- subject.artifacts.dir.should == Pathname("some/path")
67
- subject.project_name.should == "my_app"
68
- subject.gradle_command.should == "./gradlew"
63
+ expect(subject.whitelist).to eq(%w{a whitelist})
64
+ expect(subject.ignore_groups).to eq(%w{test development})
65
+ expect(subject.ignore_dependencies).to eq(%w{bundler})
66
+ expect(subject.artifacts.dir).to eq(Pathname("some/path"))
67
+ expect(subject.project_name).to eq("my_app")
68
+ expect(subject.gradle_command).to eq("./gradlew")
69
69
  end
70
70
  end
71
71
 
72
72
  describe "file paths" do
73
73
  it "should be relative to artifacts dir" do
74
74
  artifacts = described_class.new('dependencies_file_dir' => './elsewhere').artifacts
75
- artifacts.dir.should == Pathname('./elsewhere')
76
- artifacts.legacy_yaml_file.should == Pathname('./elsewhere/dependencies.yml')
77
- artifacts.text_file.should == Pathname('./elsewhere/dependencies.csv')
78
- artifacts.html_file.should == Pathname('./elsewhere/dependencies.html')
75
+ expect(artifacts.dir).to eq(Pathname('./elsewhere'))
76
+ expect(artifacts.legacy_yaml_file).to eq(Pathname('./elsewhere/dependencies.yml'))
77
+ expect(artifacts.text_file).to eq(Pathname('./elsewhere/dependencies.csv'))
78
+ expect(artifacts.html_file).to eq(Pathname('./elsewhere/dependencies.html'))
79
79
  end
80
80
  end
81
81
 
82
82
  describe "#database_uri" do
83
83
  it "should URI escape absolute path to dependencies_file_dir, even with spaces" do
84
84
  artifacts = described_class.new('dependencies_file_dir' => 'test path').artifacts
85
- artifacts.database_uri.should =~ %r{test%20path/dependencies\.db$}
85
+ expect(artifacts.database_uri).to match(%r{test%20path/dependencies\.db$})
86
86
  end
87
87
  end
88
88
 
89
89
  describe "#project_name" do
90
90
  it "should default to the directory name" do
91
- Dir.stub(:getwd).and_return("/path/to/a_project")
92
- described_class.new({}).project_name.should == "a_project"
91
+ allow(Dir).to receive(:getwd).and_return("/path/to/a_project")
92
+ expect(described_class.new({}).project_name).to eq("a_project")
93
93
  end
94
94
  end
95
95
 
@@ -106,7 +106,7 @@ module LicenseFinder
106
106
  end
107
107
 
108
108
  it "persists the configuration attributes" do
109
- Configuration::Persistence.should_receive(:set).with(attributes)
109
+ expect(Configuration::Persistence).to receive(:set).with(attributes)
110
110
  described_class.new(attributes).save
111
111
  end
112
112
 
@@ -116,7 +116,7 @@ module LicenseFinder
116
116
  config.ignore_groups << 'test'
117
117
  config.ignore_dependencies << 'bundler'
118
118
 
119
- Configuration::Persistence.should_receive(:set).with(attributes)
119
+ expect(Configuration::Persistence).to receive(:set).with(attributes)
120
120
  config.save
121
121
  end
122
122
  end
@@ -131,11 +131,11 @@ module LicenseFinder
131
131
  let(:markdown_modified_time) { 5 }
132
132
 
133
133
  before do
134
- allow(File).to receive(:mtime).with(Pathname('./doc/dependencies.db')) { database_modified_time }
135
- allow(File).to receive(:mtime).with(Pathname('./doc/dependencies.csv')) { text_modified_time }
136
- allow(File).to receive(:mtime).with(Pathname('./doc/dependencies_detailed.csv')) { detailed_text_modified_time }
137
- allow(File).to receive(:mtime).with(Pathname('./doc/dependencies.html')) { html_modified_time }
138
- allow(File).to receive(:mtime).with(Pathname('./doc/dependencies.md')) { markdown_modified_time }
134
+ allow(File).to receive(:mtime).with('./doc/dependencies.db') { database_modified_time }
135
+ allow(File).to receive(:mtime).with('./doc/dependencies.csv') { text_modified_time }
136
+ allow(File).to receive(:mtime).with('./doc/dependencies_detailed.csv') { detailed_text_modified_time }
137
+ allow(File).to receive(:mtime).with('./doc/dependencies.html') { html_modified_time }
138
+ allow(File).to receive(:mtime).with('./doc/dependencies.md') { markdown_modified_time }
139
139
  end
140
140
 
141
141
  it 'returns the earliest modified date of the config file' do
@@ -150,17 +150,17 @@ module LicenseFinder
150
150
  file = double(:file,
151
151
  :exist? => true,
152
152
  :read => {'some' => 'config'}.to_yaml)
153
- described_class.stub(:file).and_return(file)
153
+ allow(described_class).to receive(:file).and_return(file)
154
154
 
155
- described_class.get.should == {'some' => 'config'}
155
+ expect(described_class.get).to eq({'some' => 'config'})
156
156
  end
157
157
 
158
158
  it "should not mind if config is not saved" do
159
159
  file = double(:file, :exist? => false)
160
- described_class.stub(:file).and_return(file)
160
+ allow(described_class).to receive(:file).and_return(file)
161
161
 
162
- file.should_not_receive(:read)
163
- described_class.get.should == {}
162
+ expect(file).not_to receive(:read)
163
+ expect(described_class.get).to eq({})
164
164
  end
165
165
  end
166
166
 
@@ -172,36 +172,35 @@ module LicenseFinder
172
172
  end
173
173
 
174
174
  it "writes the configuration attributes to the yaml file" do
175
- described_class.stub(:file).and_return(Pathname.new(tmp_yml))
175
+ allow(described_class).to receive(:file).and_return(Pathname.new(tmp_yml))
176
176
 
177
177
  described_class.set('some' => 'config')
178
- described_class.get.should == {'some' => 'config'}
178
+ expect(described_class.get).to eq({'some' => 'config'})
179
179
  end
180
180
  end
181
181
 
182
182
  describe ".init" do
183
183
  it "initializes the config file" do
184
184
  file = double(:file, :exist? => false)
185
- described_class.stub(:file).and_return(file)
185
+ allow(described_class).to receive(:file).and_return(file)
186
186
 
187
- FileUtils.should_receive(:cp).with(described_class.send(:file_template), file)
187
+ expect(FileUtils).to receive(:cp).with(described_class.send(:file_template), file)
188
188
  described_class.init
189
189
  end
190
190
 
191
191
  it "does nothing if there is already a config file" do
192
192
  file = double(:file, :exist? => true)
193
- described_class.stub(:file).and_return(file)
193
+ allow(described_class).to receive(:file).and_return(file)
194
194
 
195
- FileUtils.should_not_receive(:cp)
195
+ expect(FileUtils).not_to receive(:cp)
196
196
  described_class.init
197
197
  end
198
198
  end
199
199
 
200
200
  describe ".last_modified" do
201
201
  let(:time) { double :time }
202
- let(:config_path) { Pathname.new('.').join('config').join('license_finder.yml') }
203
202
  before do
204
- allow(File).to receive(:mtime).with(config_path) { time }
203
+ allow(File).to receive(:mtime).with('config/license_finder.yml') { time }
205
204
  end
206
205
 
207
206
  it "returns the last time the yml file was modified" do
@@ -3,15 +3,19 @@ require 'spec_helper'
3
3
  module LicenseFinder
4
4
  describe DependencyManager do
5
5
  let(:config) { Configuration.new('whitelist' => ['MIT', 'other']) }
6
+ let(:dependency_manager) { DependencyManager.new }
6
7
 
7
8
  before do
8
- LicenseFinder.stub(:config).and_return config
9
- Reporter.stub(:write_reports)
9
+ allow(LicenseFinder).to receive(:config).and_return config
10
+ allow(Reporter).to receive(:write_reports)
10
11
  end
11
12
 
12
13
  describe "#sync" do
13
14
  let(:gem1) { double(:package) }
14
15
  let(:gem2) { double(:package) }
16
+ let!(:bundler) { Bundler.new }
17
+
18
+ before { allow(Bundler).to receive(:new) { bundler } }
15
19
 
16
20
  it "destroys every dependency except for the ones Bundler reports as 'current' or are marked as 'added_manually'" do
17
21
  cur1 = Dependency.create(name: "current dependency 1")
@@ -21,46 +25,46 @@ module LicenseFinder
21
25
  Dependency.create(name: "old dependency 2")
22
26
 
23
27
  current_packages = [gem1, gem2]
24
- Bundler.stub(:current_packages) { current_packages }
25
- PackageSaver.should_receive(:save_all).with(current_packages).and_return([cur1, cur2])
28
+ allow(bundler).to receive(:current_packages) { current_packages }
29
+ expect(PackageSaver).to receive(:save_all).with(current_packages).and_return([cur1, cur2])
26
30
 
27
- described_class.sync_with_package_managers
28
- Dependency.all.map(&:name).should =~ [cur1, cur2, man1].map(&:name)
31
+ dependency_manager.sync_with_package_managers
32
+ expect(Dependency.all.map(&:name)).to match_array([cur1, cur2, man1].map(&:name))
29
33
  end
30
34
  end
31
35
 
32
36
  describe ".manually_add" do
33
37
  it "should add a Dependency" do
34
38
  expect do
35
- described_class.manually_add("MIT", "js_dep", "0.0.0")
39
+ dependency_manager.manually_add("MIT", "js_dep", "0.0.0")
36
40
  end.to change(Dependency, :count).by(1)
37
41
  end
38
42
 
39
43
  it "should mark the dependency as manual" do
40
- described_class.manually_add("MIT", "js_dep", "0.0.0")
41
- .should be_added_manually
44
+ expect(dependency_manager.manually_add("MIT", "js_dep", "0.0.0"))
45
+ .to be_added_manually
42
46
  end
43
47
 
44
48
  it "should set the appropriate values" do
45
- dep = described_class.manually_add("GPL", "js_dep", "0.0.0")
46
- dep.name.should == "js_dep"
47
- dep.version.should == "0.0.0"
48
- dep.license.name.should == "GPL"
49
- dep.should_not be_approved
49
+ dep = dependency_manager.manually_add("GPL", "js_dep", "0.0.0")
50
+ expect(dep.name).to eq("js_dep")
51
+ expect(dep.version).to eq("0.0.0")
52
+ expect(dep.licenses.first.name).to eq("GPL")
53
+ expect(dep).not_to be_approved
50
54
  end
51
55
 
52
56
  it "should complain if the dependency already exists" do
53
57
  Dependency.create(name: "current dependency 1")
54
- expect { described_class.manually_add("GPL", "current dependency 1", "0.0.0") }
58
+ expect { dependency_manager.manually_add("GPL", "current dependency 1", "0.0.0") }
55
59
  .to raise_error(Error)
56
60
  end
57
61
  end
58
62
 
59
63
  describe ".manually_remove" do
60
64
  it "should remove a manually managed Dependency" do
61
- described_class.manually_add("GPL", "a manually managed dep", nil)
65
+ dependency_manager.manually_add("GPL", "a manually managed dep", nil)
62
66
  expect do
63
- described_class.manually_remove("a manually managed dep")
67
+ dependency_manager.manually_remove("a manually managed dep")
64
68
  end.to change(Dependency, :count).by(-1)
65
69
  end
66
70
 
@@ -68,7 +72,7 @@ module LicenseFinder
68
72
  Dependency.create(name: "a bundler dep")
69
73
  expect do
70
74
  expect do
71
- described_class.manually_remove("a bundler dep")
75
+ dependency_manager.manually_remove("a bundler dep")
72
76
  end.to raise_error(Error)
73
77
  end.to_not change(Dependency, :count)
74
78
  end
@@ -77,23 +81,23 @@ module LicenseFinder
77
81
  describe ".approve!" do
78
82
  it "approves the dependency" do
79
83
  dep = Dependency.named("current dependency")
80
- dep.license = License.find_by_name('not approved')
84
+ dep.licenses = [License.find_by_name('not approved')].to_set
81
85
  dep.save
82
- dep.reload.should_not be_approved
83
- described_class.approve!("current dependency")
84
- dep.reload.should be_approved
86
+ expect(dep.reload).not_to be_approved
87
+ dependency_manager.approve!("current dependency")
88
+ expect(dep.reload).to be_approved
85
89
  end
86
90
 
87
91
  it "optionally adds approver and approval notes" do
88
92
  dep = Dependency.named("current dependency")
89
- described_class.approve!("current dependency", "Julian", "We really need this")
93
+ dependency_manager.approve!("current dependency", "Julian", "We really need this")
90
94
  approval = dep.reload.manual_approval
91
- approval.approver.should eq "Julian"
92
- approval.notes.should eq "We really need this"
95
+ expect(approval.approver).to eq "Julian"
96
+ expect(approval.notes).to eq "We really need this"
93
97
  end
94
98
 
95
99
  it "should raise an error if it can't find the dependency" do
96
- expect { described_class.approve!("non-existent dependency") }
100
+ expect { dependency_manager.approve!("non-existent dependency") }
97
101
  .to raise_error(Error)
98
102
  end
99
103
  end
@@ -102,13 +106,13 @@ module LicenseFinder
102
106
  let(:dependency) { double(:dependency) }
103
107
 
104
108
  it "adds a license for the dependency" do
105
- DependencyManager.stub(:find_by_name).with("dependency").and_return(dependency)
106
- dependency.should_receive(:set_license_manually!).with(License.find_by_name "MIT")
107
- described_class.license!("dependency", "MIT")
109
+ allow(dependency_manager).to receive(:find_by_name).with("dependency").and_return(dependency)
110
+ expect(dependency).to receive(:set_license_manually!).with(License.find_by_name "MIT")
111
+ dependency_manager.license!("dependency", "MIT")
108
112
  end
109
113
 
110
114
  it "should raise an error if it can't find the dependency" do
111
- expect { described_class.license!("non-existent dependency", "a license") }
115
+ expect { dependency_manager.license!("non-existent dependency", "a license") }
112
116
  .to raise_error(Error)
113
117
  end
114
118
  end
@@ -119,53 +123,53 @@ module LicenseFinder
119
123
 
120
124
  context "when the database doesn't exist" do
121
125
  before do
122
- config.artifacts.stub(:database_file).and_return(file_does_not_exist)
126
+ allow(config.artifacts).to receive(:database_file).and_return(file_does_not_exist)
123
127
  end
124
128
 
125
129
  it "writes reports" do
126
- Reporter.should_receive(:write_reports)
127
- DependencyManager.modifying {}
130
+ expect(Reporter).to receive(:write_reports)
131
+ dependency_manager.modifying {}
128
132
  end
129
133
  end
130
134
 
131
135
  context "when the database exists" do
132
136
  before do
133
- config.artifacts.stub(:database_file).and_return(file_exists)
137
+ allow(config.artifacts).to receive(:database_file).and_return(file_exists)
134
138
  end
135
139
 
136
140
  context "when the database has changed" do
137
141
  before do
138
142
  i = 0
139
- Digest::SHA2.stub_chain(:file, :hexdigest) { i += 1 }
143
+ allow(Digest::SHA2).to receive_message_chain(:file, :hexdigest) { i += 1 }
140
144
  end
141
145
 
142
146
  it "writes reports" do
143
- Reporter.should_receive(:write_reports)
144
- DependencyManager.modifying {}
147
+ expect(Reporter).to receive(:write_reports)
148
+ dependency_manager.modifying {}
145
149
  end
146
150
  end
147
151
 
148
152
  context "when the database has not changed" do
149
153
  before do
150
- Digest::SHA2.stub_chain(:file, :hexdigest) { 5 }
154
+ allow(Digest::SHA2).to receive_message_chain(:file, :hexdigest) { 5 }
151
155
  allow(config).to receive(:last_modified) { config_last_update }
152
156
  allow(config.artifacts).to receive(:last_refreshed) { artifacts_last_update }
153
157
  end
154
158
 
155
159
  context "and the reports do not exist" do
156
160
  before do
157
- config.artifacts.stub(:html_file).and_return(file_does_not_exist)
161
+ allow(config.artifacts).to receive(:html_file).and_return(file_does_not_exist)
158
162
  end
159
163
 
160
164
  it "writes reports" do
161
- Reporter.should_receive(:write_reports)
162
- DependencyManager.modifying {}
165
+ expect(Reporter).to receive(:write_reports)
166
+ dependency_manager.modifying {}
163
167
  end
164
168
  end
165
169
 
166
170
  context "and the reports exist" do
167
171
  before do
168
- config.artifacts.stub(:html_file).and_return(file_exists)
172
+ allow(config.artifacts).to receive(:html_file).and_return(file_exists)
169
173
  end
170
174
 
171
175
  context "and configs are newer than the reports" do
@@ -173,7 +177,7 @@ module LicenseFinder
173
177
  let(:artifacts_last_update) { 1 }
174
178
  it "writes reports" do
175
179
  expect(Reporter).to receive(:write_reports)
176
- DependencyManager.modifying {}
180
+ dependency_manager.modifying {}
177
181
  end
178
182
  end
179
183
 
@@ -183,7 +187,7 @@ module LicenseFinder
183
187
 
184
188
  it "does not write reports" do
185
189
  expect(Reporter).not_to receive(:write_reports)
186
- DependencyManager.modifying {}
190
+ dependency_manager.modifying {}
187
191
  end
188
192
  end
189
193
  end
@@ -3,46 +3,46 @@ require 'spec_helper'
3
3
  describe LicenseFinder::License::Definitions do
4
4
  it "should create unrecognized licenses" do
5
5
  license = described_class.build_unrecognized("foo", [])
6
- license.name.should == "foo"
7
- license.url.should be_nil
8
- license.should be_matches_name("foo")
9
- license.should_not be_matches_text("foo")
10
- license.should_not be_whitelisted
6
+ expect(license.name).to eq("foo")
7
+ expect(license.url).to be_nil
8
+ expect(license).to be_matches_name("foo")
9
+ expect(license).not_to be_matches_text("foo")
10
+ expect(license).not_to be_whitelisted
11
11
  end
12
12
 
13
13
  it "should whitelist unrecognized licenses" do
14
14
  license = described_class.build_unrecognized("foo", ["foo"])
15
- license.should be_whitelisted
15
+ expect(license).to be_whitelisted
16
16
  end
17
17
  end
18
18
 
19
19
  describe LicenseFinder::License, "Apache2" do
20
20
  it "should be recognized" do |e|
21
- described_class.find_by_name("Apache2").url.should be
21
+ expect(described_class.find_by_name("Apache2").url).to be
22
22
  end
23
23
  end
24
24
 
25
25
  describe LicenseFinder::License, "BSD" do
26
26
  it "should be recognized" do |e|
27
- described_class.find_by_name("BSD").url.should be
27
+ expect(described_class.find_by_name("BSD").url).to be
28
28
  end
29
29
  end
30
30
 
31
31
  describe LicenseFinder::License, "GPLv2" do
32
32
  it "should be recognized" do
33
- described_class.find_by_name("GPLv2").url.should be
33
+ expect(described_class.find_by_name("GPLv2").url).to be
34
34
  end
35
35
  end
36
36
 
37
37
  describe LicenseFinder::License, "ISC" do
38
38
  it "should be recognized" do
39
- described_class.find_by_name("ISC").url.should be
39
+ expect(described_class.find_by_name("ISC").url).to be
40
40
  end
41
41
  end
42
42
 
43
43
  describe LicenseFinder::License, "LGPL" do
44
44
  it "should be recognized" do
45
- described_class.find_by_name("LGPL").url.should be
45
+ expect(described_class.find_by_name("LGPL").url).to be
46
46
  end
47
47
  end
48
48
 
@@ -51,25 +51,25 @@ describe LicenseFinder::License, "MIT" do
51
51
 
52
52
  describe "#matches_text?" do
53
53
  it "should return true if the text contains the MIT url" do
54
- subject.should be_matches_text "MIT License is awesome http://opensource.org/licenses/mit-license"
54
+ expect(subject).to be_matches_text "MIT License is awesome http://opensource.org/licenses/mit-license"
55
55
 
56
- subject.should be_matches_text "MIT Licence is awesome http://www.opensource.org/licenses/mit-license"
56
+ expect(subject).to be_matches_text "MIT Licence is awesome http://www.opensource.org/licenses/mit-license"
57
57
 
58
- subject.should_not be_matches_text "MIT Licence is awesome http://www!opensource!org/licenses/mit-license"
58
+ expect(subject).not_to be_matches_text "MIT Licence is awesome http://www!opensource!org/licenses/mit-license"
59
59
  end
60
60
 
61
61
  it "should return true if the text begins with 'The MIT License'" do
62
- subject.should be_matches_text "The MIT License"
62
+ expect(subject).to be_matches_text "The MIT License"
63
63
 
64
- subject.should be_matches_text "The MIT Licence"
64
+ expect(subject).to be_matches_text "The MIT Licence"
65
65
 
66
- subject.should_not be_matches_text "Something else\nThe MIT License"
66
+ expect(subject).not_to be_matches_text "Something else\nThe MIT License"
67
67
  end
68
68
 
69
69
  it "should return true if the text contains 'is released under the MIT license'" do
70
- subject.should be_matches_text "is released under the MIT license"
70
+ expect(subject).to be_matches_text "is released under the MIT license"
71
71
 
72
- subject.should be_matches_text "is released under the MIT licence"
72
+ expect(subject).to be_matches_text "is released under the MIT licence"
73
73
  end
74
74
  end
75
75
  end
@@ -102,7 +102,7 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
102
102
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
103
103
  LICENSE
104
104
 
105
- subject.should be_matches_text license
105
+ expect(subject).to be_matches_text license
106
106
  end
107
107
 
108
108
  it "should match with the alternate wording of third clause" do
@@ -130,13 +130,13 @@ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
130
130
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
131
131
  LICENSE
132
132
 
133
- subject.should be_matches_text license
133
+ expect(subject).to be_matches_text license
134
134
  end
135
135
  end
136
136
 
137
137
  describe LicenseFinder::License, "Python" do
138
138
  it "should be recognized" do
139
- described_class.find_by_name("Python").url.should be
139
+ expect(described_class.find_by_name("Python").url).to be
140
140
  end
141
141
  end
142
142
 
@@ -145,21 +145,21 @@ describe LicenseFinder::License, "Ruby" do
145
145
 
146
146
  describe "#matches?" do
147
147
  it "should return true when the Ruby license URL is present" do
148
- subject.should be_matches_text "This gem is available under the following license:\nhttp://www.ruby-lang.org/en/LICENSE.txt\nOkay?"
148
+ expect(subject).to be_matches_text "This gem is available under the following license:\nhttp://www.ruby-lang.org/en/LICENSE.txt\nOkay?"
149
149
  end
150
150
 
151
151
  it "should return false when the Ruby License URL is not present" do
152
- subject.should_not be_matches_text "This gem is available under the following license:\nhttp://www.example.com\nOkay?"
152
+ expect(subject).not_to be_matches_text "This gem is available under the following license:\nhttp://www.example.com\nOkay?"
153
153
  end
154
154
 
155
155
  it "should return false for pathological licenses" do
156
- subject.should_not be_matches_text "This gem is available under the following license:\nhttp://wwwzruby-langzorg/en/LICENSEztxt\nOkay?"
156
+ expect(subject).not_to be_matches_text "This gem is available under the following license:\nhttp://wwwzruby-langzorg/en/LICENSEztxt\nOkay?"
157
157
  end
158
158
  end
159
159
  end
160
160
 
161
161
  describe LicenseFinder::License, "SimplifiedBSD" do
162
162
  it "should be recognized" do
163
- described_class.find_by_name("SimplifiedBSD").url.should be
163
+ expect(described_class.find_by_name("SimplifiedBSD").url).to be
164
164
  end
165
165
  end