mirror of
1
0
Fork 0

Enforce platform-specific CPython version requirements for Windows in tox

This also changes the black and isort tests to use CPython 3.9
because Cygwin currently doesn't have CPython 3.10 available.
This commit is contained in:
Kurt McKee 2022-05-05 07:51:05 -05:00
parent ea98e5eafc
commit 1ff796a9dc
3 changed files with 13 additions and 36 deletions

View File

@ -3,21 +3,6 @@ import sys
import pytest import pytest
# Python 2.7 on Windows does not have an `os.symlink()` function.
# PyPy on Windows raises NotImplementedError when `os.symlink()` is called.
# Older Python 3 versions on Windows require admin rights to create symlinks.
#
# In addition, functions like `os.path.realpath()` on Windows Pythons < 3.8
# do not resolve symlinks and directory junctions correctly,
# and `shutil.rmtree()` will fail to delete directory junctions.
#
# For these reasons, if the tests are running on Windows with Python < 3.8
# or with PyPy, the entire link test suite must be skipped.
#
if sys.platform[:5] == "win32" and (sys.version_info < (3, 8) or "pypy" in sys.version.lower()):
reason = "It is impossible to perform link tests on this platform"
pytestmark = pytest.mark.skip(reason=reason)
def test_clean_default(root, home, dotfiles, run_dotbot): def test_clean_default(root, home, dotfiles, run_dotbot):
"""Verify clean uses default unless overridden.""" """Verify clean uses default unless overridden."""

View File

@ -3,21 +3,6 @@ import sys
import pytest import pytest
# Python 2.7 on Windows does not have an `os.symlink()` function.
# PyPy on Windows raises NotImplementedError when `os.symlink()` is called.
# Older Python 3 versions on Windows require admin rights to create symlinks.
#
# In addition, functions like `os.path.realpath()` on Windows Pythons < 3.8
# do not resolve symlinks and directory junctions correctly,
# and `shutil.rmtree()` will fail to delete directory junctions.
#
# For these reasons, if the tests are running on Windows with Python < 3.8
# or with PyPy, the entire link test suite must be skipped.
#
if sys.platform[:5] == "win32" and (sys.version_info < (3, 8) or "pypy" in sys.version.lower()):
reason = "It is impossible to perform link tests on this platform"
pytestmark = pytest.mark.skip(reason=reason)
def test_link_canonicalization(home, dotfiles, run_dotbot): def test_link_canonicalization(home, dotfiles, run_dotbot):
"""Verify links to symlinked destinations are canonical. """Verify links to symlinked destinations are canonical.

19
tox.ini
View File

@ -1,13 +1,20 @@
[tox] [tox]
; On Windows, only CPython >= 3.8 is supported.
; All older versions, and PyPy, lack full symlink support.
envlist = envlist =
py{27, 35, 36, 37, 38, 39, 310} py{38, 39, 310}-all_platforms
pypy{2, 3} py{27, 35, 36, 37}-most_platforms
py310-black pypy{2, 3}-most_platforms
py310-isort py39-black
py39-isort
skip_missing_interpreters = true skip_missing_interpreters = true
[testenv] [testenv]
platform =
all_platforms: cygwin|darwin|linux|win32
most_platforms: cygwin|darwin|linux
deps = deps =
pytest pytest
pytest-randomly pytest-randomly
@ -18,7 +25,7 @@ commands =
pytest tests/ pytest tests/
[testenv:py310-black] [testenv:py39-black]
skip_install = true skip_install = true
skip_build = true skip_build = true
deps = deps =
@ -28,7 +35,7 @@ commands =
black --check dotbot/ tests/ black --check dotbot/ tests/
[testenv:py310-isort] [testenv:py39-isort]
skip_install = true skip_install = true
skip_build = true skip_build = true
deps = deps =