license_finder 1.0.0.0-java → 1.1.1-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.force-build +0 -0
- data/.travis.yml +8 -7
- data/CHANGELOG.rdoc +29 -1
- data/Rakefile +2 -2
- data/db/migrate/201311192003_reassociate_manual_approval.rb +2 -3
- data/db/migrate/201403181732_rename_manual_fields.rb +10 -0
- data/db/migrate/201403190028_add_manual_approvals.rb +22 -0
- data/db/migrate/201403191419_add_timestamps_to_manual_approvals.rb +15 -0
- data/db/migrate/201403191645_remove_license_aliases.rb +23 -0
- data/features/cli.feature +21 -20
- data/features/cocoapods_dependencies.feature +10 -0
- data/features/configure_bundler_groups.feature +23 -0
- data/features/configure_ignore_dependencies.feature +16 -0
- data/features/{project_name.feature → configure_project_name.feature} +1 -1
- data/features/{whitelist.feature → configure_whitelist.feature} +6 -6
- data/features/manually_added.feature +19 -0
- data/features/{approve_dependencies.feature → manually_approved.feature} +2 -2
- data/features/manually_assigned_license.feature +16 -0
- data/features/{text_report.feature → report_csv.feature} +2 -2
- data/features/{html_report.feature → report_html.feature} +2 -2
- data/features/step_definitions/cli_steps.rb +22 -32
- data/features/step_definitions/cocoapod_steps.rb +8 -0
- data/features/step_definitions/configure_bundler_groups_steps.rb +30 -0
- data/features/step_definitions/configure_ignore_dependencies.rb +35 -0
- data/features/step_definitions/{project_name_steps.rb → configure_project_name_steps.rb} +0 -0
- data/features/step_definitions/configure_whitelist_steps.rb +45 -0
- data/features/step_definitions/gradle_steps.rb +2 -2
- data/features/step_definitions/manually_added_steps.rb +28 -0
- data/features/step_definitions/manually_approved_steps.rb +24 -0
- data/features/step_definitions/manually_assigned_license_steps.rb +34 -0
- data/features/step_definitions/maven_steps.rb +2 -2
- data/features/step_definitions/node_steps.rb +2 -2
- data/features/step_definitions/python_steps.rb +1 -1
- data/features/step_definitions/report_csv_steps.rb +20 -0
- data/features/step_definitions/report_html_steps.rb +60 -0
- data/features/step_definitions/shared_steps.rb +125 -104
- data/{files/license_finder.yml → lib/data/license_finder.example.yml} +3 -0
- data/lib/license_finder.rb +3 -2
- data/lib/license_finder/cli.rb +94 -49
- data/lib/license_finder/configuration.rb +21 -14
- data/lib/license_finder/dependency_manager.rb +27 -19
- data/lib/license_finder/license.rb +33 -19
- data/lib/license_finder/license/definitions.rb +153 -104
- data/lib/license_finder/license/matcher.rb +6 -1
- data/lib/license_finder/license/none_matcher.rb +9 -0
- data/lib/license_finder/license/text.rb +1 -0
- data/lib/license_finder/package.rb +30 -6
- data/lib/license_finder/package_managers/bower.rb +2 -2
- data/lib/license_finder/package_managers/bower_package.rb +2 -2
- data/lib/license_finder/package_managers/bundler.rb +9 -17
- data/lib/license_finder/package_managers/bundler_package.rb +1 -1
- data/lib/license_finder/package_managers/cocoa_pods.rb +35 -0
- data/lib/license_finder/package_managers/cocoa_pods_package.rb +19 -0
- data/lib/license_finder/package_managers/gradle.rb +9 -5
- data/lib/license_finder/package_managers/gradle_package.rb +4 -4
- data/lib/license_finder/package_managers/maven.rb +7 -3
- data/lib/license_finder/package_managers/maven_package.rb +5 -5
- data/lib/license_finder/package_managers/npm.rb +2 -2
- data/lib/license_finder/package_managers/npm_package.rb +2 -2
- data/lib/license_finder/package_managers/pip.rb +2 -2
- data/lib/license_finder/package_managers/pip_package.rb +7 -11
- data/lib/license_finder/package_saver.rb +12 -10
- data/lib/license_finder/possible_license_file.rb +1 -1
- data/lib/license_finder/possible_license_files.rb +11 -15
- data/lib/license_finder/reports/formatted_report.rb +25 -6
- data/lib/license_finder/reports/html_report.rb +2 -1
- data/lib/license_finder/reports/reporter.rb +3 -3
- data/lib/license_finder/tables.rb +6 -4
- data/lib/license_finder/tables/dependency.rb +36 -16
- data/lib/license_finder/tables/manual_approval.rb +13 -0
- data/lib/license_finder/yml_to_sql.rb +12 -9
- data/lib/templates/html_report.erb +68 -74
- data/lib/templates/markdown_report.erb +20 -21
- data/license_finder.gemspec +7 -7
- data/readme.md +76 -79
- data/spec/fixtures/Podfile +3 -0
- data/spec/lib/license_finder/cli_spec.rb +71 -23
- data/spec/lib/license_finder/configuration_spec.rb +61 -21
- data/spec/lib/license_finder/dependency_manager_spec.rb +52 -33
- data/spec/lib/license_finder/license/definitions_spec.rb +30 -14
- data/spec/lib/license_finder/license_spec.rb +55 -12
- data/spec/lib/license_finder/package_managers/bower_package_spec.rb +38 -19
- data/spec/lib/license_finder/package_managers/bower_spec.rb +10 -16
- data/spec/lib/license_finder/package_managers/bundler_package_spec.rb +39 -15
- data/spec/lib/license_finder/package_managers/bundler_spec.rb +10 -22
- data/spec/lib/license_finder/package_managers/cocoa_pods_package_spec.rb +44 -0
- data/spec/lib/license_finder/package_managers/cocoa_pods_spec.rb +79 -0
- data/spec/lib/license_finder/package_managers/gradle_package_spec.rb +4 -5
- data/spec/lib/license_finder/package_managers/gradle_spec.rb +26 -20
- data/spec/lib/license_finder/package_managers/maven_package_spec.rb +4 -5
- data/spec/lib/license_finder/package_managers/maven_spec.rb +16 -19
- data/spec/lib/license_finder/package_managers/npm_package_spec.rb +39 -19
- data/spec/lib/license_finder/package_managers/npm_spec.rb +10 -16
- data/spec/lib/license_finder/package_managers/pip_package_spec.rb +8 -8
- data/spec/lib/license_finder/package_managers/pip_spec.rb +10 -16
- data/spec/lib/license_finder/package_saver_spec.rb +27 -3
- data/spec/lib/license_finder/possible_license_file_spec.rb +25 -23
- data/spec/lib/license_finder/reports/detailed_text_report_spec.rb +6 -8
- data/spec/lib/license_finder/reports/html_report_spec.rb +45 -44
- data/spec/lib/license_finder/reports/markdown_report_spec.rb +8 -9
- data/spec/lib/license_finder/reports/reporter_spec.rb +1 -1
- data/spec/lib/license_finder/reports/text_report_spec.rb +6 -8
- data/spec/lib/license_finder/tables/dependency_spec.rb +57 -41
- data/spec/lib/license_finder/yml_to_sql_spec.rb +94 -92
- data/spec/spec_helper.rb +1 -0
- data/spec/support/stdout_helpers.rb +25 -0
- metadata +86 -69
- data/MIT.LICENSE +0 -20
- data/features/ignore_bundle_groups.feature +0 -23
- data/features/manually_managed_dependencies.feature +0 -19
- data/features/set_license.feature +0 -10
- data/features/step_definitions/approve_dependencies_steps.rb +0 -25
- data/features/step_definitions/html_report_steps.rb +0 -62
- data/features/step_definitions/ignore_bundle_groups_steps.rb +0 -29
- data/features/step_definitions/manually_managed_steps.rb +0 -33
- data/features/step_definitions/set_license_steps.rb +0 -20
- data/features/step_definitions/text_report_steps.rb +0 -19
- data/features/step_definitions/whitelist_steps.rb +0 -45
- data/files/dependency_breakdown.png +0 -0
- data/files/report_breakdown.png +0 -0
- data/lib/license_finder/license_url.rb +0 -9
- data/lib/license_finder/tables/license_alias.rb +0 -22
- data/spec/lib/license_finder/license_url_spec.rb +0 -16
- data/spec/lib/license_finder/tables/license_alias_spec.rb +0 -37
- data/spec/support/silence_stdout.rb +0 -13
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
describe CocoaPods do
|
5
|
+
def stub_acknowledgments(hash = {})
|
6
|
+
plist_json = %{
|
7
|
+
{
|
8
|
+
"PreferenceSpecifiers": [
|
9
|
+
{
|
10
|
+
"FooterText": "#{hash[:license]}",
|
11
|
+
"Title": "#{hash[:name]}"
|
12
|
+
}
|
13
|
+
]
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
expect(described_class).to receive(:`).with(/plutil/).and_return(plist_json)
|
18
|
+
end
|
19
|
+
|
20
|
+
def stub_lockfile(pods)
|
21
|
+
allow(YAML).to receive(:load_file).with(Pathname.new("Podfile.lock")).and_return("PODS" => pods)
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '.current_packages' do
|
25
|
+
it 'lists all the current packages' do
|
26
|
+
stub_lockfile([
|
27
|
+
{ "ABTest (0.0.5)" => ["OpenUDID"] },
|
28
|
+
"JSONKit (1.5pre)",
|
29
|
+
"OpenUDID (1.0.0)"
|
30
|
+
])
|
31
|
+
stub_acknowledgments
|
32
|
+
|
33
|
+
expect(CocoaPodsPackage).to receive(:new).with("ABTest", "0.0.5", anything)
|
34
|
+
expect(CocoaPodsPackage).to receive(:new).with("JSONKit", "1.5pre", anything)
|
35
|
+
expect(CocoaPodsPackage).to receive(:new).with("OpenUDID", "1.0.0", anything)
|
36
|
+
|
37
|
+
current_packages = CocoaPods.current_packages
|
38
|
+
|
39
|
+
expect(current_packages.size).to eq(3)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "passes the license text to the package" do
|
43
|
+
stub_lockfile(["Dependency Name (1.0)"])
|
44
|
+
stub_acknowledgments({name: "Dependency Name", license: "License Text"})
|
45
|
+
|
46
|
+
expect(CocoaPodsPackage).to receive(:new).with("Dependency Name", "1.0", "License Text")
|
47
|
+
|
48
|
+
CocoaPods.current_packages
|
49
|
+
end
|
50
|
+
|
51
|
+
it "handles no licenses" do
|
52
|
+
stub_lockfile(["Dependency Name (1.0)"])
|
53
|
+
stub_acknowledgments
|
54
|
+
|
55
|
+
expect(CocoaPodsPackage).to receive(:new).with("Dependency Name", "1.0", nil)
|
56
|
+
|
57
|
+
CocoaPods.current_packages
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '.active?' do
|
62
|
+
let(:package) { double(:package_file) }
|
63
|
+
|
64
|
+
before do
|
65
|
+
CocoaPods.stub(package_path: package)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'is true with a Podfile file' do
|
69
|
+
package.stub(:exist? => true)
|
70
|
+
expect(CocoaPods).to be_active
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'is false without a Podfile file' do
|
74
|
+
package.stub(:exist? => false)
|
75
|
+
expect(CocoaPods).to_not be_active
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -19,11 +19,10 @@ module LicenseFinder
|
|
19
19
|
its(:name) { should == "logback-classic" }
|
20
20
|
its(:version) { should == "1.1.1" }
|
21
21
|
its(:description) { should == "" }
|
22
|
-
its(:licenses_from_spec) { should == ["Eclipse Public License - v 1.0"] }
|
23
22
|
|
24
23
|
describe "#license" do
|
25
24
|
it "returns the license if found" do
|
26
|
-
subject.license.should == "Eclipse Public License - v 1.0"
|
25
|
+
subject.license.name.should == "Eclipse Public License - v 1.0"
|
27
26
|
end
|
28
27
|
|
29
28
|
context "when there are multiple licenses" do
|
@@ -40,8 +39,8 @@ module LicenseFinder
|
|
40
39
|
)
|
41
40
|
end
|
42
41
|
|
43
|
-
it "returns '
|
44
|
-
subject.license.should == '
|
42
|
+
it "returns 'multiple licenses'" do
|
43
|
+
subject.license.name.should == 'multiple licenses: Eclipse Public License - v 1.0, GNU Lesser General Public License'
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
@@ -57,7 +56,7 @@ module LicenseFinder
|
|
57
56
|
end
|
58
57
|
|
59
58
|
it "returns 'other' otherwise" do
|
60
|
-
subject.license.should == "other"
|
59
|
+
subject.license.name.should == "other"
|
61
60
|
end
|
62
61
|
end
|
63
62
|
end
|
@@ -12,7 +12,8 @@ module LicenseFinder
|
|
12
12
|
|
13
13
|
describe '.current_packages' do
|
14
14
|
before do
|
15
|
-
|
15
|
+
allow(LicenseFinder.config).to receive(:gradle_command) { 'gradlefoo' }
|
16
|
+
expect(described_class).to receive(:`).with(/gradlefoo downloadLicenses/)
|
16
17
|
end
|
17
18
|
|
18
19
|
it 'lists all the current packages' do
|
@@ -26,7 +27,8 @@ module LicenseFinder
|
|
26
27
|
<license name='The Apache Software License, Version 2.0' url='http://www.apache.org/licenses/LICENSE-2.0.txt' />
|
27
28
|
</dependency>
|
28
29
|
""")
|
29
|
-
|
30
|
+
fake_file = double(:license_report, read: license_xml)
|
31
|
+
allow(Gradle).to receive(:license_report).and_return(fake_file)
|
30
32
|
|
31
33
|
current_packages = described_class.current_packages
|
32
34
|
|
@@ -42,7 +44,8 @@ module LicenseFinder
|
|
42
44
|
</dependency>
|
43
45
|
""")
|
44
46
|
|
45
|
-
|
47
|
+
fake_file = double(:license_report, read: license_xml)
|
48
|
+
allow(Gradle).to receive(:license_report).and_return(fake_file)
|
46
49
|
|
47
50
|
GradlePackage.should_receive(:new).with("license" => [{"name" => "License 1"}, {"name" => "License 2"}])
|
48
51
|
Gradle.current_packages
|
@@ -55,34 +58,37 @@ module LicenseFinder
|
|
55
58
|
</dependency>
|
56
59
|
""")
|
57
60
|
|
58
|
-
|
61
|
+
fake_file = double(:license_report, read: license_xml)
|
62
|
+
allow(Gradle).to receive(:license_report).and_return(fake_file)
|
59
63
|
|
60
64
|
GradlePackage.should_receive(:new).with("license" => [])
|
61
65
|
Gradle.current_packages
|
62
66
|
end
|
67
|
+
|
68
|
+
it "handles an empty list of licenses" do
|
69
|
+
license_xml = license_xml("")
|
70
|
+
|
71
|
+
fake_file = double(:license_report, read: license_xml)
|
72
|
+
allow(Gradle).to receive(:license_report).and_return(fake_file)
|
73
|
+
Gradle.current_packages
|
74
|
+
end
|
63
75
|
end
|
64
76
|
|
65
77
|
describe '.active?' do
|
66
|
-
let(:package) {
|
78
|
+
let(:package) { double(:package_file) }
|
67
79
|
|
68
|
-
|
69
|
-
|
70
|
-
allow(File).to receive(:exists?).with(package).and_return(true)
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'returns true' do
|
74
|
-
expect(Gradle.active?).to eq(true)
|
75
|
-
end
|
80
|
+
before do
|
81
|
+
Gradle.stub(package_path: package)
|
76
82
|
end
|
77
83
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
84
|
+
it 'is true with a build.gradle file' do
|
85
|
+
package.stub(:exist? => true)
|
86
|
+
expect(Gradle).to be_active
|
87
|
+
end
|
82
88
|
|
83
|
-
|
84
|
-
|
85
|
-
|
89
|
+
it 'is false without a build.gradle file' do
|
90
|
+
package.stub(:exist? => false)
|
91
|
+
expect(Gradle).to_not be_active
|
86
92
|
end
|
87
93
|
end
|
88
94
|
end
|
@@ -21,11 +21,10 @@ module LicenseFinder
|
|
21
21
|
its(:name) { should == "hamcrest-core" }
|
22
22
|
its(:version) { should == "4.11" }
|
23
23
|
its(:description) { should == "" }
|
24
|
-
its(:licenses_from_spec) { should == ["Common Public License Version 1.0"] }
|
25
24
|
|
26
25
|
describe "#license" do
|
27
26
|
it "returns the license if found" do
|
28
|
-
subject.license.should == "Common Public License Version 1.0"
|
27
|
+
subject.license.name.should == "Common Public License Version 1.0"
|
29
28
|
end
|
30
29
|
|
31
30
|
context "when there are multiple licenses" do
|
@@ -46,8 +45,8 @@ module LicenseFinder
|
|
46
45
|
)
|
47
46
|
end
|
48
47
|
|
49
|
-
it "returns '
|
50
|
-
subject.license.should == '
|
48
|
+
it "returns 'multiple licenses'" do
|
49
|
+
subject.license.name.should == 'multiple licenses: Common Public License Version 1.0, Apache 2'
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
@@ -63,7 +62,7 @@ module LicenseFinder
|
|
63
62
|
end
|
64
63
|
|
65
64
|
it "returns 'other' otherwise" do
|
66
|
-
subject.license.should == "other"
|
65
|
+
subject.license.name.should == "other"
|
67
66
|
end
|
68
67
|
end
|
69
68
|
end
|
@@ -44,7 +44,8 @@ module LicenseFinder
|
|
44
44
|
</licenses>
|
45
45
|
</dependency>
|
46
46
|
""")
|
47
|
-
|
47
|
+
fake_file = double(:license_report, read: license_xml)
|
48
|
+
allow(Maven).to receive(:license_report).and_return(fake_file)
|
48
49
|
|
49
50
|
current_packages = Maven.current_packages
|
50
51
|
|
@@ -66,7 +67,8 @@ module LicenseFinder
|
|
66
67
|
</dependency>
|
67
68
|
""")
|
68
69
|
|
69
|
-
|
70
|
+
fake_file = double(:license_report, read: license_xml)
|
71
|
+
allow(Maven).to receive(:license_report).and_return(fake_file)
|
70
72
|
|
71
73
|
MavenPackage.should_receive(:new).with("licenses" => [{"name" => "License 1"}, {"name" => "License 2"}])
|
72
74
|
Maven.current_packages
|
@@ -81,7 +83,8 @@ module LicenseFinder
|
|
81
83
|
</dependency>
|
82
84
|
""")
|
83
85
|
|
84
|
-
|
86
|
+
fake_file = double(:license_report, read: license_xml)
|
87
|
+
allow(Maven).to receive(:license_report).and_return(fake_file)
|
85
88
|
|
86
89
|
MavenPackage.should_receive(:new).with("licenses" => {})
|
87
90
|
Maven.current_packages
|
@@ -89,26 +92,20 @@ module LicenseFinder
|
|
89
92
|
end
|
90
93
|
|
91
94
|
describe '.active?' do
|
92
|
-
let(:package) {
|
95
|
+
let(:package) { double(:package_file) }
|
93
96
|
|
94
|
-
|
95
|
-
|
96
|
-
allow(File).to receive(:exists?).with(package).and_return(true)
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'returns true' do
|
100
|
-
expect(Maven.active?).to eq(true)
|
101
|
-
end
|
97
|
+
before do
|
98
|
+
allow(Maven).to receive(:package_path).and_return(package)
|
102
99
|
end
|
103
100
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
101
|
+
it 'is true with a pom.xml file' do
|
102
|
+
allow(package).to receive(:exist?).and_return(true)
|
103
|
+
expect(Maven.active?).to eq(true)
|
104
|
+
end
|
108
105
|
|
109
|
-
|
110
|
-
|
111
|
-
|
106
|
+
it 'is false without a pom.xml file' do
|
107
|
+
allow(package).to receive(:exist?).and_return(false)
|
108
|
+
expect(Maven.active?).to eq(false)
|
112
109
|
end
|
113
110
|
end
|
114
111
|
end
|
@@ -32,36 +32,56 @@ module LicenseFinder
|
|
32
32
|
let(:node_module2) { {"licenses" => [{"type" => "BSD"}], "path" => "/some/path"} }
|
33
33
|
let(:node_module3) { {"license" => {"type" => "PSF"}, "path" => "/some/path"} }
|
34
34
|
let(:node_module4) { {"licenses" => ["MIT"], "path" => "/some/path"} }
|
35
|
+
let(:misdeclared_node_module) { {"licenses" => {"type" => "MIT"}} }
|
35
36
|
|
36
37
|
it 'finds the license for both license structures' do
|
37
|
-
NpmPackage.new(node_module1).license.should eq("MIT")
|
38
|
-
NpmPackage.new(node_module2).license.should eq("BSD")
|
39
|
-
NpmPackage.new(node_module3).license.should eq("
|
40
|
-
NpmPackage.new(node_module4).license.should eq("MIT")
|
38
|
+
NpmPackage.new(node_module1).license.name.should eq("MIT")
|
39
|
+
NpmPackage.new(node_module2).license.name.should eq("BSD")
|
40
|
+
NpmPackage.new(node_module3).license.name.should eq("Python Software Foundation License")
|
41
|
+
NpmPackage.new(node_module4).license.name.should eq("MIT")
|
42
|
+
NpmPackage.new(misdeclared_node_module).license.name.should eq("MIT")
|
41
43
|
end
|
42
44
|
|
43
|
-
|
44
|
-
|
45
|
+
context "regardless of whether there are licenses in files" do
|
46
|
+
before do
|
47
|
+
stub_license_files [double(:file, license: License.find_by_name('Detected License'))]
|
48
|
+
end
|
45
49
|
|
46
|
-
|
47
|
-
|
50
|
+
it "returns the license from the spec if there is only one unique license" do
|
51
|
+
package = NpmPackage.new({ "licenses" => ["MIT", "Expat"], "path" => "/path/to/thing" })
|
52
|
+
expect(package.license.name).to eq("MIT")
|
53
|
+
end
|
48
54
|
|
49
|
-
|
50
|
-
|
51
|
-
|
55
|
+
it "returns 'multiple licenses' if there's more than one license" do
|
56
|
+
package = NpmPackage.new({ "licenses" => ["MIT", "BSD"], "path" => "/some/path" })
|
57
|
+
expect(package.license.name).to eq("multiple licenses: MIT, BSD")
|
58
|
+
end
|
52
59
|
end
|
53
60
|
|
54
|
-
|
55
|
-
|
56
|
-
|
61
|
+
context "when there is nothing in the spec" do
|
62
|
+
it "returns a license in a file if only one unique license detected" do
|
63
|
+
stub_license_files([
|
64
|
+
double(:first_file, license: License.find_by_name('MIT')),
|
65
|
+
double(:second_file, license: License.find_by_name('Expat'))
|
66
|
+
])
|
57
67
|
|
58
|
-
|
59
|
-
|
68
|
+
subject.license.name.should == "MIT"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "returns 'other' if there are no licenses in files" do
|
72
|
+
stub_license_files []
|
73
|
+
|
74
|
+
subject.license.name.should == "other"
|
75
|
+
end
|
60
76
|
|
61
|
-
|
62
|
-
|
77
|
+
it "returns 'other' if there are many licenses in files" do
|
78
|
+
stub_license_files([
|
79
|
+
double(:first_file, license: License.find_by_name('First Detected License')),
|
80
|
+
double(:second_file, license: License.find_by_name('Second Detected License'))
|
81
|
+
])
|
63
82
|
|
64
|
-
|
83
|
+
subject.license.name.should == "multiple licenses: First Detected License, Second Detected License"
|
84
|
+
end
|
65
85
|
end
|
66
86
|
end
|
67
87
|
end
|
@@ -98,26 +98,20 @@ module LicenseFinder
|
|
98
98
|
end
|
99
99
|
|
100
100
|
describe '.active?' do
|
101
|
-
let(:package) {
|
101
|
+
let(:package) { double(:package_file) }
|
102
102
|
|
103
|
-
|
104
|
-
|
105
|
-
allow(File).to receive(:exists?).with(package).and_return(true)
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'returns true' do
|
109
|
-
expect(NPM.active?).to eq(true)
|
110
|
-
end
|
103
|
+
before do
|
104
|
+
NPM.stub(package_path: package)
|
111
105
|
end
|
112
106
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
107
|
+
it 'is true with a package.json file' do
|
108
|
+
package.stub(:exist? => true)
|
109
|
+
expect(NPM).to be_active
|
110
|
+
end
|
117
111
|
|
118
|
-
|
119
|
-
|
120
|
-
|
112
|
+
it 'is false without a package.json file' do
|
113
|
+
package.stub(:exist? => false)
|
114
|
+
expect(NPM).to_not be_active
|
121
115
|
end
|
122
116
|
end
|
123
117
|
end
|
@@ -56,7 +56,7 @@ module LicenseFinder
|
|
56
56
|
|
57
57
|
subject = make_package(data)
|
58
58
|
|
59
|
-
expect(subject.license).to eq('MIT')
|
59
|
+
expect(subject.license.name).to eq('MIT')
|
60
60
|
end
|
61
61
|
|
62
62
|
context "when there's no explicit license" do
|
@@ -65,15 +65,15 @@ module LicenseFinder
|
|
65
65
|
|
66
66
|
subject = make_package(data)
|
67
67
|
|
68
|
-
expect(subject.license).to eq('Apache 2.0 License')
|
68
|
+
expect(subject.license.name).to eq('Apache 2.0 License')
|
69
69
|
end
|
70
70
|
|
71
|
-
it "returns '
|
71
|
+
it "returns 'multiple licenses' if there are multiple licenses in 'classifiers'" do
|
72
72
|
data = { "classifiers" => [ 'License :: OSI Approved :: Apache 2.0 License', 'License :: OSI Approved :: GPL' ] }
|
73
73
|
|
74
74
|
subject = make_package(data)
|
75
75
|
|
76
|
-
expect(subject.license).to eq('
|
76
|
+
expect(subject.license.name).to eq('multiple licenses: Apache 2.0 License, GPL')
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -84,7 +84,7 @@ module LicenseFinder
|
|
84
84
|
|
85
85
|
subject = make_package(data)
|
86
86
|
|
87
|
-
expect(subject.license).to eq('Apache 2.0 License')
|
87
|
+
expect(subject.license.name).to eq('Apache 2.0 License')
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
@@ -96,13 +96,13 @@ module LicenseFinder
|
|
96
96
|
end
|
97
97
|
|
98
98
|
it 'returns license from file' do
|
99
|
-
stub_license_files [double(:license_file, license: 'License from file')]
|
100
|
-
expect(subject.license).to eq('License from file')
|
99
|
+
stub_license_files [double(:license_file, license: License.find_by_name('License from file'))]
|
100
|
+
expect(subject.license.name).to eq('License from file')
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'returns other if no license can be found' do
|
104
104
|
stub_license_files []
|
105
|
-
expect(subject.license).to eq('other')
|
105
|
+
expect(subject.license.name).to eq('other')
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|