summaryrefslogtreecommitdiff
path: root/setuptools
diff options
context:
space:
mode:
authorAnderson Bravalheri <andersonbravalheri@gmail.com>2022-06-17 10:48:45 +0100
committerAnderson Bravalheri <andersonbravalheri@gmail.com>2022-06-17 10:48:45 +0100
commita19c4dfb8f7fda86a755b181bbf5819fc4139ab7 (patch)
tree1afaae4e9db324cc85d03fc5307c691aa5828293 /setuptools
parent8db675d5bd5972d00ebd49d09c7dabab87a5d43a (diff)
downloadpython-setuptools-git-a19c4dfb8f7fda86a755b181bbf5819fc4139ab7.tar.gz
Address errors in tests for Windows
Diffstat (limited to 'setuptools')
-rw-r--r--setuptools/build_meta.py8
-rw-r--r--setuptools/tests/test_build_meta.py43
2 files changed, 27 insertions, 24 deletions
diff --git a/setuptools/build_meta.py b/setuptools/build_meta.py
index 1010dba4..f39a5a62 100644
--- a/setuptools/build_meta.py
+++ b/setuptools/build_meta.py
@@ -290,18 +290,18 @@ class _ConfigSettingsTranslator:
"""
args = self._get_config("--global-option", config_settings)
global_opts = self._valid_global_options()
- warn = []
+ bad_args = []
for arg in args:
if arg.strip("-") not in global_opts:
- warn.append(arg)
+ bad_args.append(arg)
yield arg
yield from self._get_config("--build-option", config_settings)
- if warn:
+ if bad_args:
msg = f"""
- The arguments {warn!r} were given via `--global-option`.
+ The arguments {bad_args!r} were given via `--global-option`.
Please use `--build-option` instead,
`--global-option` is reserved to flags like `--verbose` or `--quiet`.
"""
diff --git a/setuptools/tests/test_build_meta.py b/setuptools/tests/test_build_meta.py
index a669a3ac..7337ef4d 100644
--- a/setuptools/tests/test_build_meta.py
+++ b/setuptools/tests/test_build_meta.py
@@ -12,7 +12,6 @@ from pathlib import Path
import pytest
from jaraco import path
-from setuptools._deprecation_warning import SetuptoolsDeprecationWarning
from .textwrap import DALS
@@ -624,23 +623,31 @@ class TestBuildMetaBackend:
}
}
- # For some reason `pytest.warns` does no seem to work here
- # but `pytest.raises` does works (in systems other then macOS),
- # together with an error filter.
- @pytest.mark.xfail(
- sys.platform == "darwin",
- reason="inconsistent behaviour in macOS"
- )
- @pytest.mark.filterwarnings("error::setuptools.SetuptoolsDeprecationWarning")
- def test_editable_with_config_settings_warning(self, tmpdir_cwd):
+ def _assert_link_tree(self, parent_dir):
+ """All files in the directory should be either links or hard links"""
+ files = list(Path(parent_dir).glob("**/*"))
+ assert files # Should not be empty
+ for file in files:
+ assert file.is_symlink() or os.stat(file).st_nlink > 0
+
+ @pytest.mark.filterwarnings("ignore::setuptools.SetuptoolsDeprecationWarning")
+ # Since the backend is running via a process pool, in some operating systems
+ # we may have problems to make assertions based on warnings/stdout/stderr...
+ # So the best is to ignore them for the time being.
+ def test_editable_with_global_option_still_works(self, tmpdir_cwd):
+ """The usage of --global-option is now discouraged in favour of --build-option.
+ This is required to make more sense of the provided scape hatch and align with
+ previous pip behaviour. See pypa/setuptools#1928.
+ """
path.build({**self._simple_pyproject_example, '_meta': {}})
build_backend = self.get_build_backend()
+ assert not Path("build").exists()
+
+ cfg = {"--global-option": "--strict"}
+ build_backend.prepare_metadata_for_build_editable("_meta", cfg)
+ build_backend.build_editable("temp", cfg, "_meta")
- msg = "The arguments .'--strict'. were given via .--global-option."
- with pytest.raises(SetuptoolsDeprecationWarning, match=msg):
- cfg = {"--global-option": "--strict"}
- build_backend.prepare_metadata_for_build_editable("_meta", cfg)
- build_backend.build_editable("temp", cfg, "_meta")
+ self._assert_link_tree(next(Path("build").glob("__editable__.*")))
def test_editable_without_config_settings(self, tmpdir_cwd):
"""
@@ -668,11 +675,7 @@ class TestBuildMetaBackend:
build_backend = self.get_build_backend()
build_backend.prepare_metadata_for_build_editable("_meta", config_settings)
build_backend.build_editable("temp", config_settings, "_meta")
- files = list(Path("build").glob("__editable__.*/**/*"))
- assert files
- for file in files:
- # All files should either links or hard links
- assert file.is_symlink() or os.stat(file).st_nlink > 0
+ self._assert_link_tree(next(Path("build").glob("__editable__.*")))
@pytest.mark.parametrize('setup_literal, requirements', [
("'foo'", ['foo']),