Merge pull request #80 from yan12125/add-missing_ok

Add missing ok
This commit is contained in:
依云 2018-09-21 16:10:58 +08:00 committed by GitHub
commit 68d9cd5d61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 26 additions and 3 deletions

View File

@ -177,6 +177,10 @@ from_pattern, to_pattern
Both are Python-compatible regular expressions. If ``from_pattern`` is found
in the version string, it will be replaced with ``to_pattern``.
missing_ok
Suppress warnings and errors if a version checking module finds nothing.
Currently only ``regex`` supports it.
If both ``prefix`` and ``from_pattern``/``to_pattern`` are used,
``from_pattern``/``to_pattern`` are ignored. If you want to strip the prefix
and then do something special, just use ``from_pattern```/``to_pattern``. For

View File

@ -176,7 +176,8 @@ class Source:
elif result is not None:
self.print_version_update(name, result)
else:
logger.warn('no-result', name=name)
if not conf.getboolean('missing_ok', False):
logger.warn('no-result', name=name)
self.on_no_result(name)
if self.newver:

View File

@ -34,5 +34,6 @@ async def get_version(name, conf, **kwargs):
version = max(regex.findall(body), key=sort_version_key)
except ValueError:
version = None
logger.error('version string not found.', name=name)
if not conf.getboolean('missing_ok', False):
logger.error('version string not found.', name=name)
return version

View File

@ -2,6 +2,7 @@ import configparser
import pytest
import asyncio
import io
import structlog
from nvchecker.get_version import get_version as _get_version
from nvchecker.core import Source
@ -53,3 +54,12 @@ def event_loop(request):
"""
loop = asyncio.get_event_loop()
yield loop
@pytest.fixture(scope="module")
def raise_on_logger_msg():
def proc(logger, method_name, event_dict):
if method_name in ('warn', 'error'):
raise RuntimeError(event_dict['event'])
return event_dict['event']
structlog.configure([proc])

View File

@ -18,3 +18,10 @@ async def test_regex(get_version):
"url": "https://example.net/",
"regex": 'for (\w+) examples',
}) == "illustrative"
async def test_missing_ok(get_version, raise_on_logger_msg):
assert await get_version("example", {
"url": "https://example.net/",
"regex": "foobar",
"missing_ok": True,
}) is None

View File

@ -19,4 +19,4 @@ async def test_ubuntupkg_suite(get_version):
@flaky
async def test_ubuntupkg_suite_with_paging(get_version):
assert await get_version("ffmpeg", {"ubuntupkg": None, "suite": "xenial"}) == "7:2.8.14-0ubuntu0.16.04.1"
assert await get_version("ffmpeg", {"ubuntupkg": None, "suite": "xenial"}) == "7:2.8.15-0ubuntu0.16.04.1"