Merge pull request #81 from madig/macos-test-cmd-in-shell
macOS: run test_command in shell
This commit is contained in:
@@ -238,8 +238,13 @@ Optional.
|
|||||||
|
|
||||||
Shell command to run tests after the build. The wheel will be installed automatically and available for import from the tests. `{project}` can be used as a placeholder for the absolute path to the project's root and will be replaced by `cibuildwheel`.
|
Shell command to run tests after the build. The wheel will be installed automatically and available for import from the tests. `{project}` can be used as a placeholder for the absolute path to the project's root and will be replaced by `cibuildwheel`.
|
||||||
|
|
||||||
|
On Linux and Mac, the command runs in a shell, so you can write things like `cmd1 && cmd2`.
|
||||||
|
|
||||||
Example: `nosetests {project}/tests`
|
Example: `nosetests {project}/tests`
|
||||||
|
|
||||||
|
Platform-specific variants also available:
|
||||||
|
`CIBW_TEST_COMMAND_MACOS` | `CIBW_TEST_COMMAND_WINDOWS` | `CIBW_TEST_COMMAND_LINUX`
|
||||||
|
|
||||||
| Environment variable: `CIBW_TEST_REQUIRES`
|
| Environment variable: `CIBW_TEST_REQUIRES`
|
||||||
| ---
|
| ---
|
||||||
|
|
||||||
@@ -250,6 +255,9 @@ Space-separated list of dependencies required for running the tests.
|
|||||||
Example: `pytest`
|
Example: `pytest`
|
||||||
Example: `nose==1.3.7 moto==0.4.31`
|
Example: `nose==1.3.7 moto==0.4.31`
|
||||||
|
|
||||||
|
Platform-specific variants also available:
|
||||||
|
`CIBW_TEST_REQUIRES_MACOS` | `CIBW_TEST_REQUIRES_WINDOWS` | `CIBW_TEST_REQUIRES_LINUX`
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
#### Example YML syntax
|
#### Example YML syntax
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import cibuildwheel.linux, cibuildwheel.windows, cibuildwheel.macos
|
|||||||
from cibuildwheel.environment import parse_environment, EnvironmentParseError
|
from cibuildwheel.environment import parse_environment, EnvironmentParseError
|
||||||
from cibuildwheel.util import BuildSkipper
|
from cibuildwheel.util import BuildSkipper
|
||||||
|
|
||||||
def get_option_from_environment(option_name, platform=None):
|
def get_option_from_environment(option_name, platform=None, default=None):
|
||||||
'''
|
'''
|
||||||
Returns an option from the environment, optionally scoped by the platform.
|
Returns an option from the environment, optionally scoped by the platform.
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ def get_option_from_environment(option_name, platform=None):
|
|||||||
if option is not None:
|
if option is not None:
|
||||||
return option
|
return option
|
||||||
|
|
||||||
return os.environ.get(option_name)
|
return os.environ.get(option_name, default)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@@ -70,13 +70,13 @@ def main():
|
|||||||
exit(2)
|
exit(2)
|
||||||
|
|
||||||
output_dir = args.output_dir
|
output_dir = args.output_dir
|
||||||
test_command = os.environ.get('CIBW_TEST_COMMAND', None)
|
test_command = get_option_from_environment('CIBW_TEST_COMMAND', platform=platform)
|
||||||
test_requires = os.environ.get('CIBW_TEST_REQUIRES', '').split()
|
test_requires = get_option_from_environment('CIBW_TEST_REQUIRES', platform=platform, default='').split()
|
||||||
project_dir = args.project_dir
|
project_dir = args.project_dir
|
||||||
before_build = get_option_from_environment('CIBW_BEFORE_BUILD', platform=platform)
|
before_build = get_option_from_environment('CIBW_BEFORE_BUILD', platform=platform)
|
||||||
build_verbosity = get_option_from_environment('CIBW_BUILD_VERBOSITY', platform=platform) or ''
|
build_verbosity = get_option_from_environment('CIBW_BUILD_VERBOSITY', platform=platform, default='')
|
||||||
skip_config = os.environ.get('CIBW_SKIP', '')
|
skip_config = os.environ.get('CIBW_SKIP', '')
|
||||||
environment_config = get_option_from_environment('CIBW_ENVIRONMENT', platform=platform) or ''
|
environment_config = get_option_from_environment('CIBW_ENVIRONMENT', platform=platform, default='')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
build_verbosity = min(3, max(-3, int(build_verbosity)))
|
build_verbosity = min(3, max(-3, int(build_verbosity)))
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ def build(project_dir, package_name, output_dir, test_command, test_requires, be
|
|||||||
# (this ensures that Python runs the tests against the installed wheel
|
# (this ensures that Python runs the tests against the installed wheel
|
||||||
# and not the repo code)
|
# and not the repo code)
|
||||||
test_command_prepared = prepare_command(test_command, project=abs_project_dir)
|
test_command_prepared = prepare_command(test_command, project=abs_project_dir)
|
||||||
call(shlex.split(test_command_prepared), cwd=os.environ['HOME'], env=env)
|
call(test_command_prepared, cwd=os.environ['HOME'], env=env, shell=True)
|
||||||
|
|
||||||
# we're all done here; move it to output
|
# we're all done here; move it to output
|
||||||
shutil.move(delocated_wheel, output_dir)
|
shutil.move(delocated_wheel, output_dir)
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
"CIBW_TEST_REQUIRES": "nose",
|
"CIBW_TEST_REQUIRES": "nose",
|
||||||
"CIBW_TEST_COMMAND": "nosetests {project}/test"
|
"CIBW_TEST_COMMAND": "false || nosetests {project}/test",
|
||||||
|
"comment": "The 'false ||' bit is to ensure this command runs in a shell on Mac and Linux",
|
||||||
|
"CIBW_TEST_COMMAND_WINDOWS": "nosetests {project}/test"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user