mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-05-11 16:13:11 +00:00
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:
commit
092590050c
6 changed files with 26 additions and 14 deletions
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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 = [
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
2
tox.ini
2
tox.ini
|
|
@ -9,7 +9,7 @@ deps =
|
|||
pyopenssl
|
||||
pytest-xdist
|
||||
pytest-cov
|
||||
GeoIP
|
||||
geoip: GeoIP
|
||||
|
||||
[testenv]
|
||||
usedevelop = true
|
||||
|
|
|
|||
Loading…
Reference in a new issue