From 518783a2b101c5dd98054882c763dbe7dd5742c8 Mon Sep 17 00:00:00 2001 From: Will McGugan Date: Wed, 18 Jan 2023 14:51:50 +0000 Subject: [PATCH] added test --- src/textual/__init__.py | 1 + tests/test_version.py | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 tests/test_version.py diff --git a/src/textual/__init__.py b/src/textual/__init__.py index 30eb9c3e8..5f1db4820 100644 --- a/src/textual/__init__.py +++ b/src/textual/__init__.py @@ -16,6 +16,7 @@ LogCallable: TypeAlias = "Callable" def __getattr__(name: str) -> str: + """Lazily get the version from whatever API is available.""" if name == "__version__": try: from importlib.metadata import version diff --git a/tests/test_version.py b/tests/test_version.py new file mode 100644 index 000000000..dfb0a4b8f --- /dev/null +++ b/tests/test_version.py @@ -0,0 +1,41 @@ +import re + +# https://stackoverflow.com/questions/37972029/regex-to-match-pep440-compliant-version-strings +VERSION_PATTERN = r""" + v? + (?: + (?:(?P[0-9]+)!)? # epoch + (?P[0-9]+(?:\.[0-9]+)*) # release segment + (?P
                                          # pre-release
+            [-_\.]?
+            (?P(a|b|c|rc|alpha|beta|pre|preview))
+            [-_\.]?
+            (?P[0-9]+)?
+        )?
+        (?P                                         # post release
+            (?:-(?P[0-9]+))
+            |
+            (?:
+                [-_\.]?
+                (?Ppost|rev|r)
+                [-_\.]?
+                (?P[0-9]+)?
+            )
+        )?
+        (?P                                          # dev release
+            [-_\.]?
+            (?Pdev)
+            [-_\.]?
+            (?P[0-9]+)?
+        )?
+    )
+    (?:\+(?P[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