diff options
| -rw-r--r-- | lib/spandx/core/license_plugin.rb | 4 | ||||
| -rw-r--r-- | lib/spandx/python/license_plugin.rb | 30 | ||||
| -rw-r--r-- | spec/unit/core/license_plugin_spec.rb | 1 | ||||
| -rw-r--r-- | spec/unit/python/license_plugin_spec.rb | 29 |
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 |
