From 618c7305d60bbf130e6b213b1f41ba9f613481d0 Mon Sep 17 00:00:00 2001 From: Chris Mayo Date: Tue, 27 Aug 2024 19:34:28 +0100 Subject: [PATCH] Fail tests instead of skipping if resources are unavailable in CI --- tests/__init__.py | 19 +++++++++++++------ tests/checker/ftpserver.py | 5 +++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/tests/__init__.py b/tests/__init__.py index ab756bf7..0bfe671e 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -43,6 +43,13 @@ def running_in_ci(): return "CI" in os.environ +def skip(reason, strict=True): + if strict and running_in_ci(): + pytest.fail(reason) + else: + pytest.skip(reason) + + def run(cmd, verbosity=0, **kwargs): """Run command without error checking. @return: command return code""" @@ -70,14 +77,14 @@ def run_silent(cmd): null.close() -def _need_func(testfunc, name): +def _need_func(testfunc, name, strict=True): """Decorator skipping test if given testfunc fails.""" def check_func(func): @wraps(func) def newfunc(*args, **kwargs): if not testfunc(): - pytest.skip("%s is not available" % name) + skip("%s is not available" % name, strict) return func(*args, **kwargs) return newfunc @@ -116,7 +123,7 @@ def has_posix(): return os.name == "posix" -need_posix = _need_func(has_posix, "POSIX system") +need_posix = _need_func(has_posix, "POSIX system", False) @lru_cache(1) @@ -125,7 +132,7 @@ def has_windows(): return os.name == "nt" -need_windows = _need_func(has_windows, "Windows system") +need_windows = _need_func(has_windows, "Windows system", False) @lru_cache(1) @@ -134,7 +141,7 @@ def has_linux(): return sys.platform.startswith("linux") -need_linux = _need_func(has_linux, "Linux system") +need_linux = _need_func(has_linux, "Linux system", False) @lru_cache(1) @@ -212,7 +219,7 @@ def has_word(): return parseword.has_word() -need_word = _need_func(has_word, "Word") +need_word = _need_func(has_word, "Word", False) @lru_cache(1) diff --git a/tests/checker/ftpserver.py b/tests/checker/ftpserver.py index 8643f616..e3e01379 100644 --- a/tests/checker/ftpserver.py +++ b/tests/checker/ftpserver.py @@ -19,8 +19,9 @@ Define http test support classes for LinkChecker tests. import os import time import threading -import pytest from ftplib import FTP + +from tests import skip from . import LinkCheckTest @@ -61,7 +62,7 @@ def start_server(host, port): from pyftpdlib.servers import FTPServer from pyftpdlib import __ver__ as pyftpdlib_version except ImportError: - pytest.skip("pyftpdlib is not available") + skip("pyftpdlib is not available") return authorizer = DummyAuthorizer() datadir = os.path.join(os.path.dirname(__file__), "data")