-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_version_parser.py
More file actions
50 lines (33 loc) · 1.79 KB
/
Copy pathtest_version_parser.py
File metadata and controls
50 lines (33 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"""Unit tests for version string parsing in version_parser.py."""
import sys
import unittest
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from version_parser import clean_output, extract_version
class TestVersionParser(unittest.TestCase):
"""Tests covering version extraction from varied tool output formats."""
def test_extract_version_simple(self) -> None:
self.assertEqual(extract_version("Python 3.12.4"), "3.12.4")
def test_extract_version_with_prefix_text(self) -> None:
self.assertEqual(extract_version("git version 2.46.0"), "2.46.0")
def test_extract_version_two_part_number(self) -> None:
self.assertEqual(extract_version("npm 10.8"), "10.8")
def test_extract_version_with_suffix(self) -> None:
self.assertEqual(extract_version("tool 1.2.3-beta"), "1.2.3-beta")
def test_extract_version_no_digits_returns_first_line(self) -> None:
self.assertEqual(extract_version("unknown build\nsecond line"), "unknown build")
def test_extract_version_empty_string_returns_none(self) -> None:
self.assertIsNone(extract_version(""))
def test_extract_version_none_input_returns_none(self) -> None:
self.assertIsNone(extract_version(None))
def test_extract_version_whitespace_only_returns_none(self) -> None:
self.assertIsNone(extract_version(" \n "))
def test_clean_output_combines_stdout_and_stderr(self) -> None:
combined = clean_output("out line", "err line")
self.assertIn("out line", combined)
self.assertIn("err line", combined)
def test_clean_output_handles_empty_streams(self) -> None:
self.assertEqual(clean_output("", ""), "")
self.assertEqual(clean_output(None, None), "")
if __name__ == "__main__":
unittest.main()