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
@@ -1,32 +1,48 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
describe LicenseFinder::License::Definitions do
|
4
|
+
it "should create unrecognized licenses" do
|
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
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should whitelist unrecognized licenses" do
|
14
|
+
license = described_class.build_unrecognized("foo", ["foo"])
|
15
|
+
license.should be_whitelisted
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
3
19
|
describe LicenseFinder::License, "Apache2" do
|
4
|
-
it "should be
|
5
|
-
described_class.find_by_name("Apache2").should be
|
20
|
+
it "should be recognized" do |e|
|
21
|
+
described_class.find_by_name("Apache2").url.should be
|
6
22
|
end
|
7
23
|
end
|
8
24
|
|
9
25
|
describe LicenseFinder::License, "BSD" do
|
10
|
-
it "should be
|
11
|
-
described_class.find_by_name("BSD").should be
|
26
|
+
it "should be recognized" do |e|
|
27
|
+
described_class.find_by_name("BSD").url.should be
|
12
28
|
end
|
13
29
|
end
|
14
30
|
|
15
31
|
describe LicenseFinder::License, "GPLv2" do
|
16
|
-
it "should be
|
17
|
-
described_class.find_by_name("GPLv2").should be
|
32
|
+
it "should be recognized" do
|
33
|
+
described_class.find_by_name("GPLv2").url.should be
|
18
34
|
end
|
19
35
|
end
|
20
36
|
|
21
37
|
describe LicenseFinder::License, "ISC" do
|
22
|
-
it "should be
|
23
|
-
described_class.find_by_name("ISC").should be
|
38
|
+
it "should be recognized" do
|
39
|
+
described_class.find_by_name("ISC").url.should be
|
24
40
|
end
|
25
41
|
end
|
26
42
|
|
27
43
|
describe LicenseFinder::License, "LGPL" do
|
28
|
-
it "should be
|
29
|
-
described_class.find_by_name("LGPL").should be
|
44
|
+
it "should be recognized" do
|
45
|
+
described_class.find_by_name("LGPL").url.should be
|
30
46
|
end
|
31
47
|
end
|
32
48
|
|
@@ -119,8 +135,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
119
135
|
end
|
120
136
|
|
121
137
|
describe LicenseFinder::License, "Python" do
|
122
|
-
it "should be
|
123
|
-
described_class.find_by_name("Python").should be
|
138
|
+
it "should be recognized" do
|
139
|
+
described_class.find_by_name("Python").url.should be
|
124
140
|
end
|
125
141
|
end
|
126
142
|
|
@@ -143,7 +159,7 @@ describe LicenseFinder::License, "Ruby" do
|
|
143
159
|
end
|
144
160
|
|
145
161
|
describe LicenseFinder::License, "SimplifiedBSD" do
|
146
|
-
it "should be
|
147
|
-
described_class.find_by_name("SimplifiedBSD").should be
|
162
|
+
it "should be recognized" do
|
163
|
+
described_class.find_by_name("SimplifiedBSD").url.should be
|
148
164
|
end
|
149
165
|
end
|
@@ -7,12 +7,30 @@ module LicenseFinder
|
|
7
7
|
License.find_by_name("Apache2").should be_a License
|
8
8
|
end
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
license = License.find_by_name("New License")
|
10
|
+
it "should make an unrecognized license" do
|
11
|
+
license = License.find_by_name("not a known license")
|
13
12
|
|
14
|
-
|
15
|
-
|
13
|
+
expect(license).to be_a License
|
14
|
+
expect(license.name).to eq "not a known license"
|
15
|
+
end
|
16
|
+
|
17
|
+
context "making the default license" do
|
18
|
+
it "set the name to 'other'" do
|
19
|
+
License.find_by_name(nil).name.should == "other"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "does not equal other uses of the default license" do
|
23
|
+
License.find_by_name(nil).should_not == License.find_by_name(nil)
|
24
|
+
end
|
25
|
+
|
26
|
+
context "when there is a whitelist" do
|
27
|
+
before do
|
28
|
+
LicenseFinder.config.stub(:whitelist).and_return(["not empty"])
|
29
|
+
end
|
30
|
+
|
31
|
+
it "does not blow up" do
|
32
|
+
License.find_by_name(nil).name.should == "other"
|
33
|
+
end
|
16
34
|
end
|
17
35
|
end
|
18
36
|
end
|
@@ -22,20 +40,39 @@ module LicenseFinder
|
|
22
40
|
License.find_by_text('This gem is released under the MIT license').should be_a License
|
23
41
|
end
|
24
42
|
|
25
|
-
it "returns
|
43
|
+
it "returns nil if not found" do
|
26
44
|
license = License.find_by_text("foo")
|
27
45
|
|
28
|
-
expect(license).to
|
29
|
-
expect(license.pretty_name).to be_nil
|
46
|
+
expect(license).to be_nil
|
30
47
|
end
|
31
48
|
end
|
32
49
|
|
33
50
|
def make_license(settings = {})
|
34
|
-
|
51
|
+
defaults = {
|
35
52
|
short_name: "Default Short Name",
|
36
53
|
url: "http://example.com/license",
|
54
|
+
whitelisted: false,
|
37
55
|
matcher: License::Matcher.from_text('Default Matcher')
|
38
|
-
}
|
56
|
+
}
|
57
|
+
|
58
|
+
License.new(defaults.merge(settings))
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "#whitelisted?" do
|
62
|
+
it "is true if the settings say it is" do
|
63
|
+
make_license.should_not be_whitelisted
|
64
|
+
make_license(whitelisted: true).should be_whitelisted
|
65
|
+
end
|
66
|
+
|
67
|
+
it "can be made true (without mutating original)" do
|
68
|
+
original = make_license
|
69
|
+
license = original.whitelist
|
70
|
+
license.should_not == original
|
71
|
+
license.should be_whitelisted
|
72
|
+
license.url.should == "http://example.com/license"
|
73
|
+
license.should be_matches_name "Default Short Name"
|
74
|
+
license.should be_matches_text "Default Matcher"
|
75
|
+
end
|
39
76
|
end
|
40
77
|
|
41
78
|
describe "#matches_name?" do
|
@@ -65,7 +102,7 @@ module LicenseFinder
|
|
65
102
|
|
66
103
|
describe ".matches_text?" do
|
67
104
|
it "should match on text" do
|
68
|
-
license = make_license(matcher: License::Matcher.
|
105
|
+
license = make_license(matcher: License::Matcher.from_regex(/The license text/))
|
69
106
|
license.should be_matches_text "The license text"
|
70
107
|
license.should_not be_matches_text "Some other text"
|
71
108
|
end
|
@@ -82,10 +119,16 @@ module LicenseFinder
|
|
82
119
|
shall not be held "responsible" for `anything`.
|
83
120
|
FILE
|
84
121
|
end
|
122
|
+
|
123
|
+
it "should match even if whitespace at beginning and end don't match" do
|
124
|
+
template = License::Template.new("\nThe license text")
|
125
|
+
license = make_license(matcher: License::Matcher.from_template(template))
|
126
|
+
license.should be_matches_text "The license text\n"
|
127
|
+
end
|
85
128
|
end
|
86
129
|
|
87
130
|
it "should default pretty_name to short_name" do
|
88
|
-
make_license.
|
131
|
+
make_license.name.should == "Default Short Name"
|
89
132
|
end
|
90
133
|
end
|
91
134
|
end
|
@@ -37,34 +37,53 @@ module LicenseFinder
|
|
37
37
|
let(:package4) { { "pkgMeta" => {"licenses" => ["MIT"]}, "canonicalDir" => "/some/path" } }
|
38
38
|
|
39
39
|
it 'finds the license for both license structures' do
|
40
|
-
BowerPackage.new(package1).license.should eq("MIT")
|
41
|
-
BowerPackage.new(package2).license.should eq("BSD")
|
42
|
-
BowerPackage.new(package3).license.should eq("
|
43
|
-
BowerPackage.new(package4).license.should eq("MIT")
|
40
|
+
BowerPackage.new(package1).license.name.should eq("MIT")
|
41
|
+
BowerPackage.new(package2).license.name.should eq("BSD")
|
42
|
+
BowerPackage.new(package3).license.name.should eq("Python Software Foundation License")
|
43
|
+
BowerPackage.new(package4).license.name.should eq("MIT")
|
44
44
|
end
|
45
45
|
|
46
|
-
it "returns a license in a file if detected" do
|
47
|
-
stub_license_files [double(:file, license: 'Detected License')]
|
48
46
|
|
49
|
-
|
50
|
-
|
47
|
+
context "regardless of whether there are licenses in files" do
|
48
|
+
before do
|
49
|
+
stub_license_files [double(:file, license: License.find_by_name('Detected License'))]
|
50
|
+
end
|
51
|
+
|
52
|
+
it "returns the license from the spec if there is only one unique license" do
|
53
|
+
package = BowerPackage.new({ "pkgMeta" => {"licenses" => ["MIT", "Expat"]}, "canonicalDir" => "/path/to/thing" })
|
54
|
+
expect(package.license.name).to eq("MIT")
|
55
|
+
end
|
51
56
|
|
52
|
-
|
53
|
-
|
54
|
-
|
57
|
+
it "returns 'multiple licenses' if there's more than one license" do
|
58
|
+
package = BowerPackage.new({ "pkgMeta" => {"licenses" => ["MIT", "BSD"]}, "canonicalDir" => "/some/path" })
|
59
|
+
expect(package.license.name).to eq("multiple licenses: MIT, BSD")
|
60
|
+
end
|
55
61
|
end
|
56
62
|
|
57
|
-
|
58
|
-
|
59
|
-
|
63
|
+
context "when there is nothing in the spec" do
|
64
|
+
it "returns a license in a file if only one unique license detected" do
|
65
|
+
stub_license_files([
|
66
|
+
double(:first_file, license: License.find_by_name('MIT')),
|
67
|
+
double(:second_file, license: License.find_by_name('Expat'))
|
68
|
+
])
|
60
69
|
|
61
|
-
|
62
|
-
|
70
|
+
subject.license.name.should == "MIT"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "returns 'other' if there are no licenses in files" do
|
74
|
+
stub_license_files []
|
75
|
+
|
76
|
+
subject.license.name.should == "other"
|
77
|
+
end
|
63
78
|
|
64
|
-
|
65
|
-
|
79
|
+
it "returns 'other' if there are many licenses in files" do
|
80
|
+
stub_license_files([
|
81
|
+
double(:first_file, license: License.find_by_name('First Detected License')),
|
82
|
+
double(:second_file, license: License.find_by_name('Second Detected License'))
|
83
|
+
])
|
66
84
|
|
67
|
-
|
85
|
+
subject.license.name.should == "multiple licenses: First Detected License, Second Detected License"
|
86
|
+
end
|
68
87
|
end
|
69
88
|
end
|
70
89
|
end
|
@@ -38,26 +38,20 @@ module LicenseFinder
|
|
38
38
|
end
|
39
39
|
|
40
40
|
describe '.active?' do
|
41
|
-
let(:package) {
|
41
|
+
let(:package) { double(:package_file) }
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
allow(File).to receive(:exists?).with(package).and_return(true)
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'returns true' do
|
49
|
-
expect(Bower.active?).to eq(true)
|
50
|
-
end
|
43
|
+
before do
|
44
|
+
Bower.stub(package_path: package)
|
51
45
|
end
|
52
46
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
47
|
+
it 'is true with a bower.json file' do
|
48
|
+
package.stub(:exist? => true)
|
49
|
+
expect(Bower).to be_active
|
50
|
+
end
|
57
51
|
|
58
|
-
|
59
|
-
|
60
|
-
|
52
|
+
it 'is false without a bower.json file' do
|
53
|
+
package.stub(:exist? => false)
|
54
|
+
expect(Bower).to_not be_active
|
61
55
|
end
|
62
56
|
end
|
63
57
|
end
|
@@ -31,28 +31,52 @@ module LicenseFinder
|
|
31
31
|
PossibleLicenseFiles.stub(:find).and_return(license_files)
|
32
32
|
end
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
context "regardless of whether there are licenses in files" do
|
35
|
+
before do
|
36
|
+
stub_license_files [double(:file, license: License.find_by_name('Detected License'))]
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'if the gemspec provides two synonymous licenses' do
|
40
|
+
before { gemspec.licenses = ['MIT', 'Expat'] }
|
41
|
+
|
42
|
+
it 'returns the license only once' do
|
43
|
+
subject.license.name.should == "MIT"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'if the gemspec provides many licenses' do
|
48
|
+
before { gemspec.licenses = ['First Gemspec License', 'Second Gemspec License'] }
|
49
|
+
|
50
|
+
it "returns 'multiple licenses' with the names of the licenses from the gemspec (but not those from detected files)" do
|
51
|
+
subject.license.name.should == "multiple licenses: First Gemspec License, Second Gemspec License"
|
52
|
+
end
|
53
|
+
end
|
38
54
|
end
|
39
55
|
|
40
|
-
|
41
|
-
|
56
|
+
context "when there is nothing in the spec" do
|
57
|
+
it "returns a license in a file if there is only one unique license detected" do
|
58
|
+
stub_license_files([
|
59
|
+
double(:first_file, license: License.find_by_name('MIT')),
|
60
|
+
double(:second_file, license: License.find_by_name('Expat'))
|
61
|
+
])
|
42
62
|
|
43
|
-
|
44
|
-
|
63
|
+
subject.license.name.should == "MIT"
|
64
|
+
end
|
45
65
|
|
46
|
-
|
47
|
-
|
66
|
+
it "returns 'other' if there are no licenses in files" do
|
67
|
+
stub_license_files []
|
48
68
|
|
49
|
-
|
50
|
-
|
69
|
+
subject.license.name.should == "other"
|
70
|
+
end
|
51
71
|
|
52
|
-
|
53
|
-
|
72
|
+
it "returns 'multiple licenses' if there are many licenses in files" do
|
73
|
+
stub_license_files([
|
74
|
+
double(:first_file, license: License.find_by_name('First Detected License')),
|
75
|
+
double(:second_file, license: License.find_by_name('Second Detected License'))
|
76
|
+
])
|
54
77
|
|
55
|
-
|
78
|
+
subject.license.name.should == "multiple licenses: First Detected License, Second Detected License"
|
79
|
+
end
|
56
80
|
end
|
57
81
|
end
|
58
82
|
|
@@ -28,13 +28,7 @@ module LicenseFinder
|
|
28
28
|
|
29
29
|
describe '.current_packages' do
|
30
30
|
subject do
|
31
|
-
Bundler.current_packages(
|
32
|
-
end
|
33
|
-
|
34
|
-
let(:config) { double(:config, ignore_groups: ['dev', 'test']) }
|
35
|
-
|
36
|
-
before do
|
37
|
-
::Bundler::Definition.stub(:build).and_return(definition)
|
31
|
+
Bundler.current_packages(['dev', 'test'], definition)
|
38
32
|
end
|
39
33
|
|
40
34
|
it "should have 2 dependencies" do
|
@@ -64,26 +58,20 @@ module LicenseFinder
|
|
64
58
|
end
|
65
59
|
|
66
60
|
describe '.active?' do
|
67
|
-
let(:gemfile) {
|
61
|
+
let(:gemfile) { double(:gemfile_file) }
|
68
62
|
|
69
|
-
before
|
70
|
-
|
63
|
+
before do
|
64
|
+
Bundler.stub(gemfile_path: gemfile)
|
71
65
|
end
|
72
66
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
Bundler.active?.should == false
|
78
|
-
end
|
67
|
+
it 'is true with a Gemfile file' do
|
68
|
+
gemfile.stub(:exist? => true)
|
69
|
+
expect(Bundler).to be_active
|
79
70
|
end
|
80
71
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
Bundler.active?.should == true
|
86
|
-
end
|
72
|
+
it 'is false without a Gemfile file' do
|
73
|
+
gemfile.stub(:exist? => false)
|
74
|
+
expect(Bundler).to_not be_active
|
87
75
|
end
|
88
76
|
end
|
89
77
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
describe CocoaPodsPackage do
|
5
|
+
subject do
|
6
|
+
described_class.new("Name", "1.0.0", license_text)
|
7
|
+
end
|
8
|
+
let(:license_text) { nil }
|
9
|
+
|
10
|
+
it_behaves_like "it conforms to interface required by PackageSaver"
|
11
|
+
|
12
|
+
its(:name) { should == "Name" }
|
13
|
+
its(:version) { should == "1.0.0" }
|
14
|
+
its(:summary) { should be_nil }
|
15
|
+
its(:description) { should be_nil }
|
16
|
+
its(:homepage) { should be_nil }
|
17
|
+
its(:groups) { should == [] }
|
18
|
+
its(:children) { should == [] }
|
19
|
+
|
20
|
+
describe '#license' do
|
21
|
+
context "when there's a license" do
|
22
|
+
let(:license_text) { "LicenseText" }
|
23
|
+
|
24
|
+
it "returns the name of the license if the license is found be text" do
|
25
|
+
license = double(:license, name: "LicenseName")
|
26
|
+
allow(License).to receive(:find_by_text).with(license_text).and_return(license)
|
27
|
+
|
28
|
+
expect(subject.license.name).to eq "LicenseName"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns other if the license can't be found by text" do
|
32
|
+
allow(License).to receive(:find_by_text).with(license_text).and_return(nil)
|
33
|
+
|
34
|
+
expect(subject.license.name).to eq "other"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns other when there's no license" do
|
39
|
+
expect(subject.license.name).to eq "other"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|