"""Tests that require external access (e.g. pip install, virtualenv creation)""" import os import subprocess import sys import pytest from pathlib2 import Path from tests.lib import need_git @pytest.mark.network def test_package_setuptools(initproj, cmd): initproj( "magic-0.1", filedefs={ "tox.ini": """\ [tox] isolated_build = true [testenv:.package] basepython = {} """.format( sys.executable ), "pyproject.toml": """\ [build-system] requires = ["setuptools >= 35.0.2", "setuptools_scm >= 2.0.0, <3"] build-backend = "setuptools.build_meta" """, }, ) run(cmd, "magic-0.1.tar.gz") @pytest.mark.network @need_git @pytest.mark.skipif(sys.version_info < (3, 0), reason="flit is Python 3 only") def test_package_flit(initproj, cmd): initproj( "magic-0.1", filedefs={ "tox.ini": """\ [tox] isolated_build = true [testenv:.package] basepython = {} """.format( sys.executable ), "pyproject.toml": """\ [build-system] requires = ["flit"] build-backend = "flit.buildapi" [tool.flit.metadata] module = "magic" author = "Happy Harry" author-email = "happy@harry.com" home-page = "https://github.com/happy-harry/is" requires = [ "tox", ] """, ".gitignore": ".tox", }, add_missing_setup_py=False, ) env = os.environ.copy() env["GIT_COMMITTER_NAME"] = "committer joe" env["GIT_AUTHOR_NAME"] = "author joe" env["EMAIL"] = "joe@example.com" subprocess.check_call(["git", "init"], env=env) subprocess.check_call(["git", "add", "-A", "."], env=env) subprocess.check_call(["git", "commit", "-m", "first commit", "--no-gpg-sign"], env=env) run(cmd, "magic-0.1.tar.gz") @pytest.mark.network @pytest.mark.skipif(sys.version_info < (3, 0), reason="poetry is Python 3 only") def test_package_poetry(initproj, cmd): initproj( "magic-0.1", filedefs={ "tox.ini": """\ [tox] isolated_build = true [testenv:.package] basepython = {} """.format( sys.executable ), "pyproject.toml": """\ [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" [tool.poetry] name = "magic" version = "0.1.0" description = "" authors = ["Name "] """, ".gitignore": ".tox", }, add_missing_setup_py=False, ) run(cmd, "magic-0.1.0.tar.gz") def run(cmd, package): result = cmd("--sdistonly", "-e", "py", "-v", "-v") result.assert_success(is_run_test_env=False) package_venv = (Path() / ".tox" / ".package").resolve() assert ".package create: {}".format(package_venv) in result.outlines, result.out assert "write config to {}".format(package_venv / ".tox-config1") in result.out, result.out package_path = (Path() / ".tox" / "dist" / package).resolve() assert package_path.exists() package_path.unlink() # second call re-uses result2 = cmd("--sdistonly", "-e", "py", "-v", "-v") result2.assert_success(is_run_test_env=False) assert ( ".package reusing: {}".format(package_venv) in result2.outlines ), "Second call output:\n{}First call output:\n{}".format(result2.out, result.out) assert package_path.exists()