from __future__ import annotations

from pathlib import Path

import jinja2

from . import utils
from .test_projects import TestProject
from .test_projects.c import SPAM_C_TEMPLATE

subdir_package_project = TestProject()

subdir_package_project.files["src/spam/spam.c"] = jinja2.Template(SPAM_C_TEMPLATE)
subdir_package_project.template_context["spam_c_top_level_add"] = ""
subdir_package_project.template_context["spam_c_function_add"] = ""

subdir_package_project.files[
    "src/spam/setup.py"
] = r"""
from setuptools import Extension, setup

setup(
    name="spam",
    ext_modules=[Extension('spam', sources=['spam.c'])],
    version="0.1.0",
)
"""

subdir_package_project.files[
    "src/spam/test/run_tests.py"
] = r"""
print('run_tests.py executed!')
"""

subdir_package_project.files[
    "bin/before_build.py"
] = r"""
print('before_build.py executed!')
"""


def test(capfd, tmp_path):
    project_dir = tmp_path / "project"
    subdir_package_project.generate(project_dir)

    package_dir = Path("src", "spam")
    # build the wheels
    actual_wheels = utils.cibuildwheel_run(
        project_dir,
        package_dir=package_dir,
        add_env={
            "CIBW_BEFORE_BUILD": "python {project}/bin/before_build.py",
            "CIBW_TEST_COMMAND": "python {package}/test/run_tests.py",
            # this shouldn't depend on the version of python, so build only CPython 3.10
            "CIBW_BUILD": "cp310-*",
        },
    )

    # check that the expected wheels are produced
    expected_wheels = [w for w in utils.expected_wheels("spam", "0.1.0") if "cp310" in w]
    assert set(actual_wheels) == set(expected_wheels)

    captured = capfd.readouterr()
    assert "before_build.py executed!" in captured.out
    assert "run_tests.py executed!" in captured.out

9e83d05be7645a14835b2ae6688a8ceebb7b5130
<mask token>

<mask token>


def test(capfd, tmp_path):
    project_dir = tmp_path / 'project'
    subdir_package_project.generate(project_dir)
    package_dir = Path('src', 'spam')
    actual_wheels = utils.cibuildwheel_run(project_dir, package_dir=
        package_dir, add_env={'CIBW_BEFORE_BUILD':
        'python {project}/bin/before_build.py', 'CIBW_TEST_COMMAND':
        'python {package}/test/run_tests.py', 'CIBW_BUILD': 'cp310-*'})
    expected_wheels = [w for w in utils.expected_wheels('spam', '0.1.0') if
        'cp310' in w]
    assert set(actual_wheels) == set(expected_wheels)
    captured = capfd.readouterr()
    assert 'before_build.py executed!' in captured.out
    assert 'run_tests.py executed!' in captured.out

<mask token>
subdir_package_project = TestProject()
subdir_package_project.files['src/spam/spam.c'] = jinja2.Template(
    SPAM_C_TEMPLATE)
subdir_package_project.template_context['spam_c_top_level_add'] = ''
subdir_package_project.template_context['spam_c_function_add'] = ''
subdir_package_project.files['src/spam/setup.py'] = """
from setuptools import Extension, setup

setup(
    name="spam",
    ext_modules=[Extension('spam', sources=['spam.c'])],
    version="0.1.0",
)
"""
subdir_package_project.files['src/spam/test/run_tests.py'] = """
print('run_tests.py executed!')
"""
subdir_package_project.files['bin/before_build.py'] = """
print('before_build.py executed!')
"""


def test(capfd, tmp_path):
    project_dir = tmp_path / 'project'
    subdir_package_project.generate(project_dir)
    package_dir = Path('src', 'spam')
    actual_wheels = utils.cibuildwheel_run(project_dir, package_dir=
        package_dir, add_env={'CIBW_BEFORE_BUILD':
        'python {project}/bin/before_build.py', 'CIBW_TEST_COMMAND':
        'python {package}/test/run_tests.py', 'CIBW_BUILD': 'cp310-*'})
    expected_wheels = [w for w in utils.expected_wheels('spam', '0.1.0') if
        'cp310' in w]
    assert set(actual_wheels) == set(expected_wheels)
    captured = capfd.readouterr()
    assert 'before_build.py executed!' in captured.out
    assert 'run_tests.py executed!' in captured.out

from __future__ import annotations
from pathlib import Path
import jinja2
from . import utils
from .test_projects import TestProject
from .test_projects.c import SPAM_C_TEMPLATE
subdir_package_project = TestProject()
subdir_package_project.files['src/spam/spam.c'] = jinja2.Template(
    SPAM_C_TEMPLATE)
subdir_package_project.template_context['spam_c_top_level_add'] = ''
subdir_package_project.template_context['spam_c_function_add'] = ''
subdir_package_project.files['src/spam/setup.py'] = """
from setuptools import Extension, setup

setup(
    name="spam",
    ext_modules=[Extension('spam', sources=['spam.c'])],
    version="0.1.0",
)
"""
subdir_package_project.files['src/spam/test/run_tests.py'] = """
print('run_tests.py executed!')
"""
subdir_package_project.files['bin/before_build.py'] = """
print('before_build.py executed!')
"""


def test(capfd, tmp_path):
    project_dir = tmp_path / 'project'
    subdir_package_project.generate(project_dir)
    package_dir = Path('src', 'spam')
    actual_wheels = utils.cibuildwheel_run(project_dir, package_dir=
        package_dir, add_env={'CIBW_BEFORE_BUILD':
        'python {project}/bin/before_build.py', 'CIBW_TEST_COMMAND':
        'python {package}/test/run_tests.py', 'CIBW_BUILD': 'cp310-*'})
    expected_wheels = [w for w in utils.expected_wheels('spam', '0.1.0') if
        'cp310' in w]
    assert set(actual_wheels) == set(expected_wheels)
    captured = capfd.readouterr()
    assert 'before_build.py executed!' in captured.out
    assert 'run_tests.py executed!' in captured.out

from __future__ import annotations

from pathlib import Path

import jinja2

from . import utils
from .test_projects import TestProject
from .test_projects.c import SPAM_C_TEMPLATE

subdir_package_project = TestProject()

subdir_package_project.files["src/spam/spam.c"] = jinja2.Template(SPAM_C_TEMPLATE)
subdir_package_project.template_context["spam_c_top_level_add"] = ""
subdir_package_project.template_context["spam_c_function_add"] = ""

subdir_package_project.files[
    "src/spam/setup.py"
] = r"""
from setuptools import Extension, setup

setup(
    name="spam",
    ext_modules=[Extension('spam', sources=['spam.c'])],
    version="0.1.0",
)
"""

subdir_package_project.files[
    "src/spam/test/run_tests.py"
] = r"""
print('run_tests.py executed!')
"""

subdir_package_project.files[
    "bin/before_build.py"
] = r"""
print('before_build.py executed!')
"""


def test(capfd, tmp_path):
    project_dir = tmp_path / "project"
    subdir_package_project.generate(project_dir)

    package_dir = Path("src", "spam")
    # build the wheels
    actual_wheels = utils.cibuildwheel_run(
        project_dir,
        package_dir=package_dir,
        add_env={
            "CIBW_BEFORE_BUILD": "python {project}/bin/before_build.py",
            "CIBW_TEST_COMMAND": "python {package}/test/run_tests.py",
            # this shouldn't depend on the version of python, so build only CPython 3.10
            "CIBW_BUILD": "cp310-*",
        },
    )

    # check that the expected wheels are produced
    expected_wheels = [w for w in utils.expected_wheels("spam", "0.1.0") if "cp310" in w]
    assert set(actual_wheels) == set(expected_wheels)

    captured = capfd.readouterr()
    assert "before_build.py executed!" in captured.out
    assert "run_tests.py executed!" in captured.out
