summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-04-13 10:49:11 -0600
committermo khan <mo.khan@gmail.com>2020-04-13 10:49:11 -0600
commit44c0d2b75ea2c815d86c5c211410cb1e0a2a498f (patch)
tree5bd11175d7772aced3bdc5051057071c2e855470
parent6a901f291714ec319e9cd027d12aa5f42b12a9dd (diff)
Extract singletons for git dbs
-rw-r--r--.rspec1
-rw-r--r--lib/spandx.rb10
-rw-r--r--lib/spandx/core/cache.rb13
-rw-r--r--lib/spandx/core/license_plugin.rb5
-rw-r--r--lib/spandx/spdx/catalogue.rb2
-rw-r--r--lib/spandx/spdx/license.rb2
-rw-r--r--spec/fixtures/js/yarn/long_yarn.lock.expected (renamed from spec/fixtures/js/yarn/lol)0
-rw-r--r--spec/integration/core/cache_spec.rb8
-rw-r--r--spec/unit/js/parsers/yarn_spec.rb2
-rw-r--r--tmp/.keep0
10 files changed, 19 insertions, 24 deletions
diff --git a/.rspec b/.rspec
index bd5e028..47855a8 100644
--- a/.rspec
+++ b/.rspec
@@ -1,3 +1,4 @@
--format progress
+--format ParallelTests::RSpec::RuntimeLogger --out tmp/parallel_runtime_rspec.log
--color
--require spec_helper
diff --git a/lib/spandx.rb b/lib/spandx.rb
index e75e9b2..8e764d2 100644
--- a/lib/spandx.rb
+++ b/lib/spandx.rb
@@ -37,10 +37,12 @@ module Spandx
@logger ||= Logger.new('/dev/null')
end
- def spdx_db
- @spdx_db ||= Spandx::Core::Database
- .new(url: 'https://github.com/spdx/license-list-data.git')
- .tap(&:update!)
+ def git
+ @git ||= {
+ cache: ::Spandx::Core::Database.new(url: 'https://github.com/mokhan/spandx-index.git'),
+ rubygems: ::Spandx::Core::Database.new(url: 'https://github.com/mokhan/spandx-rubygems.git'),
+ spdx: ::Spandx::Core::Database.new(url: 'https://github.com/spdx/license-list-data.git'),
+ }
end
end
end
diff --git a/lib/spandx/core/cache.rb b/lib/spandx/core/cache.rb
index 71f254e..362648d 100644
--- a/lib/spandx/core/cache.rb
+++ b/lib/spandx/core/cache.rb
@@ -5,9 +5,9 @@ module Spandx
class Cache
attr_reader :db, :package_manager
- def initialize(package_manager, url:)
+ def initialize(package_manager, db: Spandx.git[:cache])
@package_manager = package_manager
- @db = ::Spandx::Core::Database.new(url: url)
+ @db = db
@cache = {}
@lines = {}
end
@@ -18,15 +18,6 @@ module Spandx
found ? found[2].split('-|-') : []
end
- def self.for(package_manager)
- @caches ||= {}
- @caches.fetch(package_manager) do |key|
- repo = package_manager.to_sym == :rubygems ? 'rubygems' : 'index'
- cache = new(package_manager, url: "https://github.com/mokhan/spandx-#{repo}.git")
- @caches[key] = cache
- end
- end
-
private
def digest_for(components)
diff --git a/lib/spandx/core/license_plugin.rb b/lib/spandx/core/license_plugin.rb
index 924eb60..ceeac90 100644
--- a/lib/spandx/core/license_plugin.rb
+++ b/lib/spandx/core/license_plugin.rb
@@ -24,8 +24,9 @@ module Spandx
results && !results.empty? ? results : gateway_for(dependency).licenses_for(dependency)
end
- def cache_for(dependency)
- Cache.for(dependency.package_manager)
+ def cache_for(dependency, git: Spandx.git)
+ db = git[dependency.package_manager.to_sym] || git[:cache]
+ Spandx::Core::Cache.new(dependency.package_manager, db: db)
end
def known?(package_manager)
diff --git a/lib/spandx/spdx/catalogue.rb b/lib/spandx/spdx/catalogue.rb
index 66c326e..371c3bd 100644
--- a/lib/spandx/spdx/catalogue.rb
+++ b/lib/spandx/spdx/catalogue.rb
@@ -37,7 +37,7 @@ module Spandx
end
def from_git
- from_json(Spandx.spdx_db.read('json/licenses.json'))
+ from_json(Spandx.git[:spdx].read('json/licenses.json'))
end
def empty
diff --git a/lib/spandx/spdx/license.rb b/lib/spandx/spdx/license.rb
index 6b2082f..6bfb81a 100644
--- a/lib/spandx/spdx/license.rb
+++ b/lib/spandx/spdx/license.rb
@@ -84,7 +84,7 @@ module Spandx
private
def raw_content
- @raw_content ||= (Spandx.spdx_db.read("text/#{id}.txt") || '')
+ @raw_content ||= (Spandx.git[:spdx].read("text/#{id}.txt") || '')
end
end
end
diff --git a/spec/fixtures/js/yarn/lol b/spec/fixtures/js/yarn/long_yarn.lock.expected
index 2208afc..2208afc 100644
--- a/spec/fixtures/js/yarn/lol
+++ b/spec/fixtures/js/yarn/long_yarn.lock.expected
diff --git a/spec/integration/core/cache_spec.rb b/spec/integration/core/cache_spec.rb
index db8def2..8f56c55 100644
--- a/spec/integration/core/cache_spec.rb
+++ b/spec/integration/core/cache_spec.rb
@@ -1,9 +1,9 @@
# frozen_string_literal: true
RSpec.describe Spandx::Core::Cache do
- RSpec.shared_examples 'each data file' do |package_manager, url|
+ RSpec.shared_examples 'each data file' do |package_manager, key|
describe "#licenses_for (#{package_manager})" do
- subject { described_class.new(package_manager, url: url) }
+ subject { described_class.new(package_manager, db: Spandx.git[key]) }
(0x00..0xFF).map { |x| x.to_s(16).upcase.rjust(2, '0').downcase }.each do |hex|
context hex do
@@ -24,6 +24,6 @@ RSpec.describe Spandx::Core::Cache do
end
end
- include_examples 'each data file', 'rubygems', 'https://github.com/mokhan/spandx-rubygems.git'
- include_examples 'each data file', 'nuget', 'https://github.com/mokhan/spandx-index.git'
+ include_examples 'each data file', 'rubygems', :rubygems
+ include_examples 'each data file', 'nuget', :cache
end
diff --git a/spec/unit/js/parsers/yarn_spec.rb b/spec/unit/js/parsers/yarn_spec.rb
index 93e8eb5..4e1fdb2 100644
--- a/spec/unit/js/parsers/yarn_spec.rb
+++ b/spec/unit/js/parsers/yarn_spec.rb
@@ -20,7 +20,7 @@ RSpec.describe Spandx::Js::Parsers::Yarn do
describe '#parse long lock file' do
let(:lockfile) { fixture_file('js/yarn/long_yarn.lock') }
- let(:expected_dependencies) { fixture_file_content('js/yarn/lol').lines.map(&:chomp) }
+ let(:expected_dependencies) { fixture_file_content('js/yarn/long_yarn.lock.expected').lines.map(&:chomp) }
let(:result) { subject.parse(lockfile) }
specify { expect(result.map { |x| "#{x.name}@#{x.version}" }) .to match_array(expected_dependencies) }
diff --git a/tmp/.keep b/tmp/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tmp/.keep