Mercurial > hgrepos > Python2 > PyMuPDF
comparison tests/test_release.py @ 39:a6bc019ac0b2 upstream
ADD: PyMuPDF v1.26.5: the original sdist.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 11 Oct 2025 11:19:58 +0200 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 2:b50eed0cc0ef | 39:a6bc019ac0b2 |
|---|---|
| 1 import pymupdf | |
| 2 | |
| 3 import os | |
| 4 import re | |
| 5 import sys | |
| 6 | |
| 7 | |
| 8 g_root_abs = os.path.normpath(f'{__file__}/../../') | |
| 9 | |
| 10 sys.path.insert(0, g_root_abs) | |
| 11 try: | |
| 12 import pipcl | |
| 13 import setup | |
| 14 finally: | |
| 15 del sys.path[0] | |
| 16 | |
| 17 g_root = pipcl.relpath(g_root_abs) | |
| 18 | |
| 19 | |
| 20 def _file_line(path, text, re_match, offset=+2): | |
| 21 ''' | |
| 22 Returns <file>:<line> for location of regex match. | |
| 23 | |
| 24 path: | |
| 25 filename. | |
| 26 text: | |
| 27 Contents of <filename>. | |
| 28 re_match: | |
| 29 A re.Match. | |
| 30 offset: | |
| 31 Added to line number of start of <re_match>. Default offset=2 is | |
| 32 because callers usually grep for leading newline, and line numbers are | |
| 33 generally 1-based. | |
| 34 ''' | |
| 35 text_before = text[:re_match.start()] | |
| 36 line = text_before.count('\n') + offset | |
| 37 return f'{path}:{line}' | |
| 38 | |
| 39 | |
| 40 def test_release_versions(): | |
| 41 ''' | |
| 42 PyMuPDF and default MuPDF must have same major.minor version. | |
| 43 ''' | |
| 44 version_p_tuple = [int(i) for i in setup.version_p.split('.')] | |
| 45 version_mupdf_tuple = [int(i) for i in setup.version_mupdf.split('.')] | |
| 46 assert version_p_tuple[:2] == version_mupdf_tuple[:2], \ | |
| 47 f'PyMuPDF and MuPDF major.minor versions do not match. {setup.version_p=} {setup.version_mupdf=}.' | |
| 48 | |
| 49 | |
| 50 def test_release_bug_template(): | |
| 51 ''' | |
| 52 Bug report template must list current PyMuPDF version. | |
| 53 ''' | |
| 54 p = f'{g_root}/.github/ISSUE_TEMPLATE/bug_report.yml' | |
| 55 expected = f'\n - {setup.version_p}\n' | |
| 56 with open(p) as f: | |
| 57 text = f.read() | |
| 58 assert expected in text, f'{p}:1: Failed to find line for {setup.version_p=}, {expected!r}.' | |
| 59 | |
| 60 | |
| 61 def test_release_changelog_version(): | |
| 62 ''' | |
| 63 In changes.txt, first item must match setup.version_p. | |
| 64 ''' | |
| 65 p = f'{g_root}/changes.txt' | |
| 66 with open(p) as f: | |
| 67 text = f.read() | |
| 68 m = re.search(f'\n[*][*]Changes in version ([0-9.]+)[*][*]\n', text) | |
| 69 assert m, f'Cannot parse {p}.' | |
| 70 assert m[1] == setup.version_p, \ | |
| 71 f'{_file_line(p, text, m)}: Cannot find {setup.version_p=} in first changelog item: {m[0].strip()!r}.' | |
| 72 | |
| 73 | |
| 74 def test_release_changelog_mupdf_version(): | |
| 75 ''' | |
| 76 In changes.txt, first mentioned of MuPDF must match setup.version_mupdf. | |
| 77 ''' | |
| 78 p = f'{g_root}/changes.txt' | |
| 79 with open(p) as f: | |
| 80 text = f.read() | |
| 81 m = re.search(f'\n[*] Use MuPDF-([0-9.]+)[.]\n', text) | |
| 82 assert m, f'Cannot parse {p}.' | |
| 83 assert m[1] == setup.version_mupdf, \ | |
| 84 f'{_file_line(p, text, m)}: First mentioned MuPDF version does not match {setup.version_mupdf=}: {m[0].strip()!r}.' |
