diff options
| author | mo khan <mo.khan@gmail.com> | 2020-07-13 09:57:29 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-08-21 16:31:57 -0600 |
| commit | cbc4d1e328fd0e578f038d57fbd6b9354dafa79e (patch) | |
| tree | 99b53a90cd7c0996a2d0993b41eb56a695bcc996 /spec/unit | |
| parent | eb11eeb1018c4d32e8dbaf3f734e588205f0671f (diff) | |
Install tools from .deb package
Diffstat (limited to 'spec/unit')
| -rw-r--r-- | spec/unit/license_finder/bundler_spec.rb | 58 | ||||
| -rw-r--r-- | spec/unit/license_finder/dotnet_spec.rb | 37 | ||||
| -rw-r--r-- | spec/unit/license_finder/gradle_spec.rb | 65 | ||||
| -rw-r--r-- | spec/unit/license_finder/maven_spec.rb | 65 | ||||
| -rw-r--r-- | spec/unit/license_finder/pip_spec.rb | 69 | ||||
| -rw-r--r-- | spec/unit/license_finder/pipenv_spec.rb | 75 | ||||
| -rw-r--r-- | spec/unit/license_finder/yarn_spec.rb | 33 |
7 files changed, 388 insertions, 14 deletions
diff --git a/spec/unit/license_finder/bundler_spec.rb b/spec/unit/license_finder/bundler_spec.rb index 5458892..84edde2 100644 --- a/spec/unit/license_finder/bundler_spec.rb +++ b/spec/unit/license_finder/bundler_spec.rb @@ -1,26 +1,28 @@ +# frozen_string_literal: true + require 'spec_helper' RSpec.describe LicenseFinder::Bundler do + let(:package_manager) { described_class.new(options) } + let(:options) { { ignored_groups: [], project_path: project.project_path } } + let(:project) { ProjectHelper.new } + + before do + project.mount(dir: project_fixture) + end + + after do + project.cleanup + end + describe "#current_packages" do subject do project.chdir do - bundler.prepare - bundler.current_packages + package_manager.prepare + package_manager.current_packages end end - let(:bundler) { described_class.new(options) } - let(:options) { { ignored_groups: [], project_path: project.project_path } } - let(:project) { ProjectHelper.new } - - before do - project.mount(dir: project_fixture) - end - - after do - project.cleanup - end - context "when scanning a v2.1 bundler project" do let(:project_fixture) { fixture_file('ruby/bundler-v2.1') } @@ -45,4 +47,32 @@ RSpec.describe LicenseFinder::Bundler do specify { expect(subject.map(&:name)).to include("saml-kit") } end end + + describe "#ruby_version" do + subject { package_manager.send(:ruby_version) } + + context "when the version of ruby is specified in the Gemfile" do + let(:project_fixture) { fixture_file('ruby/bundler/ruby-2.4.9') } + + specify { expect(subject).to eql('2.4.9') } + end + + context "when the version of ruby is specified in a .ruby-version file" do + let(:project_fixture) { fixture_file('ruby/bundler-ruby-2.4.9-no-lockfile') } + + specify { expect(subject).to eql('2.4.9') } + end + + context "when the version of ruby is specified in a .tool-versions file" do + let(:project_fixture) { fixture_file('ruby/bundler/ruby-2.6.0-tool-versions') } + + specify { expect(subject).to eql('2.6.0') } + end + + context "when a ruby is not specified it uses the default version" do + let(:project_fixture) { fixture_file('ruby/bundler-v2.1') } + + specify { expect(subject).to eql('2.6.6') } + end + end end diff --git a/spec/unit/license_finder/dotnet_spec.rb b/spec/unit/license_finder/dotnet_spec.rb new file mode 100644 index 0000000..144d29e --- /dev/null +++ b/spec/unit/license_finder/dotnet_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe LicenseFinder::Dotnet do + let(:package_manager) { described_class.new(options) } + let(:options) { { ignored_groups: [], project_path: project.project_path } } + let(:project) { ProjectHelper.new } + + before do + project.mount(dir: project_fixture) + end + + after do + project.cleanup + end + + describe "#dotnet_version" do + subject { package_manager.dotnet_version } + + context "when the version of dotnet is specified in a .tool-versions file" do + let(:project_fixture) { fixture_file('dotnet/nuget-csproj') } + + before do + project.add_file('.tool-versions', 'dotnet-core 3.1.301') + end + + specify { expect(subject).to eql('3.1.301') } + end + + context "when a nodejs version is not specified" do + let(:project_fixture) { fixture_file('dotnet/nuget-csproj') } + + specify { expect(subject).to eql('3.1.302') } + end + end +end diff --git a/spec/unit/license_finder/gradle_spec.rb b/spec/unit/license_finder/gradle_spec.rb new file mode 100644 index 0000000..18c58d7 --- /dev/null +++ b/spec/unit/license_finder/gradle_spec.rb @@ -0,0 +1,65 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe LicenseFinder::Gradle do + let(:package_manager) { described_class.new(options) } + let(:options) { { ignored_groups: [], project_path: project.project_path } } + let(:project) { ProjectHelper.new } + let(:project_fixture) { fixture_file('java/gradle/java-8') } + + before do + project.mount(dir: project_fixture) + end + + after do + project.cleanup + end + + describe "#java_version" do + subject { package_manager.send(:java_version, env: env) } + + let(:env) { {} } + + context "when the version is specified in a .tool-versions file" do + let(:project_fixture) { fixture_file('java/maven/tool-versions') } + + specify { expect(subject).to eql('tool-versions') } + end + + context "when the version is specified in a .java-version file" do + let(:project_fixture) { fixture_file('java/maven/java-version') } + + specify { expect(subject).to eql('java-version') } + end + + context "when the version is specified via a ASDF_JAVA_VERSION environment variable" do + let(:env) { { "ASDF_JAVA_VERSION" => 'adopt-openjdk-11' } } + + specify { expect(subject).to eql('adoptopenjdk-11') } + end + + %w[8 11].each do |java_version| + context "when the version is specified via a LM_JAVA_VERSION (#{java_version}) environment variable" do + let(:env) { { "LM_JAVA_VERSION" => java_version } } + + specify { expect(subject).to eql(java_version) } + end + end + + context "when LM_JAVA_VERSION and ASDF_JAVA_VERSION is provided" do + let(:env) do + { + 'ASDF_JAVA_VERSION' => 'adopt-openjdk-11', + 'LM_JAVA_VERSION' => '8' + } + end + + specify { expect(subject).to eql('8') } + end + + context 'when a custom Java version is not specified' do + specify { expect(subject).to eql('8') } + end + end +end diff --git a/spec/unit/license_finder/maven_spec.rb b/spec/unit/license_finder/maven_spec.rb new file mode 100644 index 0000000..737b707 --- /dev/null +++ b/spec/unit/license_finder/maven_spec.rb @@ -0,0 +1,65 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe LicenseFinder::Maven do + let(:package_manager) { described_class.new(options) } + let(:options) { { ignored_groups: [], project_path: project.project_path } } + let(:project) { ProjectHelper.new } + let(:project_fixture) { fixture_file('java/maven/simple') } + + before do + project.mount(dir: project_fixture) + end + + after do + project.cleanup + end + + describe "#java_version" do + subject { package_manager.send(:java_version, env: env) } + + let(:env) { {} } + + context "when the version is specified in a .tool-versions file" do + let(:project_fixture) { fixture_file('java/maven/tool-versions') } + + specify { expect(subject).to eql('tool-versions') } + end + + context "when the version is specified in a .java-version file" do + let(:project_fixture) { fixture_file('java/maven/java-version') } + + specify { expect(subject).to eql('java-version') } + end + + context "when the version is specified via a ASDF_JAVA_VERSION environment variable" do + let(:env) { { "ASDF_JAVA_VERSION" => 'adopt-openjdk-11' } } + + specify { expect(subject).to eql('adoptopenjdk-11') } + end + + %w[8 11].each do |java_version| + context "when the version is specified via a LM_JAVA_VERSION (#{java_version}) environment variable" do + let(:env) { { "LM_JAVA_VERSION" => java_version } } + + specify { expect(subject).to eql(java_version) } + end + end + + context "when LM_JAVA_VERSION and ASDF_JAVA_VERSION is provided" do + let(:env) do + { + 'ASDF_JAVA_VERSION' => 'adopt-openjdk-11', + 'LM_JAVA_VERSION' => '8' + } + end + + specify { expect(subject).to eql('8') } + end + + context 'when a custom Java version is not specified' do + specify { expect(subject).to eql('8') } + end + end +end diff --git a/spec/unit/license_finder/pip_spec.rb b/spec/unit/license_finder/pip_spec.rb new file mode 100644 index 0000000..8a5efbc --- /dev/null +++ b/spec/unit/license_finder/pip_spec.rb @@ -0,0 +1,69 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe LicenseFinder::Pip do + let(:package_manager) { described_class.new(options) } + let(:options) { { ignored_groups: [], project_path: project.project_path } } + let(:project) { ProjectHelper.new } + let(:project_fixture) { fixture_file('python/pip/requirements') } + + before do + project.mount(dir: project_fixture) + end + + after do + project.cleanup + end + + describe "#python_version" do + subject { package_manager.send(:python_version, env: env) } + + let(:env) { {} } + + context "when the version is specified in a .tool-versions file" do + before do + project.add_file(".tool-versions", "python 3.8.1") + end + + specify { expect(subject).to eql('3.8.5') } + end + + context "when the version is specified in a .python-version file" do + before do + project.add_file(".python-version", "3.8.0") + end + + specify { expect(subject).to eql('3.8.5') } + end + + context "when the version is specified via a ASDF_PYTHON_VERSION environment variable" do + let(:env) { { "ASDF_PYTHON_VERSION" => '3.8.1' } } + + specify { expect(subject).to eql('3.8.5') } + end + + [['2', '2.7.18'], ['3', '3.8.5']].each do |(major, version)| + context "when the version is specified via a LM_PYTHON_VERSION (#{major}) environment variable" do + let(:env) { { "LM_PYTHON_VERSION" => major } } + + specify { expect(subject).to eql(version) } + end + end + + context "when LM_PYTHON_VERSION and ASDF_PYTHON_VERSION is provided" do + let(:env) do + { + 'ASDF_PYTHON_VERSION' => '2.7.19', + 'LM_PYTHON_VERSION' => '3' + } + end + + specify { expect(subject).to eql('3.8.5') } + end + + context 'when a custom Python version is not specified' do + specify { expect(subject).to eql('3.8.5') } + end + end +end diff --git a/spec/unit/license_finder/pipenv_spec.rb b/spec/unit/license_finder/pipenv_spec.rb new file mode 100644 index 0000000..7971df5 --- /dev/null +++ b/spec/unit/license_finder/pipenv_spec.rb @@ -0,0 +1,75 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe LicenseFinder::Pipenv do + let(:package_manager) { described_class.new(options) } + let(:options) { { ignored_groups: [], project_path: project.project_path } } + let(:project) { ProjectHelper.new } + let(:project_fixture) { fixture_file('python/pipenv/simple') } + + before do + project.mount(dir: project_fixture) + end + + after do + project.cleanup + end + + describe "#python_version" do + subject { package_manager.send(:python_version, env: env) } + + let(:env) { {} } + + context "when the version is specified in a .tool-versions file" do + before do + project.add_file(".tool-versions", "python 3.8.1") + end + + specify { expect(subject).to eql('3.8.5') } + end + + context "when the version is specified in a .python-version file" do + before do + project.add_file(".python-version", "3.8.0") + end + + specify { expect(subject).to eql('3.8.5') } + end + + context "when the version is specified via a ASDF_PYTHON_VERSION environment variable" do + let(:env) { { "ASDF_PYTHON_VERSION" => '3.8.1' } } + + specify { expect(subject).to eql('3.8.5') } + end + + [['2', '2.7.18'], ['3', '3.8.5']].each do |(major, version)| + context "when the version is specified via a LM_PYTHON_VERSION (#{major}) environment variable" do + let(:env) { { "LM_PYTHON_VERSION" => major } } + + specify { expect(subject).to eql(version) } + end + end + + context "when LM_PYTHON_VERSION and ASDF_PYTHON_VERSION is provided" do + let(:env) do + { + 'ASDF_PYTHON_VERSION' => '2.7.19', + 'LM_PYTHON_VERSION' => '3' + } + end + + specify { expect(subject).to start_with('3.8') } + end + + context 'when the version is specified in the Pipfile.lock' do + let(:project_fixture) { fixture_file('python/pipenv/specific-python-version') } + + specify { expect(subject).to start_with('3.4') } + end + + context 'when a custom Python version is not specified' do + specify { expect(subject).to eql('3.8.5') } + end + end +end diff --git a/spec/unit/license_finder/yarn_spec.rb b/spec/unit/license_finder/yarn_spec.rb new file mode 100644 index 0000000..7062ea3 --- /dev/null +++ b/spec/unit/license_finder/yarn_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe LicenseFinder::Yarn do + let(:package_manager) { described_class.new(options) } + let(:options) { { ignored_groups: [], project_path: project.project_path } } + let(:project) { ProjectHelper.new } + + before do + project.mount(dir: project_fixture) + end + + after do + project.cleanup + end + + describe "#nodejs_version" do + subject { package_manager.send(:nodejs_version) } + + context "when the version of nodejs is specified in a .tool-versions file" do + let(:project_fixture) { fixture_file('js/10.21.0-tool-versions') } + + specify { expect(subject).to eql('10.21.0') } + end + + context "when a nodejs version is not specified" do + let(:project_fixture) { fixture_file('js/yarn/single-declared-dependency') } + + specify { expect(subject).to eql('12.18.2') } + end + end +end |
