X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/ed9d58b7410f24446cedebd0f767b71b154f5f5b..bd9d52b52d58df60bffe164309a48cb61ac8d3b7:/tox.ini?ds=sidebyside

diff --git a/tox.ini b/tox.ini
index 9bb809a..683a543 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,15 +1,59 @@
 [tox]
-envlist = py{36,37,38,39},fuzz
+envlist = {,ci-}py{36,37,38,39,310,py3},fuzz
 
 [testenv]
 setenv = PYTHONPATH = {toxinidir}/src
 skip_install = True
+# We use `recreate=True` because otherwise, on the second run of `tox -e py`,
+# the `no_python2` tests would run with the Python2 extra dependencies installed.
+# See https://github.com/psf/black/issues/2367.
+recreate = True
 deps =
     -r{toxinidir}/test_requirements.txt
+; parallelization is disabled on CI because pytest-dev/pytest-xdist#620 occurs too frequently
+; local runs can stay parallelized since they aren't rolling the dice so many times as like on CI
 commands =
+    pip install -e .[d]
+    coverage erase
+    pytest tests --run-optional no_python2 \
+        --run-optional no_jupyter \
+        !ci: --numprocesses auto \
+        --cov {posargs}
     pip install -e .[d,python2]
+    pytest tests --run-optional python2 \
+        --run-optional no_jupyter \
+        !ci: --numprocesses auto \
+        --cov --cov-append {posargs}
+    pip install -e .[jupyter]
+    pytest tests --run-optional jupyter \
+        -m jupyter \
+        !ci: --numprocesses auto \
+        --cov --cov-append {posargs}
+    coverage report
+
+[testenv:{,ci-}pypy3]
+setenv = PYTHONPATH = {toxinidir}/src
+skip_install = True
+recreate = True
+deps =
+    -r{toxinidir}/test_requirements.txt
+; a separate worker is required in ci due to https://foss.heptapod.net/pypy/pypy/-/issues/3317
+; this seems to cause tox to wait forever
+; remove this when pypy releases the bugfix
+commands =
+    pip install -e .[d]
     coverage erase
-    coverage run -m pytest tests
+    pytest tests --run-optional no_python2 \
+        --run-optional no_jupyter \
+        !ci: --numprocesses auto \
+        ci: --numprocesses 1 \
+        --cov {posargs}
+    pip install -e .[jupyter]
+    pytest tests --run-optional jupyter \
+        -m jupyter \
+        !ci: --numprocesses auto \
+        ci: --numprocesses 1 \
+        --cov --cov-append {posargs}
     coverage report
 
 [testenv:fuzz]
@@ -23,4 +67,4 @@ commands =
     pip install -e .[d]
     coverage erase
     coverage run fuzz.py
-    coverage report
\ No newline at end of file
+    coverage report