license_finder 2.1.2 → 3.0.0

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +29 -0
  4. data/CONTRIBUTING.md +28 -3
  5. data/Dockerfile +82 -0
  6. data/README.md +11 -2
  7. data/Rakefile +27 -0
  8. data/appveyor.yml +21 -0
  9. data/bin/license_finder_pip.py +1 -1
  10. data/ci/pipelines/pipeline.yml.erb +78 -0
  11. data/ci/scripts/test.sh +27 -0
  12. data/ci/tasks/build.yml +16 -0
  13. data/features/features/package_managers/gradle_spec.rb +6 -0
  14. data/features/features/package_managers/maven_spec.rb +9 -0
  15. data/features/features/report/diff_spec.rb +26 -23
  16. data/features/fixtures/alternate-build-file-gradle/build-alt.gradle +26 -0
  17. data/features/fixtures/alternate-build-file-gradle/settings.gradle +1 -0
  18. data/features/fixtures/file-based-libs-gradle/build.gradle +1 -1
  19. data/features/fixtures/gradle-wrapper/build.gradle +26 -0
  20. data/features/fixtures/gradle-wrapper/gradlew +3 -0
  21. data/features/fixtures/gradle-wrapper/gradlew.bat +1 -0
  22. data/features/fixtures/maven-wrapper/mvnw +3 -0
  23. data/features/fixtures/maven-wrapper/mvnw.cmd +7 -0
  24. data/features/fixtures/maven-wrapper/pom.xml +37 -0
  25. data/features/support/testing_dsl.rb +12 -5
  26. data/lib/license_finder/cli/base.rb +1 -0
  27. data/lib/license_finder/cli/main.rb +2 -1
  28. data/lib/license_finder/configuration.rb +6 -13
  29. data/lib/license_finder/core.rb +2 -1
  30. data/lib/license_finder/diff.rb +4 -4
  31. data/lib/license_finder/package.rb +5 -3
  32. data/lib/license_finder/package_delta.rb +2 -5
  33. data/lib/license_finder/package_managers/bower.rb +1 -1
  34. data/lib/license_finder/package_managers/bundler.rb +4 -4
  35. data/lib/license_finder/package_managers/go_dep.rb +21 -4
  36. data/lib/license_finder/package_managers/go_package.rb +2 -1
  37. data/lib/license_finder/package_managers/go_vendor.rb +21 -7
  38. data/lib/license_finder/package_managers/go_workspace.rb +18 -11
  39. data/lib/license_finder/package_managers/gradle.rb +42 -15
  40. data/lib/license_finder/package_managers/maven.rb +31 -17
  41. data/lib/license_finder/package_managers/maven_dependency_finder.rb +13 -0
  42. data/lib/license_finder/package_managers/maven_package.rb +6 -1
  43. data/lib/license_finder/package_managers/npm.rb +4 -4
  44. data/lib/license_finder/package_managers/rebar.rb +1 -1
  45. data/lib/license_finder/reports/csv_report.rb +5 -1
  46. data/lib/license_finder/reports/diff_report.rb +3 -7
  47. data/lib/license_finder/reports/text_report.rb +6 -1
  48. data/lib/license_finder/version.rb +1 -1
  49. data/license_finder.gemspec +6 -0
  50. data/spec/lib/license_finder/configuration_spec.rb +0 -8
  51. data/spec/lib/license_finder/core_spec.rb +2 -1
  52. data/spec/lib/license_finder/diff_spec.rb +50 -27
  53. data/spec/lib/license_finder/package_managers/bower_spec.rb +1 -1
  54. data/spec/lib/license_finder/package_managers/bundler_spec.rb +1 -1
  55. data/spec/lib/license_finder/package_managers/go_dep_spec.rb +14 -1
  56. data/spec/lib/license_finder/package_managers/go_vendor_spec.rb +23 -2
  57. data/spec/lib/license_finder/package_managers/go_workspace_spec.rb +23 -7
  58. data/spec/lib/license_finder/package_managers/gradle_spec.rb +55 -2
  59. data/spec/lib/license_finder/package_managers/maven_package_spec.rb +16 -3
  60. data/spec/lib/license_finder/package_managers/maven_spec.rb +56 -4
  61. data/spec/lib/license_finder/package_managers/merged_package_spec.rb +8 -4
  62. data/spec/lib/license_finder/package_spec.rb +4 -1
  63. data/spec/lib/license_finder/reports/csv_report_spec.rb +8 -0
  64. data/spec/lib/license_finder/reports/diff_report_spec.rb +5 -5
  65. data/spec/lib/license_finder/reports/text_report_spec.rb +5 -0
  66. metadata +218 -9
  67. data/.travis.yml +0 -37
  68. data/.travis/install_bower.sh +0 -5
  69. data/.travis/install_godep.sh +0 -6
  70. data/.travis/install_gradle.sh +0 -12
  71. data/.travis/install_rebar.sh +0 -14
@@ -19,11 +19,13 @@ module LicenseFinder
19
19
  submodule.install_path =~ /#{repo_name(gp)}$/
20
20
  }.first
21
21
  if import_path then
22
- GoPackage.from_dependency({
23
- 'ImportPath' => repo_name(import_path),
24
- 'InstallPath' => submodule.install_path,
25
- 'Rev' => submodule.revision
26
- }, nil, @full_version)
22
+ dependency_info = {
23
+ 'ImportPath' => repo_name(import_path),
24
+ 'Homepage' => repo_name(import_path),
25
+ 'InstallPath' => submodule.install_path,
26
+ 'Rev' => submodule.revision
27
+ }
28
+ GoPackage.from_dependency(dependency_info, nil, @full_version)
27
29
  end
28
30
  end.compact
29
31
  end
@@ -69,13 +71,18 @@ module LicenseFinder
69
71
  # discovered that `go list' will print a warning and unfortunately exit
70
72
  # with status code 1. Setting GOPATH to nil removes those warnings.
71
73
  ENV['GOPATH'] = nil
72
- val = capture('go list -f \'{{join .Deps "\n"}}\' ./...')
74
+ val = capture('go list -f "{{join .Deps \"\n\"}}" ./...')
73
75
  raise 'go list failed' unless val.last
74
- # Select non-standard packages. Non-standard packages typically
75
- # have a period somewhere in the namespace (github.com, gopkg.in,
76
- # etc.).
77
- #
78
- val.first.lines.map(&:strip).select { |l| l =~ /.+\..+\// }
76
+ # Select non-standard packages. `go list std` returns the list of standard
77
+ # dependencies. We then filter those dependencies out of the full list of
78
+ # dependencies.
79
+ deps = val.first.split("\n")
80
+ capture('go list std').first.split("\n").each do |std|
81
+ deps.delete_if do |dep|
82
+ dep =~ /(\/|^)#{std}(\/|$)/
83
+ end
84
+ end
85
+ deps
79
86
  end
80
87
  end
81
88
 
@@ -1,39 +1,66 @@
1
1
  require 'xmlsimple'
2
+ require 'with_env'
2
3
  require_relative 'gradle_dependency_finder'
3
4
 
4
5
  module LicenseFinder
5
6
  class Gradle < PackageManager
6
7
  def initialize(options={})
7
8
  super
8
- @command = options[:gradle_command] || 'gradle --console plain'
9
+ @command = options[:gradle_command] || package_management_command
9
10
  @include_groups = options[:gradle_include_groups]
10
11
  end
11
12
 
12
13
  def current_packages
13
- command = "#{@command} downloadLicenses"
14
- output, success = Dir.chdir(project_path) { capture(command) }
15
- raise "Command '#{command}' failed to execute: #{output}" unless success
16
-
17
- dependencies = GradleDependencyFinder.new(project_path).dependencies
18
- packages = dependencies.flat_map do |xml_file|
19
- options = {'GroupTags' => {'dependencies' => 'dependency'}}
20
- contents = XmlSimple.xml_in(xml_file, options).fetch('dependency', [])
21
- contents.map do |dep|
22
- GradlePackage.new(dep, logger: logger, include_groups: @include_groups)
14
+ WithEnv.with_env({"TERM" => "dumb"}) do
15
+ command = "#{@command} downloadLicenses"
16
+ output, success = Dir.chdir(project_path) { capture(command) }
17
+ raise "Command '#{command}' failed to execute: #{output}" unless success
18
+
19
+ dependencies = GradleDependencyFinder.new(project_path).dependencies
20
+ packages = dependencies.flat_map do |xml_file|
21
+ options = {'GroupTags' => {'dependencies' => 'dependency'}}
22
+ contents = XmlSimple.xml_in(xml_file, options).fetch('dependency', [])
23
+ contents.map do |dep|
24
+ GradlePackage.new(dep, logger: logger, include_groups: @include_groups)
25
+ end
23
26
  end
27
+ packages.uniq
24
28
  end
25
-
26
- packages.uniq
27
29
  end
28
30
 
29
- def self.package_management_command
30
- "gradle"
31
+ def package_management_command
32
+ if Platform.windows?
33
+ wrapper = 'gradlew.bat'
34
+ gradle = 'gradle.bat'
35
+ else
36
+ wrapper = './gradlew'
37
+ gradle = 'gradle'
38
+ end
39
+
40
+ File.exist?(File.join(project_path, wrapper)) ? wrapper : gradle
31
41
  end
32
42
 
33
43
  private
34
44
 
35
45
  def package_path
46
+ alternate_build_file = build_file_from_settings(project_path)
47
+ return alternate_build_file if alternate_build_file
48
+
36
49
  project_path.join('build.gradle')
37
50
  end
51
+
52
+ def build_file_from_settings(project_path)
53
+ settings_gradle_path = project_path.join 'settings.gradle'
54
+
55
+ return nil unless File.exists? settings_gradle_path
56
+
57
+ settings_gradle = File.read settings_gradle_path
58
+
59
+ match = /rootProject.buildFileName = ['"](?<build_file>.*)['"]/.match settings_gradle
60
+
61
+ return nil unless match
62
+
63
+ return project_path.join match[:build_file]
64
+ end
38
65
  end
39
66
  end
@@ -1,35 +1,49 @@
1
1
  require "xmlsimple"
2
+ require_relative "maven_dependency_finder"
2
3
 
3
4
  module LicenseFinder
4
5
  class Maven < PackageManager
6
+ def initialize(options={})
7
+ super
8
+ @ignored_groups = options[:ignored_groups]
9
+ @include_groups = options[:maven_include_groups]
10
+ end
11
+
5
12
  def current_packages
6
- command = 'mvn license:download-licenses'
13
+ command = "#{package_management_command} org.codehaus.mojo:license-maven-plugin:download-licenses"
14
+ command += " -Dlicense.excludedScopes=#{@ignored_groups.to_a.join(',')}" if @ignored_groups and !@ignored_groups.empty?
15
+
7
16
  output, success = Dir.chdir(project_path) { capture(command) }
8
17
  raise "Command '#{command}' failed to execute: #{output}" unless success
9
18
 
10
- xml = license_report.read
11
-
12
- options = {
13
- 'GroupTags' => { 'licenses' => 'license', 'dependencies' => 'dependency' },
14
- 'ForceArray' => ['license', 'dependency']
15
- }
16
- dependencies = XmlSimple.xml_in(xml, options)["dependencies"]
17
-
18
- dependencies.map do |dep|
19
- MavenPackage.new(dep, logger: logger)
19
+ dependencies = MavenDependencyFinder.new(project_path).dependencies
20
+ packages = dependencies.flat_map do |xml|
21
+ options = {
22
+ 'GroupTags' => { 'licenses' => 'license', 'dependencies' => 'dependency' },
23
+ 'ForceArray' => ['license', 'dependency']
24
+ }
25
+ contents = XmlSimple.xml_in(xml, options)["dependencies"]
26
+ contents.map do |dep|
27
+ MavenPackage.new(dep, logger: logger, include_groups: @include_groups)
28
+ end
20
29
  end
30
+ packages.uniq
21
31
  end
22
32
 
23
- def self.package_management_command
24
- "mvn"
33
+ def package_management_command
34
+ if Platform.windows?
35
+ wrapper = 'mvnw.cmd'
36
+ maven = 'mvn'
37
+ else
38
+ wrapper = './mvnw'
39
+ maven = 'mvn'
40
+ end
41
+
42
+ File.exist?(File.join(project_path, wrapper)) ? wrapper : maven
25
43
  end
26
44
 
27
45
  private
28
46
 
29
- def license_report
30
- project_path.join('target/generated-resources/licenses.xml')
31
- end
32
-
33
47
  def package_path
34
48
  project_path.join('pom.xml')
35
49
  end
@@ -0,0 +1,13 @@
1
+ module LicenseFinder
2
+ class MavenDependencyFinder
3
+ def initialize(project_path)
4
+ @project_path = project_path
5
+ end
6
+
7
+ def dependencies
8
+ Pathname
9
+ .glob(@project_path.join('**', 'target', 'generated-resources', 'licenses.xml'))
10
+ .map(&:read)
11
+ end
12
+ end
13
+ end
@@ -1,8 +1,13 @@
1
1
  module LicenseFinder
2
2
  class MavenPackage < Package
3
3
  def initialize(spec, options={})
4
+ name = spec['artifactId']
5
+ if options[:include_groups]
6
+ name = "#{spec['groupId']}:#{name}"
7
+ end
8
+
4
9
  super(
5
- spec["artifactId"],
10
+ name,
6
11
  spec["version"],
7
12
  options.merge(
8
13
  spec_licenses: Array(spec["licenses"]).map { |l| l["name"] }
@@ -29,7 +29,7 @@ module LicenseFinder
29
29
  private
30
30
 
31
31
  def direct_dependencies
32
- package_json = JSON.parse(File.read(package_path))
32
+ package_json = JSON.parse(File.read(package_path), :max_nesting => false)
33
33
  DEPENDENCY_GROUPS.map do |group|
34
34
  package_json.fetch(group, {}).keys.map do |dependency|
35
35
  {
@@ -51,14 +51,14 @@ module LicenseFinder
51
51
  end
52
52
 
53
53
  def npm_json
54
- command = 'npm list --json --long'
54
+ command = "#{NPM::package_management_command} list --json --long"
55
55
  output, success = Dir.chdir(project_path) { capture(command) }
56
56
 
57
57
  if success
58
- json = JSON(output)
58
+ json = JSON(output, :max_nesting => false)
59
59
  else
60
60
  json = begin
61
- JSON(output)
61
+ JSON(output, :max_nesting => false)
62
62
  rescue JSON::ParserError
63
63
  nil
64
64
  end
@@ -2,7 +2,7 @@ module LicenseFinder
2
2
  class Rebar < PackageManager
3
3
  def initialize(options={})
4
4
  super
5
- @command = options[:rebar_command] || "rebar"
5
+ @command = options[:rebar_command] || Rebar::package_management_command
6
6
  @deps_path = Pathname(options[:rebar_deps_dir] || "deps")
7
7
  end
8
8
 
@@ -3,7 +3,7 @@ require 'csv'
3
3
  module LicenseFinder
4
4
  class CsvReport < Report
5
5
  COMMA_SEP = ","
6
- AVAILABLE_COLUMNS = %w[name version authors licenses approved summary description homepage install_path package_manager groups]
6
+ AVAILABLE_COLUMNS = %w[name version authors licenses license_links approved summary description homepage install_path package_manager groups]
7
7
  MISSING_DEPENDENCY_TEXT = "This package is not installed. Please install to determine licenses."
8
8
 
9
9
  def initialize(dependencies, options)
@@ -51,6 +51,10 @@ module LicenseFinder
51
51
  end
52
52
  end
53
53
 
54
+ def format_license_links(dep)
55
+ dep.licenses.map(&:url).join(self.class::COMMA_SEP)
56
+ end
57
+
54
58
  def format_approved(dep)
55
59
  dep.approved? ? "Approved" : "Not approved"
56
60
  end
@@ -10,12 +10,8 @@ module LicenseFinder
10
10
  dep.status
11
11
  end
12
12
 
13
- def format_current_version(dep)
14
- dep.current_version
15
- end
16
-
17
- def format_previous_version(dep)
18
- dep.previous_version
13
+ def format_version(dep)
14
+ dep.version
19
15
  end
20
16
 
21
17
  def format_project_paths(dep)
@@ -25,7 +21,7 @@ module LicenseFinder
25
21
  private
26
22
 
27
23
  def build_columns(dependencies)
28
- columns = %w[status name current_version previous_version licenses]
24
+ columns = %w[status name version licenses]
29
25
  columns << 'project_paths' if dependencies.all? { |delta| delta.merged_package? }
30
26
  columns
31
27
  end
@@ -3,7 +3,12 @@ module LicenseFinder
3
3
  COMMA_SEP = ", "
4
4
 
5
5
  def initialize(dependencies, options={})
6
- super(dependencies, options.merge(columns: %w[name version licenses]))
6
+ super(dependencies, options)
7
+
8
+ default_columns = %w[name version licenses]
9
+ if @columns.empty?
10
+ @columns = default_columns
11
+ end
7
12
  end
8
13
  end
9
14
  end
@@ -1,3 +1,3 @@
1
1
  module LicenseFinder
2
- VERSION = "2.1.2"
2
+ VERSION = "3.0.0"
3
3
  end
@@ -43,6 +43,8 @@ Gem::Specification.new do |s|
43
43
  s.add_dependency "httparty"
44
44
  s.add_dependency "xml-simple"
45
45
  s.add_dependency "rubyzip"
46
+ # to preserve ruby 1.9.3 support
47
+ s.add_dependency 'with_env', ((RUBY_VERSION <= '1.9.3') ? '1.0.0' : '> 1.0')
46
48
 
47
49
  s.add_development_dependency "capybara", "~> 2.0.0"
48
50
  s.add_development_dependency "cocoapods", "0.34.0" if LicenseFinder::Platform.darwin?
@@ -53,8 +55,12 @@ Gem::Specification.new do |s|
53
55
  s.add_development_dependency "rspec-its"
54
56
  s.add_development_dependency "webmock", "~> 1.13"
55
57
 
58
+ # to preserve ruby < 2.2.2 support.
59
+ s.add_development_dependency 'rack', ((RUBY_VERSION < '2.2.2') ? '1.6.0' : '> 1.6')
60
+
56
61
  # temporary to preserve ruby 1.9.3 support.
57
62
  s.add_development_dependency "mime-types", "< 3.0"
63
+ s.add_development_dependency "addressable", "< 2.5.0"
58
64
 
59
65
  s.files = `git ls-files`.split("\n")
60
66
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -47,14 +47,6 @@ module LicenseFinder
47
47
  )
48
48
  expect(subject.gradle_command).to eq "secondary"
49
49
  end
50
-
51
- it "has default" do
52
- subject = described_class.new(
53
- {gradle_command: nil},
54
- {"gradle_command" => nil}
55
- )
56
- expect(subject.gradle_command).to eq "gradle --console plain"
57
- end
58
50
  end
59
51
 
60
52
  describe "decisions_file" do
@@ -26,10 +26,11 @@ module LicenseFinder
26
26
  {
27
27
  logger: logger,
28
28
  project_path: configuration.project_path,
29
- ignore_groups: Set.new,
29
+ ignored_groups: Set.new,
30
30
  go_full_version: nil,
31
31
  gradle_command: configuration.gradle_command,
32
32
  gradle_include_groups: nil,
33
+ maven_include_groups: nil,
33
34
  rebar_command: configuration.rebar_command,
34
35
  rebar_deps_dir: configuration.rebar_deps_dir
35
36
  }
@@ -6,8 +6,8 @@ module LicenseFinder
6
6
 
7
7
  let(:diff) { subject.compare(file1_content, file2_content) }
8
8
 
9
- def find_package(name)
10
- diff.find { |d| d.name == name }
9
+ def find_package_with_name(name)
10
+ diff.find_all { |d| d.name == name }
11
11
  end
12
12
 
13
13
  describe '#compare' do
@@ -16,7 +16,7 @@ module LicenseFinder
16
16
  let(:file2_content) { "nokogiri,1.6.6.2,MIT\nrspec,3.2.0,MIT" }
17
17
 
18
18
  it 'should create and set packages with added diff state' do
19
- rspec = find_package('rspec')
19
+ rspec = find_package_with_name('rspec')[0]
20
20
  expect(rspec.status).to eq :added
21
21
  end
22
22
  end
@@ -26,7 +26,7 @@ module LicenseFinder
26
26
  let(:file2_content) { "nokogiri,1.6.6.2,MIT" }
27
27
 
28
28
  it 'should create and set packages with removed diff state' do
29
- rspec = find_package('rspec')
29
+ rspec = find_package_with_name('rspec')[0]
30
30
  expect(rspec.status).to eq :removed
31
31
  end
32
32
  end
@@ -36,7 +36,7 @@ module LicenseFinder
36
36
  let(:file2_content) { "nokogiri,1.6.6.2,MIT" }
37
37
 
38
38
  it 'should create and set packages with unchanged diff state' do
39
- nokogiri = find_package('nokogiri')
39
+ nokogiri = find_package_with_name('nokogiri')[0]
40
40
  expect(nokogiri.status).to eq :unchanged
41
41
  end
42
42
  end
@@ -46,9 +46,9 @@ module LicenseFinder
46
46
  let(:file2_content) { "nokogiri,1.6.6.2,MIT\nminitest,5.7.0,MIT\nfakefs,0.6.7,BSD" }
47
47
 
48
48
  it 'should create and set packages diff states' do
49
- expect(find_package('minitest').status).to eq :added
50
- expect(find_package('rspec').status).to eq :removed
51
- expect(find_package('nokogiri').status).to eq :unchanged
49
+ expect(find_package_with_name('minitest')[0].status).to eq :added
50
+ expect(find_package_with_name('rspec')[0].status).to eq :removed
51
+ expect(find_package_with_name('nokogiri')[0].status).to eq :unchanged
52
52
  end
53
53
  end
54
54
 
@@ -56,12 +56,37 @@ module LicenseFinder
56
56
  let(:file1_content) { "rspec,3.2.0,MIT" }
57
57
  let(:file2_content) { "rspec,3.3.0,MIT" }
58
58
 
59
- it 'should set the state to unchanged and record the version change' do
60
- rspec = find_package('rspec')
59
+ it 'should add the new version and remove the previous version' do
60
+ rspecs = find_package_with_name('rspec')
61
+ expect(rspecs.size).to eq(2)
62
+ rspecs.each do |rspec|
63
+ case rspec.status
64
+ when :removed
65
+ expect(rspec.version).to eq('3.2.0')
66
+ when :added
67
+ expect(rspec.version).to eq('3.3.0')
68
+ end
69
+ end
70
+ end
61
71
 
62
- expect(rspec.status).to eq(:unchanged)
63
- expect(rspec.current_version).to eq('3.3.0')
64
- expect(rspec.previous_version).to eq('3.2.0')
72
+ context 'when there are two versions of the same dependency' do
73
+ let(:file1_content) { "rspec,3.2.0,MIT\nrspec,1.1.0,MIT\nnokogiri,1.6.6.2,MIT" }
74
+ let(:file2_content) { "rspec,3.3.0,MIT\nrspec,1.1.0,MIT\nnokogiri,1.6.6.2,MIT" }
75
+ it 'should identify which version was updated' do
76
+ rspecs = find_package_with_name('rspec')
77
+ expect(rspecs.size).to eq(3)
78
+ rspecs.each do |rspec|
79
+ case rspec.status
80
+ when :removed
81
+ expect(rspec.version).to eq('3.2.0')
82
+ when :added
83
+ expect(rspec.version).to eq('3.3.0')
84
+ else
85
+ expect(rspec.status).to eq(:unchanged)
86
+ expect(rspec.version).to eq('1.1.0')
87
+ end
88
+ end
89
+ end
65
90
  end
66
91
  end
67
92
 
@@ -70,16 +95,14 @@ module LicenseFinder
70
95
  let(:file2_content) { "rspec,3.3.0,GPLv2" }
71
96
 
72
97
  it 'should set the state to unchanged and record the version change' do
73
- rspec_old = diff.find {|p| p.previous_version == '3.2.0'}
74
- rspec_new = diff.find {|p| p.current_version == '3.3.0'}
98
+ rspec_old = diff.find {|p| p.version == '3.2.0'}
99
+ rspec_new = diff.find {|p| p.version == '3.3.0'}
75
100
 
76
101
  expect(rspec_old.status).to eq(:removed)
77
- expect(rspec_old.current_version).to eq(nil)
78
- expect(rspec_old.previous_version).to eq('3.2.0')
102
+ expect(rspec_old.version).to eq('3.2.0')
79
103
 
80
104
  expect(rspec_new.status).to eq(:added)
81
- expect(rspec_new.current_version).to eq('3.3.0')
82
- expect(rspec_new.previous_version).to eq(nil)
105
+ expect(rspec_new.version).to eq('3.3.0')
83
106
  end
84
107
  end
85
108
 
@@ -88,17 +111,17 @@ module LicenseFinder
88
111
  let(:file2_content) { "rspec,3.2.0,MIT,\"/path/to/project1,/path/to/project2\"\nrails,4.2.0,MIT,/path/to/project1" }
89
112
 
90
113
  it 'should show the diff of the reports' do
91
- rspec = find_package('rspec')
114
+ rspec = find_package_with_name('rspec')[0]
92
115
  expect(rspec.status).to eq(:unchanged)
93
- expect(rspec.current_version).to eq('3.2.0')
94
- expect(rspec.previous_version).to eq('3.2.0')
95
- expect(rspec.subproject_paths).to match_array(['/path/to/project1', '/path/to/project2'])
116
+ expect(rspec.version).to eq('3.2.0')
117
+ paths = ['/path/to/project1', '/path/to/project2'].map { |p| File.absolute_path(p) }
118
+ expect(rspec.subproject_paths).to match_array(paths)
96
119
 
97
- rails = find_package('rails')
120
+ rails = find_package_with_name('rails')[0]
98
121
  expect(rails.status).to eq(:added)
99
- expect(rails.current_version).to eq('4.2.0')
100
- expect(rails.previous_version).to eq(nil)
101
- expect(rails.subproject_paths).to match_array(['/path/to/project1'])
122
+ expect(rails.version).to eq('4.2.0')
123
+ paths = ['/path/to/project1'].map { |p| File.absolute_path(p) }
124
+ expect(rails.subproject_paths).to match_array(paths)
102
125
  end
103
126
  end
104
127
  end