summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Gemfile.lock9
-rw-r--r--license-management.gemspec1
-rw-r--r--spec/integration/c/conan_spec.rb1
-rw-r--r--spec/integration/dotnet/nuget_spec.rb29
-rw-r--r--spec/integration/go/modules_spec.rb16
-rw-r--r--spec/integration/rust/cargo_spec.rb16
-rw-r--r--spec/spec_helper.rb2
7 files changed, 47 insertions, 27 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index 908e411..e505b27 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -34,6 +34,9 @@ GEM
aws-sigv4 (~> 1.1)
aws-sigv4 (1.2.1)
aws-eventstream (~> 1, >= 1.0.2)
+ benchmark-malloc (0.2.0)
+ benchmark-perf (0.6.0)
+ benchmark-trend (0.4.0)
byebug (11.1.3)
chef-cleanroom (1.0.2)
chef-config (16.2.50)
@@ -127,6 +130,11 @@ GEM
rspec-core (~> 3.9.0)
rspec-expectations (~> 3.9.0)
rspec-mocks (~> 3.9.0)
+ rspec-benchmark (0.6.0)
+ benchmark-malloc (~> 0.2)
+ benchmark-perf (~> 0.6)
+ benchmark-trend (~> 0.4)
+ rspec (>= 3.0)
rspec-core (3.9.1)
rspec-support (~> 3.9.1)
rspec-expectations (3.9.1)
@@ -184,6 +192,7 @@ DEPENDENCIES
omnibus (~> 7.0)
omnibus-software!
rspec (~> 3.9)
+ rspec-benchmark (~> 0.6)
rspec_junit_formatter (~> 0.4)
simplecov (~> 0.18)
simplecov-cobertura (~> 1.3)
diff --git a/license-management.gemspec b/license-management.gemspec
index a58c5ea..fcdb84d 100644
--- a/license-management.gemspec
+++ b/license-management.gemspec
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
spec.add_development_dependency 'json-schema', '~> 2.8'
spec.add_development_dependency 'omnibus', '~> 7.0'
spec.add_development_dependency 'rspec', '~> 3.9'
+ spec.add_development_dependency 'rspec-benchmark', '~> 0.6'
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4'
spec.add_development_dependency 'simplecov', '~> 0.18'
spec.add_development_dependency 'simplecov-cobertura', '~> 1.3'
diff --git a/spec/integration/c/conan_spec.rb b/spec/integration/c/conan_spec.rb
index 86025bd..52b7a39 100644
--- a/spec/integration/c/conan_spec.rb
+++ b/spec/integration/c/conan_spec.rb
@@ -15,6 +15,7 @@ RSpec.describe "conan" do
end
specify { expect(subject).to match_schema }
+ specify { expect { subject }.to perform_under(60).sec.warmup(0).times }
specify { expect(subject.dependency_names).to match_array(%w[openssl poco]) }
specify { expect(subject.licenses_for('openssl')).to match_array(['OpenSSL']) }
specify { expect(subject.licenses_for('poco')).to match_array(['BSL-1.0']) }
diff --git a/spec/integration/dotnet/nuget_spec.rb b/spec/integration/dotnet/nuget_spec.rb
index 5bda5db..c72296e 100644
--- a/spec/integration/dotnet/nuget_spec.rb
+++ b/spec/integration/dotnet/nuget_spec.rb
@@ -3,6 +3,10 @@
require 'spec_helper'
RSpec.describe "nuget" do
+ subject { runner.scan(env: env) }
+
+ let(:env) { {} }
+
before do
system("rm -fr /opt/gitlab/.nuget/packages")
end
@@ -28,13 +32,14 @@ RSpec.describe "nuget" do
XML
end
- it 'produces a valid report' do
+ before do
runner.add_file('packages.config', packages_config)
- report = runner.scan
+ end
- expect(report).to match_schema
- expect(report[:licenses].count).not_to be_zero
- expect(report.dependency_names).to match_array([
+ it 'produces a valid report' do
+ expect(subject).to match_schema
+ expect(subject[:licenses].count).not_to be_zero
+ expect(subject.dependency_names).to match_array([
"Microsoft.CodeDom.Providers.DotNetCompilerPlatform",
"Microsoft.Net.Compilers",
"Microsoft.Web.Infrastructure",
@@ -47,6 +52,8 @@ RSpec.describe "nuget" do
"jive"
])
end
+
+ specify { expect { subject }.to perform_under(60).sec.warmup(0).times }
end
context "when a project has multiple nuget packages.config in different sub directories" do
@@ -80,8 +87,6 @@ RSpec.describe "nuget" do
end
context "when a project has a dependency that has indirect dependencies" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('dotnet/nuget-transient-dependencies'))
end
@@ -103,8 +108,6 @@ RSpec.describe "nuget" do
end
context "when scanning a VB.NET project" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('dotnet/nuget-vbproj'))
end
@@ -117,8 +120,6 @@ RSpec.describe "nuget" do
end
context "when scanning a F# project" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('dotnet/nuget-fsproj'))
end
@@ -131,8 +132,6 @@ RSpec.describe "nuget" do
end
context "when scanning a solution file with multiple projects" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('dotnet/nuget-sln'))
end
@@ -201,10 +200,6 @@ RSpec.describe "nuget" do
end
context "when fetching dependencies from a custom registry" do
- subject { runner.scan(env: env) }
-
- let(:env) { {} }
-
before do
add_host('nuget.test', '127.0.0.1')
start_proxy_server
diff --git a/spec/integration/go/modules_spec.rb b/spec/integration/go/modules_spec.rb
index 3edef74..7d85b9f 100644
--- a/spec/integration/go/modules_spec.rb
+++ b/spec/integration/go/modules_spec.rb
@@ -3,6 +3,10 @@
require 'spec_helper'
RSpec.describe "modules" do
+ subject { runner.scan(env: env) }
+
+ let(:env) { {} }
+
before do
# Delete go module cache
system('rm -fr /opt/gitlab/.local/pkg')
@@ -13,8 +17,6 @@ RSpec.describe "modules" do
['1.11', '1.12', '1.13', '1.14'].each do |version|
context "when scanning a go.mod and go.sum files with v#{version}" do
- subject { runner.scan }
-
before do
runner.add_file('main.go', fixture_file_content('go/main.go'))
runner.add_file('go.mod', fixture_file_content('go/go.mod'))
@@ -53,8 +55,6 @@ RSpec.describe "modules" do
end
context "when scanning the `gitaly` project" do
- subject { runner.scan }
-
before do
runner.clone('https://gitlab.com/gitlab-org/gitaly.git')
end
@@ -64,11 +64,11 @@ RSpec.describe "modules" do
expect(subject[:licenses]).not_to be_empty
expect(subject[:dependencies]).not_to be_empty
end
+
+ specify { expect { subject }.to perform_under(60).sec.warmup(0).times }
end
context "when scanning the `gitlab-runner` project" do
- subject { runner.scan }
-
before do
runner.clone('https://gitlab.com/gitlab-org/gitlab-runner.git')
end
@@ -82,8 +82,6 @@ RSpec.describe "modules" do
end
context "when scanning a project with vendored modules" do
- subject { runner.scan }
-
before do
runner.mount(dir: fixture_file('go/1.14-vendored-modules'))
end
@@ -108,8 +106,6 @@ RSpec.describe "modules" do
end
context "when scanning a project sourced from a TLS endpoint with a X.509 certificate signed by a private authority" do
- subject { runner.scan(env: env) }
-
before do
add_host('goproxy.test', '127.0.0.1')
start_proxy_server
diff --git a/spec/integration/rust/cargo_spec.rb b/spec/integration/rust/cargo_spec.rb
index 3ab010d..a0f2550 100644
--- a/spec/integration/rust/cargo_spec.rb
+++ b/spec/integration/rust/cargo_spec.rb
@@ -7,6 +7,11 @@ RSpec.describe "cargo" do
let(:env) { {} }
+ before do
+ install_dir = '/opt/asdf/installs/rust'
+ system("rm -r #{install_dir}") if Dir.exist?(install_dir)
+ end
+
context "when scanning a cargo project" do
before do
runner.mount(dir: fixture_file('rust/cargo/hello_world'))
@@ -57,4 +62,15 @@ RSpec.describe "cargo" do
expect(subject.dependency_names).not_to include('pretty_assertions')
end
end
+
+ context "when scanning https://gitlab.com/inko-lang/inko.git" do
+ let(:env) { { 'LICENSE_FINDER_CLI_OPTS' => '--aggregate-paths=vm compiler' } }
+
+ before do
+ runner.clone('https://gitlab.com/inko-lang/inko.git')
+ end
+
+ specify { expect(subject).to match_schema }
+ specify { expect { subject }.to perform_under(60).sec.warmup(0).times }
+ end
end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 618175b..2c42e92 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -6,6 +6,7 @@ require 'license/management'
require 'json'
require 'json-schema'
require 'securerandom'
+require 'rspec-benchmark'
require 'support/fixture_file_helper'
require 'support/report'
require 'support/project_helper'
@@ -15,6 +16,7 @@ require 'support/proxy_helper'
require 'support/shared'
RSpec.configure do |config|
+ config.include RSpec::Benchmark::Matchers
config.include FixtureFileHelper
config.include IntegrationTestHelper, type: :integration
config.define_derived_metadata(file_path: %r{/spec/integration}) do |metadata|