Blob Blame Raw
No pyproject.toml, nothing installed:
  freeze_output: |
    # empty
  expected: |
    python3dist(setuptools) >= 40.8
    python3dist(wheel)
  result: 0

Nothing installed yet:
  freeze_output: |
    # empty
  pyproject.toml: |
    # empty
  expected: |
    python3dist(setuptools) >= 40.8
    python3dist(wheel)
  result: 0

Insufficient version of setuptools:
  freeze_output: |
    setuptools==5
    wheel==1
  pyproject.toml: |
    # empty
  expected: |
    python3dist(setuptools) >= 40.8
    python3dist(wheel)
  result: 0

Empty pyproject.toml, empty setup.py:
  freeze_output: |
    setuptools==50
    wheel==1
  setup.py: |
  expected: |
    python3dist(setuptools) >= 40.8
    python3dist(wheel)
    python3dist(wheel)
  result: 0

Default build system, empty setup.py:
  freeze_output: |
    setuptools==50
    wheel==1
  pyproject.toml: |
    # empty
  setup.py: |
  expected: |
    python3dist(setuptools) >= 40.8
    python3dist(wheel)
    python3dist(wheel)
  result: 0

Erroring setup.py:
  freeze_output: |
    setuptools==50
    wheel==1
  setup.py: |
    exit(77)
  result: 77

Bad character in version:
  freeze_output: |
  pyproject.toml: |
    [build-system]
    requires = ["pkg == 0.$.^.*"]
  except: ValueError

Build system dependencies in pyproject.toml:
  freeze_output: |
    setuptools==50
    wheel==1
  pyproject.toml: |
    [build-system]
    requires = [
        "foo",
        "ne!=1",
        "ge>=1.2",
        "le <= 1.2.3",
        "lt < 1.2.3.4      ",
        "    gt > 1.2.3.4.5",
        "combo >2, <5, != 3.0.0",
        "invalid!!ignored",
        "py2 ; python_version < '2.7'",
        "py3 ; python_version > '3.0'",
        "pkg [extra-currently-ignored]",
    ]
  expected: |
    python3dist(foo)
    (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(combo) < 3 or python3dist(combo) > 3.0) and python3dist(combo) < 5 and python3dist(combo) > 2)
    python3dist(py3)
    python3dist(pkg)
    python3dist(setuptools) >= 40.8
    python3dist(wheel)
  result: 0

Default build system, build dependencies in setup.py:
  freeze_output: |
    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:
  freeze_output: |
    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):
  freeze_output: |
    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):
  freeze_output: |
    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:
  xfail: requirement.marker.evaluate seems to not support multiple extras
  freeze_output: |
    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(dep1)
    python3dist(dep2)
    python3dist(dep3)
    python3dist(dep4)
  result: 0