summaryrefslogtreecommitdiff
path: root/spec/integration/python
diff options
context:
space:
mode:
Diffstat (limited to 'spec/integration/python')
-rw-r--r--spec/integration/python/pipenv_spec.rb69
1 files changed, 60 insertions, 9 deletions
diff --git a/spec/integration/python/pipenv_spec.rb b/spec/integration/python/pipenv_spec.rb
index f0aa0db..983ea8b 100644
--- a/spec/integration/python/pipenv_spec.rb
+++ b/spec/integration/python/pipenv_spec.rb
@@ -75,23 +75,16 @@ RSpec.describe "pipenv" do
expect(report[:version]).not_to be_empty
expect(report[:licenses]).not_to be_empty
expect(report[:dependencies].map { |x| x[:name] }).to match_array([
- "appdirs",
"backports.shutil_get_terminal_size",
"click",
"colorama",
"crayons",
"delegator.py",
- "packaging",
"parse",
"pexpect",
"ptyprocess",
- "py",
- "pyparsing",
- "pytest",
"requests",
"requirements-parser",
- "setuptools",
- "six",
"toml"
])
end
@@ -146,11 +139,69 @@ RSpec.describe "pipenv" do
certifi
chardet
idna
- py
- pytest
requests
urllib3
])
end
end
+
+ context "when fetching metadata from a custom source" do
+ let(:pipfile_lock_content) do
+ JSON.pretty_generate({
+ "_meta": {
+ "hash": { "sha256": "" },
+ "pipfile-spec": 6,
+ "requires": { "python_version": "3.8" },
+ "sources": [{ "name": "pypi", "url": "https://test.pypi.org/simple", "verify_ssl": true }]
+ },
+ "default": {
+ "six": { "hashes": [], "index": "pypi", "version": "==1.13.0" }
+ },
+ "develop": {}
+ })
+ end
+
+ before do
+ runner.add_file('Pipfile.lock', pipfile_lock_content)
+ end
+
+ it 'produces a valid report' do
+ report = runner.scan
+
+ expect(report).to match_schema(version: '2.0')
+ expect(report[:licenses]).not_to be_empty
+ expect(report[:dependencies].count).to be(1)
+ expect(find_in(report, 'six')).not_to be_nil
+ end
+ end
+
+ context "when scanning a simple Pipfile project" do
+ let(:lockfile_content) { fixture_file_content('python/simple-Pipfile.lock') }
+ let(:lockfile_hash) { JSON.parse(lockfile_content) }
+
+ before do
+ runner.add_file('Pipfile', fixture_file_content('python/simple-Pipfile'))
+ runner.add_file('Pipfile.lock', lockfile_content)
+ end
+
+ [2, 3].each do |version|
+ 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') }
+
+ it 'includes dependencies in the default group' do
+ lockfile_hash['default'].keys.each do |key|
+ expect(find_in(report, key)).not_to be_nil
+ end
+ end
+
+ it 'excludes dependencies in the development group' do
+ lockfile_hash['develop'].keys.each do |key|
+ expect(find_in(report, key)).to be_nil
+ end
+ end
+ end
+ end
+ end
end