diff --git a/nvchecker/__init__.py b/nvchecker/__init__.py index 471fec2..621fa57 100644 --- a/nvchecker/__init__.py +++ b/nvchecker/__init__.py @@ -1,4 +1,4 @@ # MIT licensed # Copyright (c) 2013-2021 lilydjwg , et al. -__version__ = '2.5' +__version__ = '2.6dev' diff --git a/nvchecker_source/regex.py b/nvchecker_source/regex.py index 48406e1..551f78d 100644 --- a/nvchecker_source/regex.py +++ b/nvchecker_source/regex.py @@ -17,6 +17,8 @@ async def get_version_impl(info): regex = re.compile(conf['regex']) except sre_constants.error as e: raise GetVersionError('bad regex', exc_info=e) + if regex.groups > 1: + raise GetVersionError('multi-group regex') encoding = conf.get('encoding', 'latin1') diff --git a/tests/test_regex.py b/tests/test_regex.py index 1b4c255..bd04014 100644 --- a/tests/test_regex.py +++ b/tests/test_regex.py @@ -51,6 +51,14 @@ async def test_missing(get_version, httpbin): "regex": "foobar", }) +async def test_multi_group(get_version, httpbin): + with pytest.raises(RuntimeError): + await get_version("example", { + "source": "regex", + "url": httpbin.url + "/base64/" + base64_encode("1.2"), + "regex": r"(\d+)\.(\d+)", + }) + async def test_regex_with_tokenBasic(get_version, httpbin): assert await get_version("example", { "source": "regex",