summaryrefslogtreecommitdiff
path: root/spec/integration
diff options
context:
space:
mode:
Diffstat (limited to 'spec/integration')
-rw-r--r--spec/integration/c/conan_spec.rb62
-rw-r--r--spec/integration/dotnet/examples_spec.rb2
-rw-r--r--spec/integration/dotnet/nuget_spec.rb6
-rw-r--r--spec/integration/go/modules_spec.rb4
-rw-r--r--spec/integration/java/gradle_spec.rb14
-rw-r--r--spec/integration/java/maven_spec.rb10
-rw-r--r--spec/integration/js/bower_spec.rb6
-rw-r--r--spec/integration/js/npm_spec.rb10
-rw-r--r--spec/integration/js/yarn_spec.rb4
-rw-r--r--spec/integration/php/composer_spec.rb2
-rw-r--r--spec/integration/python/pip_spec.rb6
-rw-r--r--spec/integration/python/pipenv_spec.rb12
-rw-r--r--spec/integration/ruby/bundler_spec.rb8
13 files changed, 104 insertions, 42 deletions
diff --git a/spec/integration/c/conan_spec.rb b/spec/integration/c/conan_spec.rb
new file mode 100644
index 0000000..b8375e0
--- /dev/null
+++ b/spec/integration/c/conan_spec.rb
@@ -0,0 +1,62 @@
+require 'spec_helper'
+
+RSpec.describe "conan" do
+ context "when scanning a C++ project" do
+ subject { runner.scan(env: env) }
+
+ let(:env) { { 'LICENSE_FINDER_CLI_OPTS' => '--project-path=libraries/poco/md5' } }
+
+ before do
+ runner.clone('https://github.com/conan-io/examples.git')
+ end
+
+ specify { expect(subject).to match_schema }
+ 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']) }
+ end
+
+ context "when scanning a folly project" do
+ subject { runner.scan(env: env) }
+
+ let(:env) { { 'LICENSE_FINDER_CLI_OPTS' => '--project-path=libraries/folly/basic' } }
+
+ before do
+ runner.clone('https://github.com/conan-io/examples.git')
+ end
+
+ specify { expect(subject).to match_schema }
+ specify { expect(subject.licenses_for('boost')).to match_array(['BSL-1.0']) }
+ specify { expect(subject.licenses_for('bzip2')).to match_array(['bzip2-1.0.8']) }
+ specify { expect(subject.licenses_for('double-conversion')).to match_array(['BSD-3-Clause']) }
+ specify { expect(subject.licenses_for('folly')).to match_array(['Apache-2.0']) }
+ specify { expect(subject.licenses_for('gflags')).to match_array(['BSD-3-Clause']) }
+ specify { expect(subject.licenses_for('glog')).to match_array(['BSD-3-Clause']) }
+ specify { expect(subject.licenses_for('libdwarf')).to match_array(['LGPL-2.1']) }
+ specify { expect(subject.licenses_for('libelf')).to match_array(['LGPL-2.0']) }
+ specify { expect(subject.licenses_for('libevent')).to match_array(['BSD-3-Clause']) }
+ specify { expect(subject.licenses_for('libiberty')).to match_array(['LGPL-2.1']) }
+ specify { expect(subject.licenses_for('libsodium')).to match_array(['ISC']) }
+ specify { expect(subject.licenses_for('libunwind')).to match_array(['MIT']) }
+ specify { expect(subject.licenses_for('lz4')).to match_array(['BSD-2-Clause', 'BSD-3-Clause']) }
+ specify { expect(subject.licenses_for('openssl')).to match_array(['OpenSSL']) }
+ specify { expect(subject.licenses_for('snappy')).to match_array(['BSD-3-Clause']) }
+ specify { expect(subject.licenses_for('zlib')).to match_array(['Zlib']) }
+ specify { expect(subject.licenses_for('zstd')).to match_array(['BSD-3-Clause']) }
+ end
+
+ context "when scanning a project with cmake" do
+ subject { runner.scan(env: env) }
+
+ let(:env) { { 'LICENSE_FINDER_CLI_OPTS' => '--project-path=libraries/protobuf/serialization' } }
+
+ before do
+ runner.clone('https://github.com/conan-io/examples.git')
+ end
+
+ specify { expect(subject).to match_schema }
+ specify { expect(subject.dependency_names).to match_array(%w[protobuf protoc_installer]) }
+ specify { expect(subject.licenses_for('protobuf')).to match_array(['BSD-3-Clause']) }
+ specify { expect(subject.licenses_for('protoc_installer')).to match_array(['BSD-3-Clause']) }
+ end
+end
diff --git a/spec/integration/dotnet/examples_spec.rb b/spec/integration/dotnet/examples_spec.rb
index 13f4712..8b325b7 100644
--- a/spec/integration/dotnet/examples_spec.rb
+++ b/spec/integration/dotnet/examples_spec.rb
@@ -5,7 +5,7 @@ RSpec.describe ".NET Core" do
runner.clone('https://github.com/microsoft/RockPaperScissorsLizardSpock.git')
report = runner.scan(env: { 'LICENSE_FINDER_CLI_OPTS' => '--recursive' })
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:licenses].count).not_to be_zero
expect(report[:dependencies].count).not_to be_zero
end
diff --git a/spec/integration/dotnet/nuget_spec.rb b/spec/integration/dotnet/nuget_spec.rb
index 6eeb261..c97c352 100644
--- a/spec/integration/dotnet/nuget_spec.rb
+++ b/spec/integration/dotnet/nuget_spec.rb
@@ -26,7 +26,7 @@ RSpec.describe "nuget" do
runner.add_file('packages.config', packages_config)
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:licenses].count).not_to be_zero
expect(report.dependency_names).to match_array([
"Microsoft.CodeDom.Providers.DotNetCompilerPlatform",
@@ -67,7 +67,7 @@ RSpec.describe "nuget" do
runner.add_file('winforms/packages.config', winforms_packages)
report = runner.scan(env: { 'LICENSE_FINDER_CLI_OPTS' => '--recursive' })
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report.licenses_for('jive')).to match_array(['MIT'])
expect(report.licenses_for('MvcMailer')).to match_array(['MIT'])
end
@@ -87,7 +87,7 @@ RSpec.describe "nuget" do
runner.add_file('packages.config', packages)
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:licenses].count).not_to be_zero
expect(report[:licenses].map { |x| x[:id] }.uniq).to match_array(['LGPL-2.1', 'Apache-2.0', 'BSD-3-Clause'])
expect(report.dependency_names).to match_array([
diff --git a/spec/integration/go/modules_spec.rb b/spec/integration/go/modules_spec.rb
index d8e4e48..66dadb0 100644
--- a/spec/integration/go/modules_spec.rb
+++ b/spec/integration/go/modules_spec.rb
@@ -14,7 +14,7 @@ RSpec.describe "modules" do
runner.add_file('.tool-versions', "golang #{version}")
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify { expect(subject[:licenses]).not_to be_empty }
specify do
@@ -51,7 +51,7 @@ RSpec.describe "modules" do
runner.clone('https://gitlab.com/gitlab-org/gitaly.git')
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify { expect(subject[:licenses]).not_to be_empty }
specify { expect(subject[:dependencies]).not_to be_empty }
end
diff --git a/spec/integration/java/gradle_spec.rb b/spec/integration/java/gradle_spec.rb
index d2ddaf1..25336c1 100644
--- a/spec/integration/java/gradle_spec.rb
+++ b/spec/integration/java/gradle_spec.rb
@@ -19,7 +19,7 @@ plugins {
runner.add_file('build.gradle', content)
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:licenses]).to be_empty
expect(report[:dependencies]).to be_empty
end
@@ -34,7 +34,7 @@ plugins {
end
it 'is able to detect licenses' do
- expect(result).to match_schema(version: '2.0')
+ expect(result).to match_schema
expect(result[:licenses]).not_to be_empty
[
@@ -61,7 +61,7 @@ plugins {
runner.mount(dir: fixture_file('java/gradle/offline-environment/'))
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify do
expect(subject.dependency_names).to match_array([
@@ -102,7 +102,7 @@ plugins {
runner.add_file('build.gradle', fixture_file_content("java/11/build.gradle"))
end
- specify { expect(report).to match_schema(version: '2.0') }
+ specify { expect(report).to match_schema }
specify { expect { report }.to change { Dir.glob("#{runner.project_path}/build/reports/profile/profile-*.html").count }.from(0).to(1) }
specify { expect(report.dependency_names).to match_array(['postgresql']) }
specify { expect(report.licenses_for('postgresql')).to match_array(['BSD-2-Clause']) }
@@ -117,7 +117,7 @@ plugins {
it 'returns an empty report because the plugin we use does not work in this version of the gradle API' do
report = runner.scan(env: { 'LM_JAVA_VERSION' => '8' })
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:dependencies]).to be_empty
expect(report[:licenses]).to be_empty
end
@@ -133,7 +133,7 @@ plugins {
runner.add_file('settings.gradle.kts', 'rootProject.name = "example"')
end
- specify { expect(report).to match_schema(version: '2.0') }
+ specify { expect(report).to match_schema }
specify { expect(report.dependency_names).to match_array(['postgresql']) }
specify { expect(report.licenses_for('postgresql')).to match_array(['BSD-2-Clause']) }
end
@@ -153,7 +153,7 @@ plugins {
runner.add_file('settings.gradle', 'rootProject.name = "example"')
end
- specify { expect(report).to match_schema(version: '2.0') }
+ specify { expect(report).to match_schema }
specify { expect(report.dependency_names).to match_array(['postgresql']) }
specify { expect(report.licenses_for('postgresql')).to match_array(['BSD-2-Clause']) }
end
diff --git a/spec/integration/java/maven_spec.rb b/spec/integration/java/maven_spec.rb
index d45c99d..fa57752 100644
--- a/spec/integration/java/maven_spec.rb
+++ b/spec/integration/java/maven_spec.rb
@@ -12,7 +12,7 @@ RSpec.describe "maven" do
'CI_PROJECT_ID' => '6130122'
})
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report.dependency_names).to match_array(['example'])
expect(report.licenses_for('example')).to match_array(['MIT'])
end
@@ -26,7 +26,7 @@ RSpec.describe "maven" do
'MAVEN_CLI_OPTS' => "--settings my_settings.xml"
})
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:dependencies]).to match_array([{ name: 'example', url: '', description: '', paths: ['.'], licenses: ['MIT'] }])
end
end
@@ -45,7 +45,7 @@ RSpec.describe "maven" do
'SETUP_CMD' => 'bash custom.sh'
})
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
end
end
@@ -57,7 +57,7 @@ RSpec.describe "maven" do
it 'detects dependences from each module' do
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:dependencies]).not_to be_empty
[
@@ -96,7 +96,7 @@ RSpec.describe "maven" do
end
end
- specify { expect(report).to match_schema(version: '2.0') }
+ specify { expect(report).to match_schema }
specify { expect(report.dependency_names).to match_array(['jackson-core']) }
specify { expect(report.licenses_for('jackson-core')).to match_array(['Apache-2.0']) }
end
diff --git a/spec/integration/js/bower_spec.rb b/spec/integration/js/bower_spec.rb
index e6d9012..5a4f72d 100644
--- a/spec/integration/js/bower_spec.rb
+++ b/spec/integration/js/bower_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe "bower" do
runner.add_file('bower.json', fixture_file_content('js/bower/bower.json'))
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify { expect(subject.dependency_names).to match_array(['cli', 'ev-emitter', 'example-project', 'fizzy-ui-utils', 'get-size', 'jquery', 'masonry-layout', 'matches-selector', 'outlayer', 'stimulus.umd']) }
specify { expect(subject.licenses_for('cli')).to match_array(['Apache-2.0', 'BSD-3-Clause', 'ISC', 'MIT']) }
specify { expect(subject.licenses_for('ev-emitter')).to match_array(['MIT']) }
@@ -41,7 +41,7 @@ RSpec.describe "bower" do
end
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify { expect(subject.dependency_names).to match_array(%w[js-bower lodash]) }
specify { expect(subject.licenses_for('js-bower')).to match_array(['ISC']) }
specify { expect(subject.licenses_for('lodash')).to match_array(['MIT']) }
@@ -59,7 +59,7 @@ RSpec.describe "bower" do
runner.clone(git_repo)
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify { expect(subject.dependency_names).not_to be_empty }
end
end
diff --git a/spec/integration/js/npm_spec.rb b/spec/integration/js/npm_spec.rb
index 0658df6..13cbd15 100644
--- a/spec/integration/js/npm_spec.rb
+++ b/spec/integration/js/npm_spec.rb
@@ -15,7 +15,7 @@ RSpec.describe "npm" do
end
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify { expect(subject.dependency_names).to match_array(['example']) }
end
@@ -26,7 +26,7 @@ RSpec.describe "npm" do
runner.mount(dir: fixture_file('js/single-declared-dependency'))
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify do
[
@@ -173,7 +173,7 @@ RSpec.describe "npm" do
runner.add_file('package.json', fixture_file_content('js/single-declared-dependency/package.json'))
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify do
[
@@ -328,7 +328,7 @@ RSpec.describe "npm" do
end
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
[
["2md", "0.0.4", ["Apache-2.0"]],
@@ -497,7 +497,7 @@ RSpec.describe "npm" do
end
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify { expect(subject.dependency_names).to match_array(%w[js-npm lodash]) }
specify { expect(subject.licenses_for('js-npm')).to match_array(['MIT']) }
specify { expect(subject.licenses_for('lodash')).to match_array(['MIT']) }
diff --git a/spec/integration/js/yarn_spec.rb b/spec/integration/js/yarn_spec.rb
index 1e0eb52..a5a9695 100644
--- a/spec/integration/js/yarn_spec.rb
+++ b/spec/integration/js/yarn_spec.rb
@@ -11,7 +11,7 @@ RSpec.describe "yarn" do
runner.add_file("yarn.lock", fixture_file_content('js/yarn/single-declared-dependency/yarn.lock'))
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify do
[
@@ -182,7 +182,7 @@ lodash@4.17.10:
end
end
- specify { expect(subject).to match_schema(version: '2.0') }
+ specify { expect(subject).to match_schema }
specify { expect(subject.dependency_names).to match_array(%w[lodash]) }
specify { expect(subject.licenses_for('lodash')).to match_array(['MIT']) }
end
diff --git a/spec/integration/php/composer_spec.rb b/spec/integration/php/composer_spec.rb
index 62ff598..c186285 100644
--- a/spec/integration/php/composer_spec.rb
+++ b/spec/integration/php/composer_spec.rb
@@ -10,7 +10,7 @@ RSpec.describe "composer" do
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:version]).not_to be_empty
expect(report[:licenses]).not_to be_empty
expect(report.dependency_names).to match_array(%w[
diff --git a/spec/integration/python/pip_spec.rb b/spec/integration/python/pip_spec.rb
index 8e3ec3d..f47bbe6 100644
--- a/spec/integration/python/pip_spec.rb
+++ b/spec/integration/python/pip_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe "pip" do
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:version]).to start_with('2')
expect(report.dependency_names).to include("sentry-sdk")
expect(report.licenses_for('sentry-sdk')).to match_array(["BSD-4-Clause"])
@@ -37,7 +37,7 @@ RSpec.describe "pip" do
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:version]).to start_with('2')
expect(report[:licenses]).not_to be_empty
expect(report[:dependencies]).not_to be_empty
@@ -45,7 +45,7 @@ RSpec.describe "pip" do
end
[{ version: '2', commit: '04dce91b' }, { version: '3', commit: '48e250a1' }].each do |python|
- ['1.0', '1.1', '2.0'].each do |report_version|
+ ['1.0', '1.1', '2.0', '2.1'].each do |report_version|
context "when generating a `#{report_version}` report using Python `#{python[:version]}`" do
let(:url) { "https://gitlab.com/gitlab-org/security-products/tests/#{language}-#{package_manager}.git" }
let(:language) { 'python' }
diff --git a/spec/integration/python/pipenv_spec.rb b/spec/integration/python/pipenv_spec.rb
index b54ee99..ccc2585 100644
--- a/spec/integration/python/pipenv_spec.rb
+++ b/spec/integration/python/pipenv_spec.rb
@@ -24,7 +24,7 @@ RSpec.describe "pipenv" do
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:version]).not_to be_empty
expect(report[:licenses]).not_to be_empty
expect(report.dependency_names).to contain_exactly("six")
@@ -69,7 +69,7 @@ RSpec.describe "pipenv" do
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:version]).not_to be_empty
expect(report[:licenses]).not_to be_empty
expect(report.dependency_names).to match_array([
@@ -129,7 +129,7 @@ RSpec.describe "pipenv" do
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:version]).not_to be_empty
expect(report[:licenses]).not_to be_empty
expect(report.dependency_names).to match_array(%w[
@@ -165,7 +165,7 @@ RSpec.describe "pipenv" do
it 'produces a valid report' do
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:licenses]).not_to be_empty
expect(report[:dependencies].count).to be(1)
expect(report.find('six')).not_to be_nil
@@ -185,7 +185,7 @@ RSpec.describe "pipenv" do
context "when scanning a Python #{version} project" do
let(:report) { runner.scan(env: { 'LM_PYTHON_VERSION' => version.to_s }) }
- specify { expect(report).to match_schema(version: '2.0') }
+ specify { expect(report).to match_schema }
it 'includes dependencies in the default group' do
lockfile_hash['default'].keys.each do |key|
@@ -217,7 +217,7 @@ RSpec.describe "pipenv" do
'PIP_INDEX_URL' => index_url
})
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report.dependency_names).to include('requests')
end
end
diff --git a/spec/integration/ruby/bundler_spec.rb b/spec/integration/ruby/bundler_spec.rb
index 5236adf..f0464fe 100644
--- a/spec/integration/ruby/bundler_spec.rb
+++ b/spec/integration/ruby/bundler_spec.rb
@@ -15,7 +15,7 @@ gem 'saml-kit'
end
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:licenses]).not_to be_empty
expect(report[:dependencies].map { |x| x[:name] }).to include("saml-kit")
end
@@ -83,7 +83,7 @@ BUNDLED WITH
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:licenses]).not_to be_empty
expect(report.dependency_names).to include("saml-kit")
end
@@ -118,7 +118,7 @@ BUNDLED WITH
report = runner.scan
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
expect(report[:licenses]).not_to be_empty
expect(report.find('net-hippie')).to eql({
name: 'net-hippie',
@@ -136,7 +136,7 @@ BUNDLED WITH
'LICENSE_FINDER_CLI_OPTS' => "--debug --aggregate-paths=. ruby"
})
- expect(report).to match_schema(version: '2.0')
+ expect(report).to match_schema
end
end
end