summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spandx/core/license_plugin.rb4
-rw-r--r--lib/spandx/python/license_plugin.rb30
-rw-r--r--spec/unit/core/license_plugin_spec.rb1
-rw-r--r--spec/unit/python/license_plugin_spec.rb29
4 files changed, 4 insertions, 60 deletions
diff --git a/lib/spandx/core/license_plugin.rb b/lib/spandx/core/license_plugin.rb
index 2d9228f..291f52e 100644
--- a/lib/spandx/core/license_plugin.rb
+++ b/lib/spandx/core/license_plugin.rb
@@ -23,7 +23,7 @@ module Spandx
private
def known?(package_manager)
- [:nuget, :maven, :rubygems, :npm, :yarn].include?(package_manager)
+ [:nuget, :maven, :rubygems, :npm, :yarn, :pypi].include?(package_manager)
end
def gateway_for(dependency)
@@ -41,6 +41,8 @@ module Spandx
else
Spandx::Js::YarnPkg.new
end
+ when :pypi
+ dependency.meta.empty? ? ::Spandx::Python::Pypi.new : ::Spandx::Python::Pypi.new(sources: ::Spandx::Python::Source.sources_from(dependency.meta))
end
end
end
diff --git a/lib/spandx/python/license_plugin.rb b/lib/spandx/python/license_plugin.rb
deleted file mode 100644
index c5cf5fc..0000000
--- a/lib/spandx/python/license_plugin.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-# frozen_string_literal: true
-
-module Spandx
- module Python
- class LicensePlugin < Spandx::Core::Plugin
- def initialize(catalogue: Spdx::Catalogue.from_git)
- @guess = Core::Guess.new(catalogue)
- end
-
- def enhance(dependency)
- return dependency unless dependency.managed_by?(:pypi)
-
- gateway = ::Spandx::Core::CompositeGateway.new(
- ::Spandx::Core::Cache.for(dependency.package_manager),
- python_gateway(dependency)
- )
- gateway.licenses_for(dependency.name, dependency.version).each do |text|
- dependency.licenses << @guess.license_for(text)
- end
- dependency
- end
-
- private
-
- def python_gateway(dependency)
- dependency.meta.empty? ? ::Spandx::Python::Pypi.new : ::Spandx::Python::Pypi.new(sources: ::Spandx::Python::Source.sources_from(dependency.meta))
- end
- end
- end
-end
diff --git a/spec/unit/core/license_plugin_spec.rb b/spec/unit/core/license_plugin_spec.rb
index 3aa4b16..75c2c66 100644
--- a/spec/unit/core/license_plugin_spec.rb
+++ b/spec/unit/core/license_plugin_spec.rb
@@ -12,6 +12,7 @@ RSpec.describe Spandx::Core::LicensePlugin do
end
[
+ { package_manager: :pypi, name: 'six', version: '1.14.0', expected: ['MIT'] },
{ package_manager: :nuget, name: 'NHibernate', version: '5.2.6', expected: ['LGPL-2.1-only'] },
{ package_manager: :nuget, name: 'System.Security.Principal.Windows', version: '4.3.0', expected: ['Nonstandard'] },
{ package_manager: :nuget, name: 'jive', version: '0.1.0', expected: ['MIT'] },
diff --git a/spec/unit/python/license_plugin_spec.rb b/spec/unit/python/license_plugin_spec.rb
deleted file mode 100644
index 1a531c0..0000000
--- a/spec/unit/python/license_plugin_spec.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-# frozen_string_literal: true
-
-RSpec.describe Spandx::Python::LicensePlugin do
- subject { described_class.new }
-
- describe '#enhance' do
- context 'when the dependency is not managed by the `pypi` package manager' do
- let(:dependency) { ::Spandx::Core::Dependency.new(package_manager: :rubygems, name: 'spandx', version: '0.1.0') }
-
- specify { expect(subject.enhance(dependency)).to eql(dependency) }
- end
-
- [
- { package_manager: :pypi, name: 'six', version: '1.14.0', expected: ['MIT'] },
- ].each do |item|
- context "#{item[:package_manager]}-#{item[:name]}-#{item[:version]}" do
- let(:dependency) { ::Spandx::Core::Dependency.new(package_manager: item[:package_manager], name: item[:name], version: item[:version]) }
-
- let(:results) do
- VCR.use_cassette("#{item[:package_manager]}-#{item[:name]}-#{item[:version]}") do
- subject.enhance(dependency).licenses
- end
- end
-
- specify { expect(results.map(&:id)).to match_array(item[:expected]) }
- end
- end
- end
-end