-
-
Notifications
You must be signed in to change notification settings - Fork 722
Expand file tree
/
Copy pathtest_conda_environment_yml.py
More file actions
63 lines (50 loc) · 2.6 KB
/
test_conda_environment_yml.py
File metadata and controls
63 lines (50 loc) · 2.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import os
from packages_test_utils import PackageTester
from packagedcode import conda
from scancode_config import REGEN_TEST_FIXTURES
class TestCondaEnvironmentYml(PackageTester):
test_data_dir = os.path.join(os.path.dirname(__file__), 'data')
def test_conda_environment_yml_is_datafile(self):
test_file = self.get_test_loc('conda/environment_yml/simple-environment.yml')
assert conda.CondaEnvironmentYmlHandler.is_datafile(test_file)
def test_parse_simple_environment_yml(self):
test_file = self.get_test_loc('conda/environment_yml/simple-environment.yml')
packages = list(conda.CondaEnvironmentYmlHandler.parse(test_file))
assert len(packages) == 1
package = packages[0]
assert package.name == 'testenv'
assert package.extra_data == {'channels': ['conda-forge', 'defaults']}
deps = package.dependencies
numpy_dep = next((d for d in deps if d.purl == 'pkg:conda/numpy'), None)
assert numpy_dep is not None
assert numpy_dep.extracted_requirement == '1.24.0'
requests_dep = next((d for d in deps if d.purl == 'pkg:pypi/requests'), None)
assert requests_dep is not None
assert requests_dep.extracted_requirement == '2.28.0'
def test_parse_real_environment_yml(self):
test_file = self.get_test_loc('conda/environment_yml/multiregex-environment.yml')
packages = list(conda.CondaEnvironmentYmlHandler.parse(test_file))
assert len(packages) == 1
package = packages[0]
assert package.name == 'myenv'
assert len(package.dependencies) > 0
deps = [d.purl for d in package.dependencies]
assert 'pkg:conda/pandas' in deps
def test_parse_empty_dependencies(self):
test_file = self.get_temp_file('empty-deps.yml')
with open(test_file, 'w') as f:
f.write('name: nodeps\nchannels:\n - defaults\ndependencies:\n')
packages = list(conda.CondaEnvironmentYmlHandler.parse(test_file))
assert len(packages) == 1
package = packages[0]
assert package.name == 'nodeps'
assert package.dependencies == []
def test_parse_missing_name(self):
test_file = self.get_temp_file('noname.yml')
with open(test_file, 'w') as f:
f.write('channels:\n - defaults\ndependencies:\n - python=3.10\n')
packages = list(conda.CondaEnvironmentYmlHandler.parse(test_file))
assert len(packages) == 1
package = packages[0]
assert package.name is None
assert len(package.dependencies) == 1