license_finder 0.7.3 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -3
- data/.travis.yml +1 -8
- data/bin/license_finder +31 -1
- data/db/migrate/201303290935_create_dependencies.rb +14 -0
- data/db/migrate/201303291155_create_licenses.rb +13 -0
- data/db/migrate/201303291402_create_approvals.rb +13 -0
- data/db/migrate/201303291456_create_ancestries.rb +9 -0
- data/db/migrate/201303291519_create_bundler_groups.rb +13 -0
- data/db/migrate/201303291720_move_manual_from_approvals_to_licenses.rb +11 -0
- data/db/migrate/201303291753_allow_null_license_names.rb +7 -0
- data/db/migrate/201304011027_allow_null_dependency_version.rb +7 -0
- data/db/migrate/201304020947_change_table_name_licenses_to_license_aliases.rb +5 -0
- data/features/approve_dependencies.feature +0 -45
- data/features/html_report.feature +1 -11
- data/features/license_finder.feature +13 -27
- data/features/license_finder_rake_task.feature +2 -1
- data/features/set_license.feature +2 -4
- data/features/step_definitions/license_finder_steps.rb +25 -0
- data/features/step_definitions/steps.rb +40 -26
- data/features/text_report.feature +2 -2
- data/files/license_finder.yml +1 -1
- data/lib/license_finder.rb +14 -6
- data/lib/license_finder/bundle.rb +4 -17
- data/lib/license_finder/bundle_syncer.rb +2 -3
- data/lib/license_finder/bundled_gem.rb +4 -47
- data/lib/license_finder/cli.rb +9 -16
- data/lib/license_finder/configuration.rb +55 -3
- data/lib/license_finder/dependency_report.rb +1 -1
- data/lib/license_finder/gem_saver.rb +69 -0
- data/lib/license_finder/html_report.rb +2 -2
- data/lib/license_finder/license.rb +60 -58
- data/lib/license_finder/license_files.rb +36 -0
- data/lib/license_finder/license_url.rb +8 -6
- data/lib/license_finder/platform.rb +32 -0
- data/lib/license_finder/possible_license_file.rb +1 -1
- data/lib/license_finder/tables.rb +7 -0
- data/lib/license_finder/tables/approval.rb +4 -0
- data/lib/license_finder/tables/bundler_group.rb +4 -0
- data/lib/license_finder/tables/dependency.rb +31 -0
- data/lib/license_finder/tables/license_alias.rb +22 -0
- data/lib/license_finder/yml_to_sql.rb +127 -0
- data/lib/tasks/license_finder.rake +3 -0
- data/lib/templates/html_report.erb +50 -32
- data/lib/templates/text_report.erb +3 -2
- data/license_finder.gemspec +14 -5
- data/readme.md +10 -50
- data/spec/lib/license_finder/bundle_spec.rb +22 -19
- data/spec/lib/license_finder/bundle_syncer_spec.rb +4 -10
- data/spec/lib/license_finder/bundled_gem_spec.rb +40 -108
- data/spec/lib/license_finder/cli_spec.rb +3 -3
- data/spec/lib/license_finder/configuration_spec.rb +53 -21
- data/spec/lib/license_finder/gem_saver_spec.rb +155 -0
- data/spec/lib/license_finder/html_report_spec.rb +32 -15
- data/spec/lib/license_finder/license_files_spec.rb +50 -0
- data/spec/lib/license_finder/tables/dependency_spec.rb +102 -0
- data/spec/lib/license_finder/tables/license_alias_spec.rb +54 -0
- data/spec/lib/license_finder/text_report_spec.rb +6 -4
- data/spec/lib/license_finder/yml_to_sql_spec.rb +99 -0
- data/spec/lib/license_finder_spec.rb +5 -5
- data/spec/spec_helper.rb +17 -1
- metadata +79 -32
- data/lib/license_finder/dependency.rb +0 -50
- data/lib/license_finder/persistence.rb +0 -1
- data/lib/license_finder/persistence/yaml.rb +0 -7
- data/lib/license_finder/persistence/yaml/configuration.rb +0 -34
- data/lib/license_finder/persistence/yaml/dependency.rb +0 -127
- data/lib/license_finder/source_syncer.rb +0 -40
- data/lib/templates/dependency.html.erb +0 -54
- data/spec/lib/license_finder/dependency_spec.rb +0 -188
- data/spec/lib/license_finder/persistence/yaml/dependency_spec.rb +0 -5
- data/spec/lib/license_finder/source_syncer_spec.rb +0 -37
- data/spec/support/shared_examples/persistence/configuration.rb +0 -28
- data/spec/support/shared_examples/persistence/dependency.rb +0 -138
@@ -1,37 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
module LicenseFinder
|
4
|
-
describe SourceSyncer do
|
5
|
-
it "deletes any dependencies no longer in the source" do
|
6
|
-
foo_dep = double :foo, name: "foo"
|
7
|
-
|
8
|
-
foo_dep.should_receive(:destroy)
|
9
|
-
|
10
|
-
SourceSyncer.new([], [foo_dep]).sync!
|
11
|
-
end
|
12
|
-
|
13
|
-
it "merges any dependencies in the source" do
|
14
|
-
source_foo = double :source_foo, name: "foo"
|
15
|
-
foo = double :foo, name: "foo"
|
16
|
-
|
17
|
-
foo.should_receive(:merge).with source_foo
|
18
|
-
|
19
|
-
SourceSyncer.new([source_foo], [foo]).sync!
|
20
|
-
end
|
21
|
-
|
22
|
-
it "creates any new source dependencies" do
|
23
|
-
source_dep = double :source_dep, name: "foo", attributes: double(:attributes)
|
24
|
-
|
25
|
-
source_dep.should_receive :save
|
26
|
-
|
27
|
-
SourceSyncer.new([source_dep], []).sync!
|
28
|
-
end
|
29
|
-
|
30
|
-
it "returns the synced dependency set" do
|
31
|
-
source_dep = double(:source_dep, name: "source_dep", attributes: double(:attributes)).as_null_object
|
32
|
-
existing_dep = double :existing_dep, name: "existing", merge: nil
|
33
|
-
|
34
|
-
SourceSyncer.new([source_dep, existing_dep], [existing_dep]).sync!.should =~ [source_dep, existing_dep]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
shared_examples_for "a persistable configuration" do
|
2
|
-
let(:klass) { described_class }
|
3
|
-
|
4
|
-
let(:attributes) do
|
5
|
-
{
|
6
|
-
"whitelist" => ["FooLicense", "BarLicense"],
|
7
|
-
"ignore_groups" => [:test, :development]
|
8
|
-
}
|
9
|
-
end
|
10
|
-
|
11
|
-
describe '.new' do
|
12
|
-
subject { klass.new(attributes) }
|
13
|
-
|
14
|
-
context "with known attributes" do
|
15
|
-
it "should set the all of the attributes on the instance" do
|
16
|
-
attributes.each do |key, value|
|
17
|
-
subject.send("#{key}").should == value
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "#whitelist" do
|
24
|
-
it "should default to an empty array" do
|
25
|
-
klass.new.whitelist.should == []
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,138 +0,0 @@
|
|
1
|
-
shared_examples_for "a persistable dependency" do
|
2
|
-
let(:klass) { described_class }
|
3
|
-
|
4
|
-
let(:attributes) do
|
5
|
-
{
|
6
|
-
'name' => "spec_name",
|
7
|
-
'version' => "2.1.3",
|
8
|
-
'license' => "GPLv2",
|
9
|
-
'approved' => false,
|
10
|
-
'notes' => 'some notes',
|
11
|
-
'homepage' => 'homepage',
|
12
|
-
'license_files' => ['/Users/pivotal/foo/lic1', '/Users/pivotal/bar/lic2'],
|
13
|
-
'source' => "bundle",
|
14
|
-
'bundler_groups' => ["test"]
|
15
|
-
}
|
16
|
-
end
|
17
|
-
|
18
|
-
before do
|
19
|
-
klass.delete_all
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '.new' do
|
23
|
-
subject { klass.new(attributes) }
|
24
|
-
|
25
|
-
context "with known attributes" do
|
26
|
-
it "should set the all of the attributes on the instance" do
|
27
|
-
attributes.each do |key, value|
|
28
|
-
if key != "approved"
|
29
|
-
subject.send("#{key}").should equal(value), "expected #{value.inspect} for #{key}, got #{subject.send("#{key}").inspect}"
|
30
|
-
else
|
31
|
-
subject.approved?.should == value
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "with unknown attributes" do
|
38
|
-
before do
|
39
|
-
attributes['foo'] = 'bar'
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should raise an exception" do
|
43
|
-
expect { subject }.to raise_exception(NoMethodError)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe '.unapproved' do
|
49
|
-
it "should return all unapproved dependencies" do
|
50
|
-
klass.new(name: "unapproved dependency", approved: false).save
|
51
|
-
klass.new(name: "approved dependency", approved: true).save
|
52
|
-
|
53
|
-
unapproved = klass.unapproved
|
54
|
-
unapproved.count.should == 1
|
55
|
-
unapproved.collect(&:approved?).any?.should be_false
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe '.find_by_name' do
|
60
|
-
subject { klass.find_by_name gem_name }
|
61
|
-
let(:gem_name) { "foo" }
|
62
|
-
|
63
|
-
context "when a gem with the provided name exists" do
|
64
|
-
before do
|
65
|
-
klass.new(
|
66
|
-
'name' => gem_name,
|
67
|
-
'version' => '0.0.1'
|
68
|
-
).save
|
69
|
-
end
|
70
|
-
|
71
|
-
its(:name) { should == gem_name }
|
72
|
-
its(:version) { should == '0.0.1' }
|
73
|
-
end
|
74
|
-
|
75
|
-
context "when no gem with the provided name exists" do
|
76
|
-
it { should == nil }
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe "#config" do
|
81
|
-
it 'should respond to it' do
|
82
|
-
klass.new.should respond_to(:config)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
describe '#attributes' do
|
87
|
-
it "should return a hash containing the values of all the accessible properties" do
|
88
|
-
dep = klass.new(attributes)
|
89
|
-
attributes = dep.attributes
|
90
|
-
LicenseFinder::DEPENDENCY_ATTRIBUTES.each do |name|
|
91
|
-
attributes[name].should == dep.send(name)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
describe '#save' do
|
97
|
-
it "should persist all of the dependency's attributes" do
|
98
|
-
dep = klass.new(attributes)
|
99
|
-
dep.save
|
100
|
-
|
101
|
-
saved_dep = klass.find_by_name(dep.name)
|
102
|
-
|
103
|
-
attributes.each do |key, value|
|
104
|
-
if key != "approved"
|
105
|
-
saved_dep.send("#{key}").should eql(value), "expected #{value.inspect} for #{key}, got #{saved_dep.send("#{key}").inspect}"
|
106
|
-
else
|
107
|
-
saved_dep.approved?.should == value
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
describe "#update_attributes" do
|
114
|
-
it "should update the provided attributes with the provided values" do
|
115
|
-
gem = klass.new(attributes)
|
116
|
-
updated_attributes = {"version" => "new_version", "license" => "updated_license"}
|
117
|
-
gem.update_attributes(updated_attributes)
|
118
|
-
|
119
|
-
saved_gem = klass.find_by_name(gem.name)
|
120
|
-
saved_gem.version.should == "new_version"
|
121
|
-
saved_gem.license.should == "updated_license"
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
describe "#destroy" do
|
126
|
-
it "should remove itself from the database" do
|
127
|
-
foo_dep = klass.new(name: "foo")
|
128
|
-
bar_dep = klass.new(name: "bar")
|
129
|
-
foo_dep.save
|
130
|
-
bar_dep.save
|
131
|
-
|
132
|
-
expect { foo_dep.destroy }.to change { klass.all.count }.by -1
|
133
|
-
|
134
|
-
klass.all.count.should == 1
|
135
|
-
klass.all.first.name.should == "bar"
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|