From f77caa259db8949bbca6035f06a25ed49088a14b Mon Sep 17 00:00:00 2001
From: "Timothy A. Smith" <tasmith4@illinois.edu>
Date: Wed, 29 May 2019 10:21:40 -0500
Subject: [PATCH] tests marked with @pytest.mark.slow will be skipped by
 default, but not by the CI script

---
 build-and-test-py-project.sh |  2 +-
 conftest.py                  | 21 +++++++++++++++++++++
 2 files changed, 22 insertions(+), 1 deletion(-)
 create mode 100644 conftest.py

diff --git a/build-and-test-py-project.sh b/build-and-test-py-project.sh
index 08035f5..8bfbc06 100644
--- a/build-and-test-py-project.sh
+++ b/build-and-test-py-project.sh
@@ -85,6 +85,6 @@ if test -f $REQUIREMENTS_TXT; then
   $PIP install -r $REQUIREMENTS_TXT
 fi
 
-${PY_EXE} -m pytest -rw --durations=10 --tb=native  --junitxml=pytest.xml -rxsw test.py
+${PY_EXE} -m pytest -rw --durations=10 --tb=native --junitxml=pytest.xml -rxsw --runslow test.py
 
 # vim: foldmethod=marker
diff --git a/conftest.py b/conftest.py
new file mode 100644
index 0000000..29be9d5
--- /dev/null
+++ b/conftest.py
@@ -0,0 +1,21 @@
+# setup to mark slow tests with @pytest.mark.slow, so that they don't run by
+# default, but can be forced to run with the command-line option --runslow
+# taken from
+# https://docs.pytest.org/en/latest/example/simple.html#control-skipping-of-tests-according-to-command-line-option
+
+import pytest
+
+
+def pytest_addoption(parser):
+    parser.addoption("--runslow", action="store_true", default=False,
+            help="run slow tests")
+
+
+def pytest_collection_modifyitems(config, items):
+    if config.getoption("--runslow"):
+        # --runslow given in cli: do not skip slow tests
+        return
+    skip_slow = pytest.mark.skip(reason="need --runslow option to run")
+    for item in items:
+        if "slow" in item.keywords:
+            item.add_marker(skip_slow)
-- 
GitLab