license_finder 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -1
- data/CHANGELOG.rdoc +6 -0
- data/README.md +23 -14
- data/Rakefile +2 -1
- data/features/features/package_managers/rebar_spec.rb +14 -0
- data/features/fixtures/rebar.config +12 -0
- data/features/support/testing_dsl.rb +10 -0
- data/lib/license_finder/cli/base.rb +1 -1
- data/lib/license_finder/cli/main.rb +2 -0
- data/lib/license_finder/configuration.rb +8 -0
- data/lib/license_finder/core.rb +3 -1
- data/lib/license_finder/package.rb +1 -0
- data/lib/license_finder/package_manager.rb +2 -1
- data/lib/license_finder/package_managers/rebar.rb +42 -0
- data/lib/license_finder/package_managers/rebar_package.rb +4 -0
- data/lib/license_finder/version.rb +1 -1
- data/spec/fixtures/all_pms/rebar.config +0 -0
- data/spec/fixtures/config/license_finder.yml +2 -0
- data/spec/lib/license_finder/package_managers/rebar_package_spec.rb +23 -0
- data/spec/lib/license_finder/package_managers/rebar_spec.rb +50 -0
- metadata +13 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d990fb1780e04248b610182ed8462f373566c55f
|
4
|
+
data.tar.gz: dcf2f4bf1333eab01c97c3f94dee4fda031250d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb4c5f49e5e9acf40a7d614e5bc9db7800b62216fa7e1090e943ac2ff241f4102d5355a14f8d57aa348ab077eea6b912b0024fe629dc69a63b0ac7fbedaefd52
|
7
|
+
data.tar.gz: 8911df07b9c74ada47fafd4b506d6877d758d2299972fe93d9177352bd95aa7ff59b98245321db8277c28ca4ca26789f8ac5bc24586a0d93b57d6c779c5de488
|
data/.travis.yml
CHANGED
@@ -12,7 +12,7 @@ matrix:
|
|
12
12
|
- rvm: jruby-head
|
13
13
|
|
14
14
|
env:
|
15
|
-
- PATH=$PATH:$HOME/gradle/bin
|
15
|
+
- PATH=$PATH:$HOME/gradle/bin:$HOME/rebar
|
16
16
|
|
17
17
|
notifications:
|
18
18
|
email:
|
@@ -27,8 +27,12 @@ before_install:
|
|
27
27
|
- pip --version
|
28
28
|
- cd /tmp
|
29
29
|
- wget http://services.gradle.org/distributions/gradle-1.11-all.zip
|
30
|
+
- wget https://raw.github.com/wiki/rebar/rebar/rebar
|
30
31
|
- unzip -q gradle*
|
31
32
|
- rm gradle*.zip
|
32
33
|
- mv gradle* ~/gradle
|
34
|
+
- mkdir ~/rebar
|
35
|
+
- mv rebar ~/rebar/
|
36
|
+
- chmod u+x ~/rebar/rebar
|
33
37
|
- npm install -g bower
|
34
38
|
- cd -
|
data/CHANGELOG.rdoc
CHANGED
data/README.md
CHANGED
@@ -25,6 +25,7 @@ report.
|
|
25
25
|
|
26
26
|
* Java (via `maven`)
|
27
27
|
* Java (via `gradle`)
|
28
|
+
* Erlang (via `rebar`)
|
28
29
|
* Objective-C (+ CocoaPods)
|
29
30
|
|
30
31
|
|
@@ -95,6 +96,7 @@ languages, as long as that language has a package definition in the project dire
|
|
95
96
|
* `build.gradle` (for `gradle`)
|
96
97
|
* `bower.json` (for `bower`)
|
97
98
|
* `Podfile` (for CocoaPods)
|
99
|
+
* `rebar.config` (for `rebar`)
|
98
100
|
|
99
101
|
|
100
102
|
### Continuous Integration
|
@@ -156,11 +158,8 @@ any other decision about your project.
|
|
156
158
|
|
157
159
|
### Decisions file
|
158
160
|
|
159
|
-
Any decisions you make about approvals will be recorded in a YAML file
|
160
|
-
|
161
|
-
`doc/dependency_decisions.yml`. All commands can be passed `--decisions_file`
|
162
|
-
to override this location. See [Configuration](#configuration) for other
|
163
|
-
options.
|
161
|
+
Any decisions you make about approvals will be recorded in a YAML file named
|
162
|
+
`doc/dependency_decisions.yml`.
|
164
163
|
|
165
164
|
This file must be committed to version control. Rarely, you will have to
|
166
165
|
manually resolve conflicts in it. In this situation, keep in mind that each
|
@@ -259,6 +258,23 @@ machine. Adding it to the `ignored_dependencies` would prevent it
|
|
259
258
|
|
260
259
|
## Configuration
|
261
260
|
|
261
|
+
Be default, `license_finder` expects the decisions file to be stored at
|
262
|
+
`doc/dependency_decisions.yml`. All commands can be passed `--decisions_file`
|
263
|
+
to override this location.
|
264
|
+
|
265
|
+
### Of Package Managers
|
266
|
+
|
267
|
+
If you have a gradle project, you can invoke gradle with a custom script by
|
268
|
+
passing (for example) `--gradle_command gradlew` to `license_finder` or
|
269
|
+
`license_finder report`.
|
270
|
+
|
271
|
+
|
272
|
+
Similarly you can invoke a custom rebar script with `--rebar_command rebar2`.
|
273
|
+
If you store rebar dependencies in a custom directory (by setting `deps_dir` in
|
274
|
+
`rebar.config`), set `--rebar_deps_dir`.
|
275
|
+
|
276
|
+
### Saving Configuration
|
277
|
+
|
262
278
|
It may be difficult to remember to pass command line options to every command.
|
263
279
|
In some of these cases you can store default values in a YAML formatted config
|
264
280
|
file. `license_finder` looks for this file in `config/license_finder.yml`.
|
@@ -269,22 +285,15 @@ As an example, the file might look like this:
|
|
269
285
|
---
|
270
286
|
decisions_file: './some_path/decisions.yml'
|
271
287
|
gradle_command: './gradlew'
|
288
|
+
rebar_command: './rebarw'
|
289
|
+
rebar_deps_dir: './rebar_deps'
|
272
290
|
```
|
273
291
|
|
274
|
-
If you set `decisions_file`, you won't have to pass it to every CLI command.
|
275
|
-
|
276
|
-
Read on to learn about how `gradle_command` is used on gradle projects.
|
277
|
-
|
278
292
|
### Gradle Projects
|
279
293
|
|
280
294
|
You need to install the license gradle plugin:
|
281
295
|
[https://github.com/hierynomus/license-gradle-plugin](https://github.com/hierynomus/license-gradle-plugin)
|
282
296
|
|
283
|
-
LicenseFinder assumes that gradle is in your shell's command path and can be
|
284
|
-
invoked by just calling `gradle`. If you must invoke gradle some other way
|
285
|
-
(e.g., with a custom `gradlew` script), pass `--gradle_command` to
|
286
|
-
`license_finder` or `license_finder report`.
|
287
|
-
|
288
297
|
By default, `license_finder` will report on gradle's "runtime" dependencies. If
|
289
298
|
you want to generate a report for some other dependency configuration (e.g.
|
290
299
|
Android projects will sometimes specify their meaningful dependencies in the
|
data/Rakefile
CHANGED
@@ -31,7 +31,8 @@ task :check_dependencies do
|
|
31
31
|
"npm" => "node.js",
|
32
32
|
"pip" => "Python",
|
33
33
|
"gradle" => "Gradle",
|
34
|
-
"bower" => "Bower"
|
34
|
+
"bower" => "Bower",
|
35
|
+
"rebar" => "Rebar"
|
35
36
|
}
|
36
37
|
dependencies["pod"] = "Cocoapods" if LicenseFinder::Platform.darwin?
|
37
38
|
satisfied = true
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'feature_helper'
|
2
|
+
|
3
|
+
describe "Rebar Dependencies" do
|
4
|
+
# As an Erlang developer
|
5
|
+
# I want to be able to manage rebar dependencies
|
6
|
+
|
7
|
+
let(:erlang_developer) { LicenseFinder::TestingDSL::User.new }
|
8
|
+
|
9
|
+
specify "are shown in reports" do
|
10
|
+
LicenseFinder::TestingDSL::RebarProject.create
|
11
|
+
erlang_developer.run_license_finder
|
12
|
+
expect(erlang_developer).to be_seeing_line "envy, \"BRANCH: master\", \"Apache 2.0\""
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
%% -*- mode: erlang -*-
|
2
|
+
%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*-
|
3
|
+
%% ex: ts=4 sw=4 ft=erlang et
|
4
|
+
|
5
|
+
{erl_opts, [warnings_as_errors, {parse_transform, lager_transform}, debug_info]}.
|
6
|
+
|
7
|
+
{deps,
|
8
|
+
[
|
9
|
+
{envy, ".*",
|
10
|
+
{git, "git://github.com/manderson26/envy.git", {branch, "master"}}}
|
11
|
+
]
|
12
|
+
}.
|
@@ -133,6 +133,16 @@ module LicenseFinder::TestingDSL
|
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
136
|
+
class RebarProject < Project
|
137
|
+
def add_dep
|
138
|
+
install_fixture("rebar.config")
|
139
|
+
end
|
140
|
+
|
141
|
+
def install
|
142
|
+
shell_out("rebar get-deps")
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
136
146
|
class BundlerProject < Project
|
137
147
|
def add_dep
|
138
148
|
add_to_bundler('license_finder', path: Paths.root.to_s)
|
@@ -18,7 +18,7 @@ module LicenseFinder
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def license_finder_config
|
21
|
-
result = extract_options(:decisions_file, :gradle_command)
|
21
|
+
result = extract_options(:decisions_file, :gradle_command, :rebar_command, :rebar_deps_dir)
|
22
22
|
result[:logger] = logger_config
|
23
23
|
result[:project_path] = Pathname.pwd
|
24
24
|
result
|
@@ -16,6 +16,8 @@ module LicenseFinder
|
|
16
16
|
class_option :format, desc: "The desired output format.", default: 'text', enum: FORMATS.keys
|
17
17
|
class_option :columns, type: :array, desc: "For CSV reports, which columns to print. Pick from: #{CsvReport::AVAILABLE_COLUMNS}", default: %w[name version licenses]
|
18
18
|
class_option :gradle_command, desc: "Command to use when fetching gradle packages. Only meaningful if used with a Java/gradle project. Defaults to 'gradle'."
|
19
|
+
class_option :rebar_command, desc: "Command to use when fetching rebar packages. Only meaningful if used with a Erlang/rebar project. Defaults to 'rebar'."
|
20
|
+
class_option :rebar_deps_dir, desc: "Path to rebar dependencies directory. Only meaningful if used with a Erlang/rebar project. Defaults to 'deps'."
|
19
21
|
|
20
22
|
method_option :quiet, type: :boolean, desc: "silences progress report"
|
21
23
|
method_option :debug, type: :boolean, desc: "emit detailed info about what LicenseFinder is doing"
|
@@ -15,6 +15,14 @@ module LicenseFinder
|
|
15
15
|
get(:gradle_command) || "gradle"
|
16
16
|
end
|
17
17
|
|
18
|
+
def rebar_command
|
19
|
+
get(:rebar_command) || "rebar"
|
20
|
+
end
|
21
|
+
|
22
|
+
def rebar_deps_dir
|
23
|
+
get(:rebar_deps_dir) || "deps"
|
24
|
+
end
|
25
|
+
|
18
26
|
def decisions_file
|
19
27
|
file_name = get(:decisions_file) || "doc/dependency_decisions.yml"
|
20
28
|
Pathname(file_name)
|
data/lib/license_finder/core.rb
CHANGED
@@ -59,8 +59,10 @@ module LicenseFinder
|
|
59
59
|
PackageManager.current_packages(
|
60
60
|
logger: logger,
|
61
61
|
project_path: project_path,
|
62
|
+
ignore_groups: decisions.ignored_groups,
|
62
63
|
gradle_command: config.gradle_command,
|
63
|
-
|
64
|
+
rebar_command: config.rebar_command,
|
65
|
+
rebar_deps_dir: config.rebar_deps_dir,
|
64
66
|
)
|
65
67
|
end
|
66
68
|
end
|
@@ -127,3 +127,4 @@ require 'license_finder/package_managers/npm_package'
|
|
127
127
|
require 'license_finder/package_managers/maven_package'
|
128
128
|
require 'license_finder/package_managers/gradle_package'
|
129
129
|
require 'license_finder/package_managers/cocoa_pods_package'
|
130
|
+
require 'license_finder/package_managers/rebar_package'
|
@@ -13,7 +13,7 @@ module LicenseFinder
|
|
13
13
|
#
|
14
14
|
class PackageManager
|
15
15
|
def self.package_managers
|
16
|
-
[Bundler, NPM, Pip, Bower, Maven, Gradle, CocoaPods]
|
16
|
+
[Bundler, NPM, Pip, Bower, Maven, Gradle, CocoaPods, Rebar]
|
17
17
|
end
|
18
18
|
|
19
19
|
def self.current_packages(options)
|
@@ -57,5 +57,6 @@ require 'license_finder/package_managers/pip'
|
|
57
57
|
require 'license_finder/package_managers/maven'
|
58
58
|
require 'license_finder/package_managers/cocoa_pods'
|
59
59
|
require 'license_finder/package_managers/gradle'
|
60
|
+
require 'license_finder/package_managers/rebar'
|
60
61
|
|
61
62
|
require 'license_finder/package'
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module LicenseFinder
|
2
|
+
class Rebar < PackageManager
|
3
|
+
def initialize(options={})
|
4
|
+
super
|
5
|
+
@command = options[:rebar_command] || "rebar"
|
6
|
+
@deps_path = Pathname(options[:rebar_deps_dir] || "deps")
|
7
|
+
end
|
8
|
+
|
9
|
+
def current_packages
|
10
|
+
rebar_ouput.map do |name, version_type, version_value, homepage|
|
11
|
+
RebarPackage.new(
|
12
|
+
name,
|
13
|
+
"#{version_type}: #{version_value}",
|
14
|
+
install_path: @deps_path.join(name),
|
15
|
+
homepage: homepage,
|
16
|
+
logger: logger
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def rebar_ouput
|
24
|
+
command = "#{@command} list-deps"
|
25
|
+
output, success = capture(command)
|
26
|
+
raise "Command #{command} failed to execute: #{output}" unless success
|
27
|
+
|
28
|
+
output
|
29
|
+
.each_line
|
30
|
+
.reject { |line| line.start_with?("=") }
|
31
|
+
.map { |line| line.split(" ") }
|
32
|
+
end
|
33
|
+
|
34
|
+
def capture(command)
|
35
|
+
[`#{command}`, $?.success?]
|
36
|
+
end
|
37
|
+
|
38
|
+
def package_path
|
39
|
+
project_path.join('rebar.config')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
describe RebarPackage do
|
5
|
+
subject do
|
6
|
+
described_class.new(
|
7
|
+
"uuid",
|
8
|
+
"TAG: v1.3.2",
|
9
|
+
install_path: "deps/uuid",
|
10
|
+
homepage: "git://github.com/okeuday/uuid.git"
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
its(:name) { should == "uuid" }
|
15
|
+
its(:version) { should == "TAG: v1.3.2" }
|
16
|
+
its(:summary) { should eq "" }
|
17
|
+
its(:description) { should == "" }
|
18
|
+
its(:homepage) { should == "git://github.com/okeuday/uuid.git" }
|
19
|
+
its(:groups) { should == [] }
|
20
|
+
its(:children) { should == [] }
|
21
|
+
its(:install_path) { should eq "deps/uuid" }
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module LicenseFinder
|
4
|
+
describe Rebar do
|
5
|
+
let(:rebar) { Rebar.new }
|
6
|
+
it_behaves_like "a PackageManager"
|
7
|
+
|
8
|
+
output = <<-CMDOUTPUT
|
9
|
+
== Sample comment
|
10
|
+
uuid TAG v1.3.2 git://github.com/okeuday/uuid.git
|
11
|
+
jiffy TAG 0.9.0 https://github.com/davisp/jiffy.git
|
12
|
+
CMDOUTPUT
|
13
|
+
|
14
|
+
describe '.current_packages' do
|
15
|
+
it 'lists all the current packages' do
|
16
|
+
allow(rebar).to receive(:capture).with(/rebar/).and_return([output, true])
|
17
|
+
|
18
|
+
current_packages = rebar.current_packages
|
19
|
+
|
20
|
+
expect(current_packages.map(&:name)).to eq(["uuid", "jiffy"])
|
21
|
+
expect(current_packages.map(&:install_path)).to eq([Pathname("deps/uuid"), Pathname("deps/jiffy")])
|
22
|
+
end
|
23
|
+
|
24
|
+
it "fails when command fails" do
|
25
|
+
allow(rebar).to receive(:capture).with(/rebar/).and_return('Some error', false).once
|
26
|
+
expect { rebar.current_packages }.to raise_error(RuntimeError)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "uses custom rebar command, if provided" do
|
30
|
+
rebar = Rebar.new(rebar_command: "rebarfoo")
|
31
|
+
|
32
|
+
allow(rebar).to receive(:capture).with(/rebarfoo/).and_return([output, true])
|
33
|
+
|
34
|
+
current_packages = rebar.current_packages
|
35
|
+
|
36
|
+
expect(current_packages.map(&:name)).to eq(["uuid", "jiffy"])
|
37
|
+
end
|
38
|
+
|
39
|
+
it "uses custom rebar_deps_dir, if provided" do
|
40
|
+
rebar = Rebar.new(rebar_deps_dir: "foo")
|
41
|
+
|
42
|
+
allow(rebar).to receive(:capture).with(/rebar/).and_return([output, true])
|
43
|
+
|
44
|
+
current_packages = rebar.current_packages
|
45
|
+
|
46
|
+
expect(current_packages.map(&:install_path)).to eq([Pathname("foo/uuid"), Pathname("foo/jiffy")])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: license_finder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Maine
|
@@ -230,11 +230,13 @@ files:
|
|
230
230
|
- features/features/package_managers/maven_spec.rb
|
231
231
|
- features/features/package_managers/npm_spec.rb
|
232
232
|
- features/features/package_managers/pip_spec.rb
|
233
|
+
- features/features/package_managers/rebar_spec.rb
|
233
234
|
- features/features/report/csv_spec.rb
|
234
235
|
- features/features/report/html_spec.rb
|
235
236
|
- features/fixtures/Podfile
|
236
237
|
- features/fixtures/build.gradle
|
237
238
|
- features/fixtures/pom.xml
|
239
|
+
- features/fixtures/rebar.config
|
238
240
|
- features/support/testing_dsl.rb
|
239
241
|
- lib/license_finder.rb
|
240
242
|
- lib/license_finder/cli.rb
|
@@ -288,6 +290,8 @@ files:
|
|
288
290
|
- lib/license_finder/package_managers/npm_package.rb
|
289
291
|
- lib/license_finder/package_managers/pip.rb
|
290
292
|
- lib/license_finder/package_managers/pip_package.rb
|
293
|
+
- lib/license_finder/package_managers/rebar.rb
|
294
|
+
- lib/license_finder/package_managers/rebar_package.rb
|
291
295
|
- lib/license_finder/packages/activation.rb
|
292
296
|
- lib/license_finder/packages/license_files.rb
|
293
297
|
- lib/license_finder/packages/licensing.rb
|
@@ -313,6 +317,7 @@ files:
|
|
313
317
|
- spec/fixtures/all_pms/build.gradle
|
314
318
|
- spec/fixtures/all_pms/package.json
|
315
319
|
- spec/fixtures/all_pms/pom.xml
|
320
|
+
- spec/fixtures/all_pms/rebar.config
|
316
321
|
- spec/fixtures/all_pms/requirements.txt
|
317
322
|
- spec/fixtures/config/license_finder.yml
|
318
323
|
- spec/fixtures/license_directory/COPYING
|
@@ -352,6 +357,8 @@ files:
|
|
352
357
|
- spec/lib/license_finder/package_managers/npm_spec.rb
|
353
358
|
- spec/lib/license_finder/package_managers/pip_package_spec.rb
|
354
359
|
- spec/lib/license_finder/package_managers/pip_spec.rb
|
360
|
+
- spec/lib/license_finder/package_managers/rebar_package_spec.rb
|
361
|
+
- spec/lib/license_finder/package_managers/rebar_spec.rb
|
355
362
|
- spec/lib/license_finder/package_spec.rb
|
356
363
|
- spec/lib/license_finder/packages/activation_spec.rb
|
357
364
|
- spec/lib/license_finder/packages/license_files_spec.rb
|
@@ -404,11 +411,13 @@ test_files:
|
|
404
411
|
- features/features/package_managers/maven_spec.rb
|
405
412
|
- features/features/package_managers/npm_spec.rb
|
406
413
|
- features/features/package_managers/pip_spec.rb
|
414
|
+
- features/features/package_managers/rebar_spec.rb
|
407
415
|
- features/features/report/csv_spec.rb
|
408
416
|
- features/features/report/html_spec.rb
|
409
417
|
- features/fixtures/Podfile
|
410
418
|
- features/fixtures/build.gradle
|
411
419
|
- features/fixtures/pom.xml
|
420
|
+
- features/fixtures/rebar.config
|
412
421
|
- features/support/testing_dsl.rb
|
413
422
|
- spec/feature_helper.rb
|
414
423
|
- spec/fixtures/all_pms/Gemfile
|
@@ -417,6 +426,7 @@ test_files:
|
|
417
426
|
- spec/fixtures/all_pms/build.gradle
|
418
427
|
- spec/fixtures/all_pms/package.json
|
419
428
|
- spec/fixtures/all_pms/pom.xml
|
429
|
+
- spec/fixtures/all_pms/rebar.config
|
420
430
|
- spec/fixtures/all_pms/requirements.txt
|
421
431
|
- spec/fixtures/config/license_finder.yml
|
422
432
|
- spec/fixtures/license_directory/COPYING
|
@@ -456,6 +466,8 @@ test_files:
|
|
456
466
|
- spec/lib/license_finder/package_managers/npm_spec.rb
|
457
467
|
- spec/lib/license_finder/package_managers/pip_package_spec.rb
|
458
468
|
- spec/lib/license_finder/package_managers/pip_spec.rb
|
469
|
+
- spec/lib/license_finder/package_managers/rebar_package_spec.rb
|
470
|
+
- spec/lib/license_finder/package_managers/rebar_spec.rb
|
459
471
|
- spec/lib/license_finder/package_spec.rb
|
460
472
|
- spec/lib/license_finder/packages/activation_spec.rb
|
461
473
|
- spec/lib/license_finder/packages/license_files_spec.rb
|