mirror of
https://github.com/lilydjwg/nvchecker.git
synced 2025-03-10 06:14:02 +00:00
New version checker for software releases
For example, on reproducible.archlinux.org, apparently pacman databases are not synced before building synced before building packages, and thus packages cannot be found. From https://reproducible.archlinux.org/api/v0/builds/110565/log, =================================== FAILURES =================================== _________________________________ test_pacman __________________________________ get_version = <function get_version.<locals>.__call__ at 0x7f2fa5ed1310> async def test_pacman(get_version): > assert await get_version("ipw2100-fw", { "source": "pacman", }) == "1.3-10" tests/test_pacman.py:11: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:46: in __call__ newvers = await run(entries) tests/conftest.py:40: in run return await main.run(result_coro, runner_coro) nvchecker/__main__.py:92: in run return await result_fu nvchecker/core.py:361: in process_result r1 = _process_result(r) nvchecker/core.py:322: in _process_result logger.error(version.msg, **kw) /usr/lib/python3.9/site-packages/structlog/_log_levels.py:118: in meth return self._proxy_to_logger(name, event, **kw) /usr/lib/python3.9/site-packages/structlog/_base.py:198: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) /usr/lib/python3.9/site-packages/structlog/_base.py:155: in _process_event event_dict = proc(self._logger, method_name, event_dict) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ logger = <PrintLogger(file=<_io.TextIOWrapper name="<_io.FileIO name=6 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>)> method_name = 'error' event_dict = {'cmd': "LANG=C pacman -Si ipw2100-fw | grep -F Version | awk '{print $3}' | head -n 1", 'error': "warning: database f...r: package 'ipw2100-fw' was not found", 'event': 'command exited without output', 'logger_name': 'nvchecker.core', ...} def proc(logger, method_name, event_dict): if method_name in ('warning', 'error'): if 'exc_info' in event_dict: raise event_dict['exc_info'] if not event_dict['event'].startswith(('rate limited', 'no-result')): > raise RuntimeError(event_dict['event']) E RuntimeError: command exited without output tests/conftest.py:85: RuntimeError ----------------------------- Captured stdout call ----------------------------- running cmd __________________________ test_pacman_strip_release ___________________________ get_version = <function get_version.<locals>.__call__ at 0x7f2fa5ed1310> async def test_pacman_strip_release(get_version): > assert await get_version("ipw2100-fw", { "source": "pacman", "strip_release": 1, }) == "1.3" tests/test_pacman.py:16: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:46: in __call__ newvers = await run(entries) tests/conftest.py:40: in run return await main.run(result_coro, runner_coro) nvchecker/__main__.py:92: in run return await result_fu nvchecker/core.py:361: in process_result r1 = _process_result(r) nvchecker/core.py:322: in _process_result logger.error(version.msg, **kw) /usr/lib/python3.9/site-packages/structlog/_log_levels.py:118: in meth return self._proxy_to_logger(name, event, **kw) /usr/lib/python3.9/site-packages/structlog/_base.py:198: in _proxy_to_logger args, kw = self._process_event(method_name, event, event_kw) /usr/lib/python3.9/site-packages/structlog/_base.py:155: in _process_event event_dict = proc(self._logger, method_name, event_dict) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ logger = <PrintLogger(file=<_io.TextIOWrapper name="<_io.FileIO name=6 mode='rb+' closefd=True>" mode='r+' encoding='utf-8'>)> method_name = 'error' event_dict = {'cmd': "LANG=C pacman -Si ipw2100-fw | grep -F Version | awk '{print $3}' | head -n 1", 'error': "warning: database f...r: package 'ipw2100-fw' was not found", 'event': 'command exited without output', 'logger_name': 'nvchecker.core', ...} def proc(logger, method_name, event_dict): if method_name in ('warning', 'error'): if 'exc_info' in event_dict: raise event_dict['exc_info'] if not event_dict['event'].startswith(('rate limited', 'no-result')): > raise RuntimeError(event_dict['event']) E RuntimeError: command exited without output tests/conftest.py:85: RuntimeError ----------------------------- Captured stdout call ----------------------------- running cmd |
||
---|---|---|
.github/workflows | ||
docs | ||
nvchecker | ||
nvchecker_source | ||
scripts | ||
tests | ||
.gitignore | ||
keyfile.toml.enc | ||
LICENSE | ||
mypy.ini | ||
README.rst | ||
sample_config.toml | ||
setup.cfg | ||
setup.py |
**nvchecker** (short for *new version checker*) is for checking if a new version of some software has been released. This is the version 2.0 branch. For the old version 1.x, please switch to the ``v1.x`` branch. .. image:: https://github.com/lilydjwg/nvchecker/workflows/run%20tests/badge.svg?branch=master :alt: Test Status :target: https://github.com/lilydjwg/nvchecker/actions?query=workflow%3A%22run+tests%22 .. image:: https://badge.fury.io/py/nvchecker.svg :alt: PyPI version :target: https://badge.fury.io/py/nvchecker .. image:: https://readthedocs.org/projects/nvchecker/badge/?version=latest :target: https://nvchecker.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status | .. image:: https://repology.org/badge/vertical-allrepos/nvchecker.svg :alt: Packaging status :target: https://repology.org/metapackage/nvchecker/versions .. contents:: :local: Dependency ---------- - Python 3.7+ - Python library: structlog, toml, appdirs - One of these Python library combinations (ordered by preference): * tornado + pycurl * aiohttp * httpx with http2 support (experimental; only latest version is supported) * tornado - All commands used in your software version configuration files Install and Run --------------- To install:: pip3 install nvchecker To use the latest code, you can also clone this repository and run:: python3 setup.py install To see available options:: nvchecker --help Run with one or more software version files:: nvchecker -c config_file You normally will like to specify some "version record files"; see below. Documentation ------------- For detailed documentation, see `https://nvchecker.readthedocs.io/en/latest/ <https://nvchecker.readthedocs.io/en/latest/>`_.