a613e176e3
There is a slight problem when reporting that a dependency with extra is satisfied. In fact, we only check the "base" dependency. This can lead to a problem when a dependency is wrongly assumed as present and the script proceeds to the "next stage" without restarting -- if the next stage tries to use (import) the missing dependency, the script would crash. However, that might be a very unlikely set of events and if such case ever happens, we'll workaround it or fix it.
311 lines
7.1 KiB
YAML
311 lines
7.1 KiB
YAML
No pyproject.toml, nothing installed:
|
|
installed:
|
|
# empty
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Nothing installed yet:
|
|
installed:
|
|
# empty
|
|
pyproject.toml: |
|
|
# empty
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Insufficient version of setuptools:
|
|
installed:
|
|
setuptools: 5
|
|
wheel: 1
|
|
pyproject.toml: |
|
|
# empty
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Empty pyproject.toml, empty setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
setup.py: |
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Default build system, empty setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyproject.toml: |
|
|
# empty
|
|
setup.py: |
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Erroring setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
setup.py: |
|
|
exit(77)
|
|
result: 77
|
|
|
|
Bad character in version:
|
|
installed: {}
|
|
pyproject.toml: |
|
|
[build-system]
|
|
requires = ["pkg == 0.$.^.*"]
|
|
except: ValueError
|
|
|
|
Build system dependencies in pyproject.toml with extras:
|
|
generate_extras: true
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyproject.toml: |
|
|
[build-system]
|
|
requires = [
|
|
"foo",
|
|
"bar[baz] > 5",
|
|
"ne!=1",
|
|
"ge>=1.2",
|
|
"le <= 1.2.3",
|
|
"lt < 1.2.3.4 ",
|
|
" gt > 1.2.3.4.5",
|
|
"multi[extras1,extras2] == 6.0",
|
|
"combo >2, <5, != 3.0.0",
|
|
"invalid!!ignored",
|
|
"py2 ; python_version < '2.7'",
|
|
"py3 ; python_version > '3.0'",
|
|
]
|
|
expected: |
|
|
python3dist(foo)
|
|
python3dist(bar) > 5
|
|
python3dist(bar[baz]) > 5
|
|
(python3dist(ne) < 1 or python3dist(ne) > 1.0)
|
|
python3dist(ge) >= 1.2
|
|
python3dist(le) <= 1.2.3
|
|
python3dist(lt) < 1.2.3.4
|
|
python3dist(gt) > 1.2.3.4.5
|
|
python3dist(multi) == 6
|
|
python3dist(multi[extras1]) == 6
|
|
python3dist(multi[extras2]) == 6
|
|
((python3dist(combo) < 3 or python3dist(combo) > 3.0) and python3dist(combo) < 5 and python3dist(combo) > 2)
|
|
python3dist(py3)
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Build system dependencies in pyproject.toml without extras:
|
|
generate_extras: false
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyproject.toml: |
|
|
[build-system]
|
|
requires = [
|
|
"bar[baz] > 5",
|
|
"multi[extras1,extras2] == 6.0",
|
|
]
|
|
expected: |
|
|
python3dist(bar) > 5
|
|
python3dist(multi) == 6
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
result: 0
|
|
|
|
Default build system, build dependencies in setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
name='test',
|
|
version='0.1',
|
|
setup_requires=['foo', 'bar!=2'],
|
|
install_requires=['inst'],
|
|
)
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(foo)
|
|
(python3dist(bar) < 2 or python3dist(bar) > 2.0)
|
|
result: 0
|
|
|
|
Default build system, run dependencies in setup.py:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyyaml: 1
|
|
include_runtime: true
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
name='test',
|
|
version='0.1',
|
|
setup_requires=['pyyaml'], # nb. setuptools will try to install this
|
|
install_requires=['inst > 1', 'inst2 < 3'],
|
|
)
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(pyyaml)
|
|
python3dist(inst) > 1
|
|
python3dist(inst2) < 3
|
|
result: 0
|
|
|
|
Run dependencies with extras (not selected):
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyyaml: 1
|
|
include_runtime: true
|
|
setup.py: &pytest_setup_py |
|
|
# slightly abriged copy of pytest's setup.py
|
|
from setuptools import setup
|
|
|
|
INSTALL_REQUIRES = [
|
|
"py>=1.5.0",
|
|
"six>=1.10.0",
|
|
"setuptools",
|
|
"attrs>=17.4.0",
|
|
'more-itertools>=4.0.0,<6.0.0;python_version<="2.7"',
|
|
'more-itertools>=4.0.0;python_version>"2.7"',
|
|
"atomicwrites>=1.0",
|
|
'funcsigs>=1.0;python_version<"3.0"',
|
|
'pathlib2>=2.2.0;python_version<"3.6"',
|
|
'colorama;sys_platform=="win32"',
|
|
"pluggy>=0.11",
|
|
]
|
|
|
|
def main():
|
|
setup(
|
|
setup_requires=["setuptools>=40.0"],
|
|
# fmt: off
|
|
extras_require={
|
|
"testing": [
|
|
"argcomplete",
|
|
"hypothesis>=3.56",
|
|
"nose",
|
|
"requests",
|
|
"mock;python_version=='2.7'",
|
|
],
|
|
},
|
|
# fmt: on
|
|
install_requires=INSTALL_REQUIRES,
|
|
)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(setuptools) >= 40
|
|
python3dist(py) >= 1.5
|
|
python3dist(six) >= 1.10
|
|
python3dist(setuptools)
|
|
python3dist(attrs) >= 17.4
|
|
python3dist(atomicwrites) >= 1
|
|
python3dist(pluggy) >= 0.11
|
|
python3dist(more-itertools) >= 4
|
|
result: 0
|
|
|
|
Run dependencies with extras (selected):
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyyaml: 1
|
|
include_runtime: true
|
|
extras: testing
|
|
setup.py: *pytest_setup_py
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(setuptools) >= 40
|
|
python3dist(py) >= 1.5
|
|
python3dist(six) >= 1.10
|
|
python3dist(setuptools)
|
|
python3dist(attrs) >= 17.4
|
|
python3dist(atomicwrites) >= 1
|
|
python3dist(pluggy) >= 0.11
|
|
python3dist(more-itertools) >= 4
|
|
python3dist(argcomplete)
|
|
python3dist(hypothesis) >= 3.56
|
|
python3dist(nose)
|
|
python3dist(requests)
|
|
result: 0
|
|
|
|
Run dependencies with multiple extras:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
pyyaml: 1
|
|
include_runtime: true
|
|
extras: testing,more-testing, even-more-testing , cool-feature
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
extras_require={
|
|
'testing': ['dep1'],
|
|
'more-testing': ['dep2'],
|
|
'even-more-testing': ['dep3'],
|
|
'cool-feature': ['dep4'],
|
|
},
|
|
)
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(dep4)
|
|
python3dist(dep3)
|
|
python3dist(dep2)
|
|
python3dist(dep1)
|
|
result: 0
|
|
|
|
Tox dependencies:
|
|
installed:
|
|
setuptools: 50
|
|
wheel: 1
|
|
tox: 3.5.3
|
|
tox-current-env: 0.0.2
|
|
toxenv: py3
|
|
setup.py: |
|
|
from setuptools import setup
|
|
setup(
|
|
name='test',
|
|
version='0.1',
|
|
install_requires=['inst'],
|
|
)
|
|
tox.ini: |
|
|
[tox]
|
|
envlist = py36,py37,py38
|
|
[testenv]
|
|
deps =
|
|
toxdep1
|
|
toxdep2
|
|
commands =
|
|
true
|
|
expected: |
|
|
python3dist(setuptools) >= 40.8
|
|
python3dist(wheel)
|
|
python3dist(wheel)
|
|
python3dist(tox-current-env) >= 0.0.2
|
|
python3dist(toxdep1)
|
|
python3dist(toxdep2)
|
|
python3dist(inst)
|
|
result: 0
|