Merge pull request #831 from cjmayo/ci-deps

Fail CI tests instead of skipping and add a geoip tox factor
This commit is contained in:
Chris Mayo 2024-08-27 19:37:33 +01:00 committed by GitHub
commit 092590050c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 26 additions and 14 deletions

View file

@ -105,7 +105,7 @@ jobs:
- name: Run tests
run: |
python -m hatchling build -t sdist --hooks-only
python -m tox -e ${{ matrix.toxenv }}
python -m tox -e ${{ matrix.toxenv }}-geoip
- name: Report to coveralls
uses: coverallsapp/github-action@f350da2c033043742f89e8c0b7b5145a1616da6d # v2.1.2

View file

@ -38,6 +38,18 @@ class TestBase(unittest.TestCase):
init_i18n()
@lru_cache(1)
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"""
@ -65,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
@ -111,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)
@ -120,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)
@ -129,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)
@ -207,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)

View file

@ -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")

View file

@ -135,7 +135,7 @@ class TestFile(LinkCheckTest):
# Fails on NT platforms and I am too lazy to fix
# Cause: url get quoted %7C which gets lowercased to
# %7c and this fails.
pytest.skip("Not running on NT")
pytest.skip("Running on Windows")
url = "file:/%(curdir)s/%(datadir)s/file.txt" % self.get_attrs()
nurl = self.norm(url)
resultlines = [

View file

@ -16,15 +16,14 @@
"""
Test http stuff with httpbin.org.
"""
import os
import re
from tests import need_network
from tests import need_network, running_in_ci
from . import LinkCheckTest
def get_httpbin_url(path):
"""Get httpbin URL."""
if "CI" in os.environ:
if running_in_ci():
host = "localhost:8080"
else:
host = "httpbin.org"

View file

@ -9,7 +9,7 @@ deps =
pyopenssl
pytest-xdist
pytest-cov
GeoIP
geoip: GeoIP
[testenv]
usedevelop = true