Files
textual/tests/test_version.py
Will McGugan 518783a2b1 added test
2023-01-18 14:51:50 +00:00

42 lines
1.2 KiB
Python

import re
# https://stackoverflow.com/questions/37972029/regex-to-match-pep440-compliant-version-strings
VERSION_PATTERN = r"""
v?
(?:
(?:(?P<epoch>[0-9]+)!)? # epoch
(?P<release>[0-9]+(?:\.[0-9]+)*) # release segment
(?P<pre> # pre-release
[-_\.]?
(?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
[-_\.]?
(?P<pre_n>[0-9]+)?
)?
(?P<post> # post release
(?:-(?P<post_n1>[0-9]+))
|
(?:
[-_\.]?
(?P<post_l>post|rev|r)
[-_\.]?
(?P<post_n2>[0-9]+)?
)
)?
(?P<dev> # dev release
[-_\.]?
(?P<dev_l>dev)
[-_\.]?
(?P<dev_n>[0-9]+)?
)?
)
(?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))? # local version
"""
def test_version():
import textual
version = textual.__version__
assert isinstance(version, str)
assert re.match(VERSION_PATTERN, version, re.VERBOSE) is not None