license_finder 1.1.1-java → 1.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 -100
  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