scripts/pythondistdeps: Add tests
The test data download themselves using pip if not present
This commit is contained in:
parent
1634914c2e
commit
89e1676cee
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/tests/data/scripts_pythondistdeps/usr/
|
@ -367,7 +367,8 @@ for name in names:
|
||||
if len(spec_list) == 1:
|
||||
print(spec_list[0])
|
||||
else:
|
||||
print('({})'.format(' with '.join(spec_list)))
|
||||
# Sort spec_list so that the results can be tested easily
|
||||
print('({})'.format(' with '.join(sorted(spec_list))))
|
||||
else:
|
||||
# Print out unversioned provides, requires, recommends, conflicts
|
||||
print(name)
|
||||
|
@ -0,0 +1,21 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: pyreq2rpm.tests
|
||||
Version: 2020.04.07.024dab0
|
||||
Summary: Test package to verify conversion of dependencies from pip/python to rpm format, data taken from pyreq2rpm
|
||||
Author: Tomas Orsava (author of this metapackage)
|
||||
Home-page: https://github.com/gordonmessmer/pyreq2rpm
|
||||
License: MIT
|
||||
Description: This dist-info is mock metadata for a fictional package pyreq2rpm.tests
|
||||
The important part of its contents is the requires.txt that contains
|
||||
different formats of Python requirements taken from
|
||||
https://github.com/gordonmessmer/pyreq2rpm, that are numbered as to be
|
||||
unique. The metadata is then processed through
|
||||
scripts/pythondistdeps.py and the resulting RPM requires compared to
|
||||
expected results.
|
||||
|
||||
The version of the package contains the date when I converted the test
|
||||
data from upstream to this metapackage, as well as the short hash of
|
||||
the last git commit.
|
||||
|
||||
From the requirements I have omitted those that are incorrect, as they
|
||||
crash the pythondistdeps.py script.
|
@ -0,0 +1,95 @@
|
||||
# Taken from pyreq2rpm, removed tests that are expected to fail
|
||||
foobar0~=2.4.8
|
||||
foobar1~=2.4.8.0
|
||||
foobar2~=2.4.8.1
|
||||
|
||||
foobar4~=2.0
|
||||
|
||||
|
||||
foobar7~=2.4.8b5
|
||||
foobar8~=2.0.0b5
|
||||
foobar9~=2.4.8.post1
|
||||
foobar10~=2.0.post1
|
||||
foobar11==2.4.8
|
||||
foobar12==2.4.8.0
|
||||
foobar13==2.4.8.1
|
||||
foobar14==2.4.8.*
|
||||
foobar15==2.0
|
||||
foobar16==2
|
||||
foobar17==2.*
|
||||
foobar18==2.4.8b5
|
||||
foobar19==2.0.0b5
|
||||
foobar20==2.4.8.post1
|
||||
foobar21==2.0.post1
|
||||
foobar22===2.4.8
|
||||
foobar23===2.4.8.0
|
||||
foobar24===2.4.8.1
|
||||
|
||||
foobar26===2.0
|
||||
foobar27===2
|
||||
|
||||
foobar29===2.4.8b5
|
||||
foobar30===2.0.0b5
|
||||
foobar31===2.4.8.post1
|
||||
foobar32===2.0.post1
|
||||
foobar33!=2.4.8
|
||||
foobar34!=2.4.8.0
|
||||
foobar35!=2.4.8.1
|
||||
foobar36!=2.4.8.*
|
||||
foobar37!=2.0
|
||||
foobar38!=2
|
||||
foobar39!=2.*
|
||||
foobar40!=2.4.8b5
|
||||
foobar41!=2.0.0b5
|
||||
foobar42!=2.4.8.post1
|
||||
foobar43!=2.0.post1
|
||||
foobar44<=2.4.8
|
||||
foobar45<=2.4.8.0
|
||||
foobar46<=2.4.8.1
|
||||
foobar47<=2.4.8.*
|
||||
foobar48<=2.0
|
||||
foobar49<=2
|
||||
foobar50<=2.*
|
||||
foobar51<=2.4.8b5
|
||||
foobar52<=2.0.0b5
|
||||
foobar53<=2.4.8.post1
|
||||
foobar54<=2.0.post1
|
||||
foobar55<2.4.8
|
||||
foobar56<2.4.8.0
|
||||
foobar57<2.4.8.1
|
||||
foobar58<2.4.8.*
|
||||
foobar59<2.0
|
||||
foobar60<2
|
||||
foobar61<2.*
|
||||
foobar62<2.4.8b5
|
||||
foobar63<2.0.0b5
|
||||
foobar64<2.4.8.post1
|
||||
foobar65<2.0.post1
|
||||
foobar66>=2.4.8
|
||||
foobar67>=2.4.8.0
|
||||
foobar68>=2.4.8.1
|
||||
foobar69>=2.4.8.*
|
||||
foobar70>=2.0
|
||||
foobar71>=2
|
||||
foobar72>=2.*
|
||||
foobar73>=2.4.8b5
|
||||
foobar74>=2.0.0b5
|
||||
foobar75>=2.4.8.post1
|
||||
foobar76>=2.0.post1
|
||||
foobar77>2.4.8
|
||||
foobar78>2.4.8.0
|
||||
foobar79>2.4.8.1
|
||||
foobar80>2.4.8.*
|
||||
foobar81>2.0
|
||||
foobar82>2
|
||||
foobar83>2.*
|
||||
foobar84>2.4.8b5
|
||||
foobar85>2.0.0b5
|
||||
foobar86>2.4.8.post1
|
||||
foobar87>2.0.post1
|
||||
pyparsing0
|
||||
pyparsing1>=2.0.1,!=2.0.4,!=2.1.2,!=2.1.6
|
||||
babel>=1.3,!=2.0
|
||||
|
||||
# Tests for breakages in Fedora
|
||||
fedora-python-nb2plots==0+unknown
|
480
tests/data/scripts_pythondistdeps/test-data.yaml
Normal file
480
tests/data/scripts_pythondistdeps/test-data.yaml
Normal file
@ -0,0 +1,480 @@
|
||||
--requires:
|
||||
--provides:
|
||||
pyreq2rpm.tests-2020.04.07.024dab0-py3.9.egg-info:
|
||||
provides: python3.9dist(pyreq2rpm.tests) = 2020.04.07.024dab0
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
((python3.9dist(babel) < 2 or python3.9dist(babel) > 2) with python3.9dist(babel) >= 1.3)
|
||||
python3.9dist(fedora-python-nb2plots) = 0
|
||||
(python3.9dist(foobar0) >= 2.4.8 with python3.9dist(foobar0) < 2.5)
|
||||
(python3.9dist(foobar1) >= 2.4.8 with python3.9dist(foobar1) < 2.4.9)
|
||||
(python3.9dist(foobar10) >= 2^post1 with python3.9dist(foobar10) < 3)
|
||||
python3.9dist(foobar11) = 2.4.8
|
||||
python3.9dist(foobar12) = 2.4.8
|
||||
python3.9dist(foobar13) = 2.4.8.1
|
||||
(python3.9dist(foobar14) >= 2.4.8 with python3.9dist(foobar14) < 2.4.9)
|
||||
python3.9dist(foobar15) = 2
|
||||
python3.9dist(foobar16) = 2
|
||||
(python3.9dist(foobar17) >= 2 with python3.9dist(foobar17) < 3)
|
||||
python3.9dist(foobar18) = 2.4.8~b5
|
||||
python3.9dist(foobar19) = 2~b5
|
||||
(python3.9dist(foobar2) >= 2.4.8.1 with python3.9dist(foobar2) < 2.4.9)
|
||||
python3.9dist(foobar20) = 2.4.8^post1
|
||||
python3.9dist(foobar21) = 2^post1
|
||||
python3.9dist(foobar22) = 2.4.8
|
||||
python3.9dist(foobar23) = 2.4.8
|
||||
python3.9dist(foobar24) = 2.4.8.1
|
||||
python3.9dist(foobar26) = 2
|
||||
python3.9dist(foobar27) = 2
|
||||
python3.9dist(foobar29) = 2.4.8~b5
|
||||
python3.9dist(foobar30) = 2~b5
|
||||
python3.9dist(foobar31) = 2.4.8^post1
|
||||
python3.9dist(foobar32) = 2^post1
|
||||
(python3.9dist(foobar33) < 2.4.8 or python3.9dist(foobar33) > 2.4.8)
|
||||
(python3.9dist(foobar34) < 2.4.8 or python3.9dist(foobar34) > 2.4.8)
|
||||
(python3.9dist(foobar35) < 2.4.8.1 or python3.9dist(foobar35) > 2.4.8.1)
|
||||
(python3.9dist(foobar36) < 2.4.8 or python3.9dist(foobar36) > 2.4.9)
|
||||
(python3.9dist(foobar37) < 2 or python3.9dist(foobar37) > 2)
|
||||
(python3.9dist(foobar38) < 2 or python3.9dist(foobar38) > 2)
|
||||
(python3.9dist(foobar39) < 2 or python3.9dist(foobar39) > 3)
|
||||
(python3.9dist(foobar4) >= 2 with python3.9dist(foobar4) < 3)
|
||||
(python3.9dist(foobar40) < 2.4.8~b5 or python3.9dist(foobar40) > 2.4.8~b5)
|
||||
(python3.9dist(foobar41) < 2~b5 or python3.9dist(foobar41) > 2~b5)
|
||||
(python3.9dist(foobar42) < 2.4.8^post1 or python3.9dist(foobar42) > 2.4.8^post1)
|
||||
(python3.9dist(foobar43) < 2^post1 or python3.9dist(foobar43) > 2^post1)
|
||||
python3.9dist(foobar44) <= 2.4.8
|
||||
python3.9dist(foobar45) <= 2.4.8
|
||||
python3.9dist(foobar46) <= 2.4.8.1
|
||||
python3.9dist(foobar47) <= 2.4.8
|
||||
python3.9dist(foobar48) <= 2
|
||||
python3.9dist(foobar49) <= 2
|
||||
python3.9dist(foobar50) <= 2
|
||||
python3.9dist(foobar51) <= 2.4.8~b5
|
||||
python3.9dist(foobar52) <= 2~b5
|
||||
python3.9dist(foobar53) <= 2.4.8^post1
|
||||
python3.9dist(foobar54) <= 2^post1
|
||||
python3.9dist(foobar55) < 2.4.8
|
||||
python3.9dist(foobar56) < 2.4.8
|
||||
python3.9dist(foobar57) < 2.4.8.1
|
||||
python3.9dist(foobar58) < 2.4.8
|
||||
python3.9dist(foobar59) < 2
|
||||
python3.9dist(foobar60) < 2
|
||||
python3.9dist(foobar61) < 2
|
||||
python3.9dist(foobar62) < 2.4.8~b5
|
||||
python3.9dist(foobar63) < 2~b5
|
||||
python3.9dist(foobar64) < 2.4.8^post1
|
||||
python3.9dist(foobar65) < 2^post1
|
||||
python3.9dist(foobar66) >= 2.4.8
|
||||
python3.9dist(foobar67) >= 2.4.8
|
||||
python3.9dist(foobar68) >= 2.4.8.1
|
||||
python3.9dist(foobar69) >= 2.4.8
|
||||
(python3.9dist(foobar7) >= 2.4.8~b5 with python3.9dist(foobar7) < 2.5)
|
||||
python3.9dist(foobar70) >= 2
|
||||
python3.9dist(foobar71) >= 2
|
||||
python3.9dist(foobar72) >= 2
|
||||
python3.9dist(foobar73) >= 2.4.8~b5
|
||||
python3.9dist(foobar74) >= 2~b5
|
||||
python3.9dist(foobar75) >= 2.4.8^post1
|
||||
python3.9dist(foobar76) >= 2^post1
|
||||
python3.9dist(foobar77) > 2.4.8
|
||||
python3.9dist(foobar78) > 2.4.8
|
||||
python3.9dist(foobar79) > 2.4.8.1
|
||||
(python3.9dist(foobar8) >= 2~b5 with python3.9dist(foobar8) < 2.1)
|
||||
python3.9dist(foobar80) >= 2.4.9
|
||||
python3.9dist(foobar81) > 2
|
||||
python3.9dist(foobar82) > 2
|
||||
python3.9dist(foobar83) >= 3
|
||||
python3.9dist(foobar84) > 2.4.8~b5
|
||||
python3.9dist(foobar85) > 2~b5
|
||||
python3.9dist(foobar86) > 2.4.8^post1
|
||||
python3.9dist(foobar87) > 2^post1
|
||||
(python3.9dist(foobar9) >= 2.4.8^post1 with python3.9dist(foobar9) < 2.5)
|
||||
python3.9dist(pyparsing0)
|
||||
((python3.9dist(pyparsing1) < 2.0.4 or python3.9dist(pyparsing1) > 2.0.4) with (python3.9dist(pyparsing1) < 2.1.2 or python3.9dist(pyparsing1) > 2.1.2) with (python3.9dist(pyparsing1) < 2.1.6 or python3.9dist(pyparsing1) > 2.1.6) with python3.9dist(pyparsing1) >= 2.0.1)
|
||||
--provides --majorver-provides:
|
||||
usr/lib/python2.7/site-packages/attrs-19.1.0-py2.7.egg-info:
|
||||
provides: |-
|
||||
python2.7dist(attrs) = 19.1
|
||||
python2dist(attrs) = 19.1
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib/python2.7/site-packages/kubernetes-11.0.0b2.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(kubernetes) = 11~b2
|
||||
python2dist(kubernetes) = 11~b2
|
||||
requires: |-
|
||||
python(abi) = 2.7
|
||||
python2.7dist(certifi) >= 14.5.14
|
||||
python2.7dist(google-auth) >= 1.0.1
|
||||
python2.7dist(ipaddress) >= 1.0.17
|
||||
python2.7dist(python-dateutil) >= 2.5.3
|
||||
python2.7dist(pyyaml) >= 3.12
|
||||
python2.7dist(requests)
|
||||
python2.7dist(requests-oauthlib)
|
||||
python2.7dist(setuptools) >= 21
|
||||
python2.7dist(six) >= 1.9
|
||||
python2.7dist(urllib3) >= 1.24.2
|
||||
((python2.7dist(websocket-client) < 0.40 or python2.7dist(websocket-client) > 0.40) with (python2.7dist(websocket-client) < 0.41 or python2.7dist(websocket-client) > 0.42) with (python2.7dist(websocket-client) < 0.42 or python2.7dist(websocket-client) > 0.43) with python2.7dist(websocket-client) >= 0.32)
|
||||
usr/lib/python2.7/site-packages/mistune-0.8.4-py2.7.egg-info:
|
||||
provides: |-
|
||||
python2.7dist(mistune) = 0.8.4
|
||||
python2dist(mistune) = 0.8.4
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib/python2.7/site-packages/packaging-19.0.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(packaging) = 19
|
||||
python2dist(packaging) = 19
|
||||
requires: |-
|
||||
python(abi) = 2.7
|
||||
python2.7dist(pyparsing) >= 2.0.2
|
||||
python2.7dist(six)
|
||||
usr/lib/python2.7/site-packages/pip-19.1.1.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(pip) = 19.1.1
|
||||
python2dist(pip) = 19.1.1
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib/python2.7/site-packages/pyparsing-2.4.0.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(pyparsing) = 2.4
|
||||
python2dist(pyparsing) = 2.4
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib/python2.7/site-packages/setuptools-41.6.0-py2.7.egg-info:
|
||||
provides: |-
|
||||
python2.7dist(setuptools) = 41.6
|
||||
python2dist(setuptools) = 41.6
|
||||
requires: |-
|
||||
python(abi) = 2.7
|
||||
python2.7dist(setuptools)
|
||||
usr/lib/python2.7/site-packages/setuptools-41.6.0.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(setuptools) = 41.6
|
||||
python2dist(setuptools) = 41.6
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib/python2.7/site-packages/six-1.12.0.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(six) = 1.12
|
||||
python2dist(six) = 1.12
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib/python2.7/site-packages/tox-3.14.0.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(tox) = 3.14
|
||||
python2dist(tox) = 3.14
|
||||
requires: |-
|
||||
python(abi) = 2.7
|
||||
(python2.7dist(filelock) < 4 with python2.7dist(filelock) >= 3)
|
||||
(python2.7dist(importlib-metadata) < 1 with python2.7dist(importlib-metadata) >= 0.12)
|
||||
python2.7dist(packaging) >= 14
|
||||
(python2.7dist(pluggy) < 1 with python2.7dist(pluggy) >= 0.12)
|
||||
(python2.7dist(py) < 2 with python2.7dist(py) >= 1.4.17)
|
||||
(python2.7dist(six) < 2 with python2.7dist(six) >= 1)
|
||||
python2.7dist(toml) >= 0.9.4
|
||||
python2.7dist(virtualenv) >= 14
|
||||
usr/lib/python2.7/site-packages/urllib3-1.25.7-py2.7.egg-info:
|
||||
provides: |-
|
||||
python2.7dist(urllib3) = 1.25.7
|
||||
python2dist(urllib3) = 1.25.7
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib/python2.7/site-packages/zope.component-4.3.0-py2.7.egg-info:
|
||||
provides: |-
|
||||
python2.7dist(zope.component) = 4.3
|
||||
python2dist(zope.component) = 4.3
|
||||
requires: |-
|
||||
python(abi) = 2.7
|
||||
python2.7dist(setuptools)
|
||||
python2.7dist(zope.event)
|
||||
python2.7dist(zope.interface) >= 4.1
|
||||
usr/lib/python3.7/site-packages/astroid-2.3.3.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(astroid) = 2.3.3
|
||||
python3dist(astroid) = 2.3.3
|
||||
requires: |-
|
||||
python(abi) = 3.7
|
||||
(python3.7dist(lazy-object-proxy) >= 1.4 with python3.7dist(lazy-object-proxy) < 1.5)
|
||||
(python3.7dist(six) >= 1.12 with python3.7dist(six) < 2)
|
||||
(python3.7dist(typed-ast) < 1.5 with python3.7dist(typed-ast) >= 1.4)
|
||||
(python3.7dist(wrapt) >= 1.11 with python3.7dist(wrapt) < 1.12)
|
||||
usr/lib/python3.7/site-packages/packaging-19.0.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(packaging) = 19
|
||||
python3dist(packaging) = 19
|
||||
requires: |-
|
||||
python(abi) = 3.7
|
||||
python3.7dist(pyparsing) >= 2.0.2
|
||||
python3.7dist(six)
|
||||
usr/lib/python3.7/site-packages/pip-19.1.1.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(pip) = 19.1.1
|
||||
python3dist(pip) = 19.1.1
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib/python3.7/site-packages/pyparsing-2.4.0.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(pyparsing) = 2.4
|
||||
python3dist(pyparsing) = 2.4
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib/python3.7/site-packages/setuptools-41.6.0-py3.7.egg-info:
|
||||
provides: |-
|
||||
python3.7dist(setuptools) = 41.6
|
||||
python3dist(setuptools) = 41.6
|
||||
requires: |-
|
||||
python(abi) = 3.7
|
||||
python3.7dist(setuptools)
|
||||
usr/lib/python3.7/site-packages/setuptools-41.6.0.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(setuptools) = 41.6
|
||||
python3dist(setuptools) = 41.6
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib/python3.7/site-packages/six-1.12.0.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(six) = 1.12
|
||||
python3dist(six) = 1.12
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib/python3.7/site-packages/tox-3.14.0.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(tox) = 3.14
|
||||
python3dist(tox) = 3.14
|
||||
requires: |-
|
||||
python(abi) = 3.7
|
||||
(python3.7dist(filelock) < 4 with python3.7dist(filelock) >= 3)
|
||||
(python3.7dist(importlib-metadata) < 1 with python3.7dist(importlib-metadata) >= 0.12)
|
||||
python3.7dist(packaging) >= 14
|
||||
(python3.7dist(pluggy) < 1 with python3.7dist(pluggy) >= 0.12)
|
||||
(python3.7dist(py) < 2 with python3.7dist(py) >= 1.4.17)
|
||||
(python3.7dist(six) < 2 with python3.7dist(six) >= 1)
|
||||
python3.7dist(toml) >= 0.9.4
|
||||
python3.7dist(virtualenv) >= 14
|
||||
usr/lib/python3.9/site-packages/astroid-2.3.3.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(astroid) = 2.3.3
|
||||
python3dist(astroid) = 2.3.3
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
(python3.9dist(lazy-object-proxy) >= 1.4 with python3.9dist(lazy-object-proxy) < 1.5)
|
||||
(python3.9dist(six) >= 1.12 with python3.9dist(six) < 2)
|
||||
(python3.9dist(wrapt) >= 1.11 with python3.9dist(wrapt) < 1.12)
|
||||
usr/lib/python3.9/site-packages/attrs-19.1.0-py3.9.egg-info:
|
||||
provides: |-
|
||||
python3.9dist(attrs) = 19.1
|
||||
python3dist(attrs) = 19.1
|
||||
requires: python(abi) = 3.9
|
||||
usr/lib/python3.9/site-packages/fsleyes-0.32.3.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(fsleyes) = 0.32.3
|
||||
python3dist(fsleyes) = 0.32.3
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
python3.9dist(fsleyes-props) >= 1.6.7
|
||||
python3.9dist(fsleyes-widgets) >= 0.8.4
|
||||
python3.9dist(fslpy) >= 2.8.4
|
||||
(python3.9dist(jinja2) >= 2 with python3.9dist(jinja2) < 3)
|
||||
python3.9dist(matplotlib) >= 1.5.1
|
||||
python3.9dist(nibabel) >= 2.3
|
||||
python3.9dist(numpy) >= 1.14
|
||||
python3.9dist(pillow) >= 3.2
|
||||
python3.9dist(pyopengl) >= 3.1
|
||||
(python3.9dist(pyparsing) >= 2 with python3.9dist(pyparsing) < 3)
|
||||
python3.9dist(scipy) >= 0.18
|
||||
python3.9dist(setuptools)
|
||||
(python3.9dist(six) >= 1 with python3.9dist(six) < 2)
|
||||
python3.9dist(wxpython) >= 3.0.2
|
||||
usr/lib/python3.9/site-packages/kubernetes-11.0.0.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(kubernetes) = 11
|
||||
python3dist(kubernetes) = 11
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
python3.9dist(certifi) >= 14.5.14
|
||||
python3.9dist(google-auth) >= 1.0.1
|
||||
python3.9dist(python-dateutil) >= 2.5.3
|
||||
python3.9dist(pyyaml) >= 3.12
|
||||
python3.9dist(requests)
|
||||
python3.9dist(requests-oauthlib)
|
||||
python3.9dist(setuptools) >= 21
|
||||
python3.9dist(six) >= 1.9
|
||||
python3.9dist(urllib3) >= 1.24.2
|
||||
((python3.9dist(websocket-client) < 0.40 or python3.9dist(websocket-client) > 0.40) with (python3.9dist(websocket-client) < 0.41 or python3.9dist(websocket-client) > 0.42) with (python3.9dist(websocket-client) < 0.42 or python3.9dist(websocket-client) > 0.43) with python3.9dist(websocket-client) >= 0.32)
|
||||
usr/lib/python3.9/site-packages/mistune-0.8.4-py3.9.egg-info:
|
||||
provides: |-
|
||||
python3.9dist(mistune) = 0.8.4
|
||||
python3dist(mistune) = 0.8.4
|
||||
requires: python(abi) = 3.9
|
||||
usr/lib/python3.9/site-packages/packaging-20.1.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(packaging) = 20.1
|
||||
python3dist(packaging) = 20.1
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
python3.9dist(pyparsing) >= 2.0.2
|
||||
python3.9dist(six)
|
||||
usr/lib/python3.9/site-packages/pip-20.0.2.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(pip) = 20.0.2
|
||||
python3dist(pip) = 20.0.2
|
||||
requires: python(abi) = 3.9
|
||||
usr/lib/python3.9/site-packages/pyparsing-2.4.0.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(pyparsing) = 2.4
|
||||
python3dist(pyparsing) = 2.4
|
||||
requires: python(abi) = 3.9
|
||||
usr/lib/python3.9/site-packages/setuptools-41.6.0-py3.9.egg-info:
|
||||
provides: |-
|
||||
python3.9dist(setuptools) = 41.6
|
||||
python3dist(setuptools) = 41.6
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
python3.9dist(setuptools)
|
||||
usr/lib/python3.9/site-packages/setuptools-41.6.0.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(setuptools) = 41.6
|
||||
python3dist(setuptools) = 41.6
|
||||
requires: python(abi) = 3.9
|
||||
usr/lib/python3.9/site-packages/six-1.12.0.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(six) = 1.12
|
||||
python3dist(six) = 1.12
|
||||
requires: python(abi) = 3.9
|
||||
usr/lib/python3.9/site-packages/tox-3.14.0.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(tox) = 3.14
|
||||
python3dist(tox) = 3.14
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
(python3.9dist(filelock) < 4 with python3.9dist(filelock) >= 3)
|
||||
python3.9dist(packaging) >= 14
|
||||
(python3.9dist(pluggy) < 1 with python3.9dist(pluggy) >= 0.12)
|
||||
(python3.9dist(py) < 2 with python3.9dist(py) >= 1.4.17)
|
||||
(python3.9dist(six) < 2 with python3.9dist(six) >= 1)
|
||||
python3.9dist(toml) >= 0.9.4
|
||||
python3.9dist(virtualenv) >= 14
|
||||
usr/lib/python3.9/site-packages/urllib3-1.25.7-py3.9.egg-info:
|
||||
provides: |-
|
||||
python3.9dist(urllib3) = 1.25.7
|
||||
python3dist(urllib3) = 1.25.7
|
||||
requires: python(abi) = 3.9
|
||||
usr/lib/python3.9/site-packages/zope.schema-4.4.2-py3.9.egg-info:
|
||||
provides: |-
|
||||
python3.9dist(zope.schema) = 4.4.2
|
||||
python3dist(zope.schema) = 4.4.2
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
python3.9dist(setuptools)
|
||||
python3.9dist(zope.event)
|
||||
python3.9dist(zope.interface) >= 3.6
|
||||
usr/lib64/python2.7/site-packages/MarkupSafe-1.1.1.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(markupsafe) = 1.1.1
|
||||
python2dist(markupsafe) = 1.1.1
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib64/python2.7/site-packages/backports.range-3.7.2-py2.7.egg-info:
|
||||
provides: |-
|
||||
python2.7dist(backports.range) = 3.7.2
|
||||
python2dist(backports.range) = 3.7.2
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib64/python2.7/site-packages/lxml-4.4.0.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(lxml) = 4.4
|
||||
python2dist(lxml) = 4.4
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib64/python2.7/site-packages/numpy-1.16.4.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(numpy) = 1.16.4
|
||||
python2dist(numpy) = 1.16.4
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib64/python2.7/site-packages/numpy_stl-2.11.2-py2.7.egg-info:
|
||||
provides: |-
|
||||
python2.7dist(numpy-stl) = 2.11.2
|
||||
python2dist(numpy-stl) = 2.11.2
|
||||
requires: |-
|
||||
python(abi) = 2.7
|
||||
python2.7dist(numpy)
|
||||
python2.7dist(python-utils) >= 1.6.2
|
||||
python2.7dist(setuptools)
|
||||
usr/lib64/python2.7/site-packages/scipy-1.2.1.dist-info:
|
||||
provides: |-
|
||||
python2.7dist(scipy) = 1.2.1
|
||||
python2dist(scipy) = 1.2.1
|
||||
requires: |-
|
||||
python(abi) = 2.7
|
||||
python2.7dist(numpy) >= 1.8.2
|
||||
usr/lib64/python2.7/site-packages/simplejson-3.16.0-py2.7.egg-info:
|
||||
provides: |-
|
||||
python2.7dist(simplejson) = 3.16
|
||||
python2dist(simplejson) = 3.16
|
||||
requires: python(abi) = 2.7
|
||||
usr/lib64/python3.7/site-packages/MarkupSafe-1.1.1.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(markupsafe) = 1.1.1
|
||||
python3dist(markupsafe) = 1.1.1
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib64/python3.7/site-packages/PyQt5_sip-4.19.19.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(pyqt5-sip) = 4.19.19
|
||||
python3dist(pyqt5-sip) = 4.19.19
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib64/python3.7/site-packages/PyQtWebEngine-5.12.1.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(pyqtwebengine) = 5.12.1
|
||||
python3dist(pyqtwebengine) = 5.12.1
|
||||
requires: |-
|
||||
python(abi) = 3.7
|
||||
python3.7dist(pyqt5) >= 5.12
|
||||
usr/lib64/python3.7/site-packages/backports.range-3.7.2-py3.7.egg-info:
|
||||
provides: |-
|
||||
python3.7dist(backports.range) = 3.7.2
|
||||
python3dist(backports.range) = 3.7.2
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib64/python3.7/site-packages/lxml-4.4.0.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(lxml) = 4.4
|
||||
python3dist(lxml) = 4.4
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib64/python3.7/site-packages/numpy-1.17.4.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(numpy) = 1.17.4
|
||||
python3dist(numpy) = 1.17.4
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib64/python3.7/site-packages/numpy_stl-2.11.2-py3.7.egg-info:
|
||||
provides: |-
|
||||
python3.7dist(numpy-stl) = 2.11.2
|
||||
python3dist(numpy-stl) = 2.11.2
|
||||
requires: |-
|
||||
python(abi) = 3.7
|
||||
python3.7dist(numpy)
|
||||
python3.7dist(python-utils) >= 1.6.2
|
||||
python3.7dist(setuptools)
|
||||
usr/lib64/python3.7/site-packages/scipy-1.2.1.dist-info:
|
||||
provides: |-
|
||||
python3.7dist(scipy) = 1.2.1
|
||||
python3dist(scipy) = 1.2.1
|
||||
requires: |-
|
||||
python(abi) = 3.7
|
||||
python3.7dist(numpy) >= 1.8.2
|
||||
usr/lib64/python3.7/site-packages/simplejson-3.16.0-py3.7.egg-info:
|
||||
provides: |-
|
||||
python3.7dist(simplejson) = 3.16
|
||||
python3dist(simplejson) = 3.16
|
||||
requires: python(abi) = 3.7
|
||||
usr/lib64/python3.9/site-packages/PyQtWebEngine-5.12.1.dist-info:
|
||||
provides: |-
|
||||
python3.9dist(pyqtwebengine) = 5.12.1
|
||||
python3dist(pyqtwebengine) = 5.12.1
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
python3.9dist(pyqt5) >= 5.12
|
||||
usr/lib64/python3.9/site-packages/backports.range-3.7.2-py3.9.egg-info:
|
||||
provides: |-
|
||||
python3.9dist(backports.range) = 3.7.2
|
||||
python3dist(backports.range) = 3.7.2
|
||||
requires: python(abi) = 3.9
|
||||
usr/lib64/python3.9/site-packages/numpy_stl-2.11.2-py3.9.egg-info:
|
||||
provides: |-
|
||||
python3.9dist(numpy-stl) = 2.11.2
|
||||
python3dist(numpy-stl) = 2.11.2
|
||||
requires: |-
|
||||
python(abi) = 3.9
|
||||
python3.9dist(numpy)
|
||||
python3.9dist(python-utils) >= 1.6.2
|
||||
python3.9dist(setuptools)
|
||||
usr/lib64/python3.9/site-packages/simplejson-3.16.0-py3.9.egg-info:
|
||||
provides: |-
|
||||
python3.9dist(simplejson) = 3.16
|
||||
python3dist(simplejson) = 3.16
|
||||
requires: python(abi) = 3.9
|
94
tests/data/scripts_pythondistdeps/test-requires.yaml
Normal file
94
tests/data/scripts_pythondistdeps/test-requires.yaml
Normal file
@ -0,0 +1,94 @@
|
||||
setuptools:
|
||||
wheel:
|
||||
'41.6.0': ['2.7', '3.7', '3.9']
|
||||
sdist:
|
||||
'41.6.0': ['2.7', '3.7', '3.9', '3.10']
|
||||
pip:
|
||||
wheel:
|
||||
'19.1.1': ['2.7', '3.7']
|
||||
'20.0.2': ['3.9']
|
||||
sdist:
|
||||
'20.0.2': ['3.11']
|
||||
packaging:
|
||||
wheel:
|
||||
'19.0': ['2.7', '3.7']
|
||||
'20.1': ['3.9']
|
||||
attrs:
|
||||
sdist:
|
||||
'19.1.0': ['2.7', '3.9']
|
||||
pyparsing:
|
||||
wheel:
|
||||
'2.4.0': ['2.7', '3.7', '3.9']
|
||||
six:
|
||||
wheel:
|
||||
'1.12.0': ['2.7', '3.7', '3.9']
|
||||
tox:
|
||||
wheel:
|
||||
'3.14.0': ['2.7', '3.7', '3.9']
|
||||
urllib3:
|
||||
sdist:
|
||||
'1.25.7': ['2.7', '3.9']
|
||||
zope.component:
|
||||
sdist:
|
||||
'4.3.0': ['2.7', '3.9']
|
||||
zope.event:
|
||||
wheel:
|
||||
'4.2.0': ['2.7', '3.9']
|
||||
zope.schema:
|
||||
sdist:
|
||||
'4.4.2': ['2.7', '3.9']
|
||||
zope.interface:
|
||||
sdist:
|
||||
'5.1.0': ['3.9']
|
||||
wheel:
|
||||
'4.6.0': ['2.7']
|
||||
lxml:
|
||||
lib: lib64
|
||||
wheel:
|
||||
'4.4.0': ['2.7', '3.7']
|
||||
scipy:
|
||||
lib: lib64
|
||||
wheel:
|
||||
'1.2.1': ['2.7', '3.7']
|
||||
numpy:
|
||||
lib: lib64
|
||||
wheel:
|
||||
'1.16.4': ['2.7']
|
||||
'1.17.4': ['3.7']
|
||||
numpy-stl:
|
||||
lib: lib64
|
||||
sdist:
|
||||
'2.11.2': ['2.7', '3.7', '3.9']
|
||||
PyQt5_sip:
|
||||
lib: lib64
|
||||
wheel:
|
||||
'4.19.19': ['3.7']
|
||||
PyQtWebEngine:
|
||||
lib: lib64
|
||||
wheel:
|
||||
'5.12.1': ['3.7', '3.9']
|
||||
MarkupSafe:
|
||||
lib: lib64
|
||||
wheel:
|
||||
'1.1.1': ['2.7', '3.7']
|
||||
simplejson:
|
||||
lib: lib64
|
||||
sdist:
|
||||
'3.16.0': ['2.7', '3.7', '3.9']
|
||||
backports.range:
|
||||
lib: lib64
|
||||
sdist:
|
||||
'3.7.2': ['2.7', '3.7', '3.9']
|
||||
mistune:
|
||||
sdist:
|
||||
'0.8.4': ['2.7', '3.9']
|
||||
astroid:
|
||||
wheel:
|
||||
'2.3.3': ['3.7', '3.9']
|
||||
kubernetes:
|
||||
wheel:
|
||||
'11.0.0b2': ['2.7']
|
||||
'11.0.0': ['3.9']
|
||||
fsleyes:
|
||||
wheel:
|
||||
'0.32.3': ['3.9']
|
242
tests/test_scripts_pythondistdeps.py
Normal file
242
tests/test_scripts_pythondistdeps.py
Normal file
@ -0,0 +1,242 @@
|
||||
# Run tests using pytest, e.g. from the root directory
|
||||
# $ python3 -m pytest --ignore tests/testing/ -vvv
|
||||
#
|
||||
# If there are any breakags, the best way to see differences is using a diff:
|
||||
# $ diff tests/data/scripts_pythondistdeps/test-data.yaml <(python3 tests/test_scripts_pythondistdeps.py)
|
||||
#
|
||||
# - Test cases and expected results are saved in test-data.yaml inside
|
||||
# TEST_DATA_PATH (currently ./data/scripts_pythondistdeps/)
|
||||
# - To regenerate test-data.yaml file with the current results of
|
||||
# pythondistdeps.py for each test configuration, execute this test file
|
||||
# directly and results will be on stdout
|
||||
# $ python3 test_scripts_pythondistdeps.py
|
||||
#
|
||||
# To add new test-data, add them to the test-requires.yaml: they will be
|
||||
# downloaded automatically. And then add the resulting dist-info/egg-info paths
|
||||
# into test-data.yaml under whichever requires/provides configurations you want
|
||||
# to test
|
||||
# - To find all dist-info/egg-info directories in the test-data directory,
|
||||
# run inside test-data:
|
||||
# $ find . -type d -regex ".*\(dist-info\|egg-info\)" | sort
|
||||
#
|
||||
# Requirements for this script:
|
||||
# - Python >= 3.6
|
||||
# - pip >= 20.0.1
|
||||
# - setuptools
|
||||
# - pytest
|
||||
# - pyyaml
|
||||
# - wheel
|
||||
|
||||
|
||||
from pathlib import Path
|
||||
import pytest
|
||||
import shlex
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import yaml
|
||||
|
||||
PYTHONDISTDEPS_PATH = Path(__file__).parent / '..' / 'scripts' / 'pythondistdeps.py'
|
||||
TEST_DATA_PATH = Path(__file__).parent / 'data' / 'scripts_pythondistdeps'
|
||||
|
||||
|
||||
def run_pythondistdeps(provides_params, requires_params, dist_egg_info_path):
|
||||
"""Runs pythondistdeps.py on `dits_egg_info_path` with given
|
||||
provides and requires parameters and returns a dict with generated provides and requires"""
|
||||
info_path = TEST_DATA_PATH / dist_egg_info_path
|
||||
files = '\n'.join(map(str, info_path.iterdir()))
|
||||
|
||||
provides = subprocess.check_output((sys.executable, PYTHONDISTDEPS_PATH, *shlex.split(provides_params)),
|
||||
input=files, encoding="utf-8")
|
||||
requires = subprocess.check_output((sys.executable, PYTHONDISTDEPS_PATH, *shlex.split(requires_params)),
|
||||
input=files, encoding="utf-8")
|
||||
|
||||
return {"provides": provides.strip(), "requires": requires.strip()}
|
||||
|
||||
|
||||
def load_test_data():
|
||||
"""Reads the test-data.yaml and loads the test data into a dict."""
|
||||
with TEST_DATA_PATH.joinpath('test-data.yaml').open() as file:
|
||||
return yaml.safe_load(file)
|
||||
|
||||
|
||||
def generate_test_cases(test_data):
|
||||
"""Goes through the test data dict and yields test cases.
|
||||
Test case is a tuple of 4 elements:
|
||||
- provides parameters
|
||||
- requires parameters
|
||||
- path to the dist-info/egg-info directory inside test-data
|
||||
- dict with expected results ("requires" and "provides")"""
|
||||
for requires_params in test_data:
|
||||
for provides_params in test_data[requires_params]:
|
||||
for dist_egg_info_path in test_data[requires_params][provides_params]:
|
||||
expected = test_data[requires_params][provides_params][dist_egg_info_path]
|
||||
yield (provides_params, requires_params, dist_egg_info_path, expected)
|
||||
|
||||
|
||||
def check_and_install_test_data():
|
||||
"""Checks if the appropriate metadata are present in TEST_DATA_PATH, and if
|
||||
not, downloads them through pip from PyPI."""
|
||||
with TEST_DATA_PATH.joinpath('test-requires.yaml').open() as file:
|
||||
test_requires = yaml.safe_load(file)
|
||||
downloaded_anything = False
|
||||
|
||||
for package in test_requires:
|
||||
# To be as close to the real environment, we want some packages saved in /usr/lib64 instead of /usr/lib,
|
||||
# for these we explicitly set lib64 as a parameter, and by default we use /usr/lib.
|
||||
lib = test_requires[package].pop("lib", "lib")
|
||||
|
||||
# type is either `wheel` or `sdist`
|
||||
for type in test_requires[package]:
|
||||
for pkg_version in test_requires[package][type]:
|
||||
for py_version in test_requires[package][type][pkg_version]:
|
||||
py_version_nodots = py_version.replace(".", "")
|
||||
package_underscores = package.replace("-", "_")
|
||||
|
||||
suffix = ".egg-info" if type == "sdist" else ".dist-info"
|
||||
pre_suffix = f"-py{py_version}" if type == "sdist" else ""
|
||||
|
||||
install_path = TEST_DATA_PATH / "usr" / lib / f"python{py_version}" \
|
||||
/ "site-packages" / f"{package_underscores}-{pkg_version}{pre_suffix}{suffix}"
|
||||
|
||||
if install_path.exists():
|
||||
continue
|
||||
|
||||
# If this is the first package we're downloading,
|
||||
# display what's happening
|
||||
if not downloaded_anything:
|
||||
print("=====================")
|
||||
print("Downloading test data")
|
||||
print("=====================\n")
|
||||
downloaded_anything = True
|
||||
|
||||
# We use a temporary directory to unpack/install the
|
||||
# package to, and then we move only the metadata to the
|
||||
# final location
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
import runpy
|
||||
backup_argv = sys.argv[:]
|
||||
|
||||
if type == "wheel":
|
||||
from pkg_resources import parse_version
|
||||
abi = f"cp{py_version_nodots}"
|
||||
# The "m" was removed from the abi flag in Python version 3.8
|
||||
if parse_version(py_version) < parse_version('3.8'):
|
||||
abi += "m"
|
||||
|
||||
# Install = download and unpack wheel into our
|
||||
# temporary directory
|
||||
sys.argv[1:] = ["install", "--no-deps",
|
||||
"--only-binary", ":all:",
|
||||
"--platform", "manylinux1_x86_64",
|
||||
"--python-version", py_version,
|
||||
"--implementation", "cp",
|
||||
"--abi", abi,
|
||||
"--target", temp_dir,
|
||||
"--no-build-isolation",
|
||||
f"{package}=={pkg_version}"]
|
||||
else:
|
||||
# Download sdist that we'll unpack later
|
||||
sys.argv[1:] = ["download", "--no-deps",
|
||||
"--no-binary", ":all:",
|
||||
"--dest", temp_dir,
|
||||
"--no-build-isolation",
|
||||
f"{package}=={pkg_version}"]
|
||||
|
||||
try:
|
||||
# run_module() alters sys.modules and sys.argv, but restores them at exit
|
||||
runpy.run_module("pip", run_name="__main__", alter_sys=True)
|
||||
except SystemExit as exc:
|
||||
pass
|
||||
finally:
|
||||
sys.argv[:] = backup_argv
|
||||
|
||||
temp_path = Path(temp_dir)
|
||||
if type == "sdist":
|
||||
# Wheel were already unpacked by pip, sdists we
|
||||
# have to unpack ourselves
|
||||
sdist_path = next(temp_path.glob(f"{package}-{pkg_version}.*"))
|
||||
|
||||
if sdist_path.suffix == ".zip":
|
||||
import zipfile
|
||||
archive = zipfile.ZipFile(sdist_path)
|
||||
else:
|
||||
import tarfile
|
||||
archive = tarfile.open(sdist_path)
|
||||
|
||||
archive.extractall(temp_path)
|
||||
try:
|
||||
info_path = next(temp_path.glob(f"**/*{suffix}"))
|
||||
|
||||
# Let's check the wheel metadata has the
|
||||
# expected directory name. We don't check for
|
||||
# egg-info metadata, because we're pulling them
|
||||
# from sdists where they don't have the proper
|
||||
# directory name
|
||||
if type == "wheel":
|
||||
if info_path.name != install_path.name:
|
||||
print("\nWarning: wheel metadata have unexpected directory name.\n"
|
||||
f"Expected: {install_path.name}\n"
|
||||
f"Actual: {info_path.name}\n"
|
||||
f"Info: package '{package}', version '{pkg_version}'"
|
||||
f" for Python {py_version}\n"
|
||||
f"Possible resolution: Specify the package version with"
|
||||
f" trailing zeros in test-requires.yaml", file=sys.stderr)
|
||||
|
||||
shutil.move(info_path, install_path)
|
||||
|
||||
relative_path = install_path.relative_to(TEST_DATA_PATH)
|
||||
print(f"\nDownloaded metadata to '{relative_path}'" \
|
||||
f" inside test-data directory.\n")
|
||||
except StopIteration:
|
||||
# temp_path.glob() did not find any file and
|
||||
# thus there's been some problem
|
||||
sys.exit(f"Problem occured while getting dist-info/egg-info"
|
||||
f" for package '{package}', version '{pkg_version}'"
|
||||
f" for Python {py_version}")
|
||||
if downloaded_anything:
|
||||
print("\n==============================")
|
||||
print("Finished downloading test data")
|
||||
print("==============================")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session", autouse=True)
|
||||
def fixture_check_and_install_test_data():
|
||||
"""Wrapper fixture, because a fixture can't be called as a function."""
|
||||
check_and_install_test_data()
|
||||
|
||||
|
||||
@pytest.mark.parametrize("provides_params, requires_params, dist_egg_info_path, expected",
|
||||
generate_test_cases(load_test_data()))
|
||||
def test_pythondistdeps(provides_params, requires_params, dist_egg_info_path, expected):
|
||||
"""Runs pythondistdeps with the given parameters and dist-info/egg-info
|
||||
path, compares the results with the expected results"""
|
||||
assert expected == run_pythondistdeps(provides_params, requires_params, dist_egg_info_path)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
"""If the script is called directly, we check and install test data if needed,
|
||||
we look up all the test configurations in test-data.yaml, run
|
||||
pythondistdeps for each, save the results and print the resulting YAML file
|
||||
with the updated results."""
|
||||
|
||||
check_and_install_test_data()
|
||||
|
||||
# Set YAML dump style to block style
|
||||
def str_presenter(dumper, data):
|
||||
if len(data.splitlines()) > 1: # check for multiline string
|
||||
return dumper.represent_scalar('tag:yaml.org,2002:str', data, style='|')
|
||||
return dumper.represent_scalar('tag:yaml.org,2002:str', data)
|
||||
yaml.add_representer(str, str_presenter)
|
||||
|
||||
# Run pythondistdeps for each test configuration
|
||||
test_data = load_test_data()
|
||||
for provides_params, requires_params, dist_egg_info_path, expected in generate_test_cases(test_data):
|
||||
# Print a dot to stderr for each test run to keep user informed about progress
|
||||
print(".", end="", flush=True, file=sys.stderr)
|
||||
test_data[requires_params][provides_params][dist_egg_info_path] = \
|
||||
run_pythondistdeps(provides_params, requires_params, dist_egg_info_path)
|
||||
|
||||
print(yaml.dump(test_data, indent=4))
|
||||
|
Loading…
Reference in New Issue
Block a user