Merge branch 'master' of github.com:lilydjwg/nvchecker

This commit is contained in:
lilydjwg 2017-07-04 10:45:55 +08:00
commit ca2dbd5949
7 changed files with 72 additions and 4 deletions

View file

@ -8,7 +8,7 @@ python:
# ptr requires Python >= 3.3 but pypy3 reports 3.2
# - "pypy3"
install: pip install -U pytest pytest-runner
script: python setup.py ptr
script: python setup.py pytest
env:
global:
- ASYNC_TEST_TIMEOUT=20

View file

@ -317,6 +317,19 @@ archpkg
strip-release
Strip the release part.
Check Debian Linux official packages
----------------------------------
This enables you to track the update of `Debian Linux official packages <https://packages.debian.org>`_, without needing of apt and an updated local APT database.
debianpkg
Name of the Debian Linux source package.
suite
Name of the Debian release (jessie, wheezy, etc, defaults to sid)
strip-release
Strip the release part.
Check Google Code (hg repository)
---------------------------------
Check a mercurial (hg) repository on `Google Code <https://code.google.com/>`_ for updates. The version returned is in date format ``%Y%m%d``, e.g. ``20130701``.

View file

@ -6,7 +6,7 @@ from importlib import import_module
logger = logging.getLogger(__name__)
handler_precedence = (
'github', 'aur', 'pypi', 'archpkg', 'gems', 'pacman',
'github', 'aur', 'pypi', 'archpkg', 'debianpkg', 'gems', 'pacman',
'cmd', 'bitbucket', 'gcode_hg', 'gcode_svn', 'regex', 'manual', 'vcs',
'cratesio', 'npm', 'hackage', 'cpan', 'gitlab', 'packagist'
)

View file

@ -0,0 +1,39 @@
# MIT licensed
# Copyright (c) 2017 Felix Yan <felixonmars@archlinux.org>, et al.
from functools import partial
import logging
import json
from tornado.httpclient import AsyncHTTPClient
logger = logging.getLogger(__name__)
URL = 'https://sources.debian.net/api/src/%(pkgname)s/?suite=%(suite)s'
def get_version(name, conf, callback):
pkg = conf.get('debianpkg') or name
strip_release = conf.getboolean('strip-release', False)
suite = conf.get('suite') or "sid"
url = URL % {"pkgname": pkg, "suite": suite}
AsyncHTTPClient().fetch(
url, partial(_pkg_done, name, strip_release, callback))
def _pkg_done(name, strip_release, callback, res):
if res.error:
raise res.error
data = json.loads(res.body.decode('utf-8'))
if not data.get('versions'):
logger.error('Debian package not found: %s', name)
callback(name, None)
return
r = data['versions'][0]
if strip_release:
version = r['version'].split("-")[0]
else:
version = r['version']
callback(name, version)

View file

@ -11,7 +11,7 @@ from tests.helper import ExternalVersionTestCase
reason="Travis-CI has issues connecting to the Arch website")
class ArchPKGTest(ExternalVersionTestCase):
def test_archpkg(self):
self.assertEqual(self.sync_get_version("ipw2100-fw", {"archpkg": None}), "1.3-7")
self.assertEqual(self.sync_get_version("ipw2100-fw", {"archpkg": None}), "1.3-8")
def test_archpkg_strip_release(self):
self.assertEqual(self.sync_get_version("ipw2100-fw", {"archpkg": None, "strip-release": 1}), "1.3")

16
tests/test_debianpkg.py Normal file
View file

@ -0,0 +1,16 @@
# MIT licensed
# Copyright (c) 2017 Felix Yan <felixonmars@archlinux.org>, et al.
import os
from tests.helper import ExternalVersionTestCase
class DebianPKGTest(ExternalVersionTestCase):
def test_debianpkg(self):
self.assertEqual(self.sync_get_version("sigrok-firmware-fx2lafw", {"debianpkg": None}), "0.1.3-1")
def test_debianpkg_strip_release(self):
self.assertEqual(self.sync_get_version("sigrok-firmware-fx2lafw", {"debianpkg": None, "strip-release": 1}), "0.1.3")
def test_debianpkg_suite(self):
self.assertEqual(self.sync_get_version("sigrok-firmware-fx2lafw", {"debianpkg": None, "suite": "jessie"}), "0.1.2-1")

View file

@ -10,7 +10,7 @@ from tests.helper import ExternalVersionTestCase
reason="requires pacman command")
class PacmanTest(ExternalVersionTestCase):
def test_pacman(self):
self.assertEqual(self.sync_get_version("ipw2100-fw", {"pacman": None}), "1.3-7")
self.assertEqual(self.sync_get_version("ipw2100-fw", {"pacman": None}), "1.3-8")
def test_pacman_strip_release(self):
self.assertEqual(self.sync_get_version("ipw2100-fw", {"pacman": None, "strip-release": 1}), "1.3")