diff options
| -rwxr-xr-x | release/update-manpages | 28 | ||||
| -rw-r--r-- | tests/test_update_manpages.py | 27 | ||||
| l--------- | tests/update_manpages.py | 1 |
3 files changed, 49 insertions, 7 deletions
diff --git a/release/update-manpages b/release/update-manpages index d619cf0b..739cedb1 100755 --- a/release/update-manpages +++ b/release/update-manpages | |||
| @@ -83,11 +83,6 @@ def main(argv): | |||
| 83 | with multiprocessing.Pool() as pool: | 83 | with multiprocessing.Pool() as pool: |
| 84 | pool.map(partial(worker, cwd=tempdir, check=True), cmdlist) | 84 | pool.map(partial(worker, cwd=tempdir, check=True), cmdlist) |
| 85 | 85 | ||
| 86 | regex = ( | ||
| 87 | (r'(It was generated by help2man) [0-9.]+', '\g<1>.'), | ||
| 88 | (r'^\.IP\n(.*:)\n', '.SS \g<1>\n'), | ||
| 89 | (r'^\.PP\nDescription', '.SH DETAILS'), | ||
| 90 | ) | ||
| 91 | for tmp_path in MANDIR.glob('*.1.tmp'): | 86 | for tmp_path in MANDIR.glob('*.1.tmp'): |
| 92 | path = tmp_path.parent / tmp_path.stem | 87 | path = tmp_path.parent / tmp_path.stem |
| 93 | old_data = path.read_text() if path.exists() else '' | 88 | old_data = path.read_text() if path.exists() else '' |
| @@ -95,8 +90,7 @@ def main(argv): | |||
| 95 | data = tmp_path.read_text() | 90 | data = tmp_path.read_text() |
| 96 | tmp_path.unlink() | 91 | tmp_path.unlink() |
| 97 | 92 | ||
| 98 | for pattern, replacement in regex: | 93 | data = replace_regex(data) |
| 99 | data = re.sub(pattern, replacement, data, flags=re.M) | ||
| 100 | 94 | ||
| 101 | # If the only thing that changed was the date, don't refresh. This avoids | 95 | # If the only thing that changed was the date, don't refresh. This avoids |
| 102 | # a lot of noise when only one file actually updates. | 96 | # a lot of noise when only one file actually updates. |
| @@ -106,5 +100,25 @@ def main(argv): | |||
| 106 | path.write_text(data) | 100 | path.write_text(data) |
| 107 | 101 | ||
| 108 | 102 | ||
| 103 | def replace_regex(data): | ||
| 104 | """Replace semantically null regexes in the data. | ||
| 105 | |||
| 106 | Args: | ||
| 107 | data: manpage text. | ||
| 108 | |||
| 109 | Returns: | ||
| 110 | Updated manpage text. | ||
| 111 | """ | ||
| 112 | regex = ( | ||
| 113 | (r'(It was generated by help2man) [0-9.]+', '\g<1>.'), | ||
| 114 | (r'^\033\[[0-9;]*m([^\033]*)\033\[m', '\g<1>'), | ||
| 115 | (r'^\.IP\n(.*:)\n', '.SS \g<1>\n'), | ||
| 116 | (r'^\.PP\nDescription', '.SH DETAILS'), | ||
| 117 | ) | ||
| 118 | for pattern, replacement in regex: | ||
| 119 | data = re.sub(pattern, replacement, data, flags=re.M) | ||
| 120 | return data | ||
| 121 | |||
| 122 | |||
| 109 | if __name__ == '__main__': | 123 | if __name__ == '__main__': |
| 110 | sys.exit(main(sys.argv[1:])) | 124 | sys.exit(main(sys.argv[1:])) |
diff --git a/tests/test_update_manpages.py b/tests/test_update_manpages.py new file mode 100644 index 00000000..f0ef72af --- /dev/null +++ b/tests/test_update_manpages.py | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | # Copyright 2022 The Android Open Source Project | ||
| 2 | # | ||
| 3 | # Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 4 | # you may not use this file except in compliance with the License. | ||
| 5 | # You may obtain a copy of the License at | ||
| 6 | # | ||
| 7 | # http://www.apache.org/licenses/LICENSE-2.0 | ||
| 8 | # | ||
| 9 | # Unless required by applicable law or agreed to in writing, software | ||
| 10 | # distributed under the License is distributed on an "AS IS" BASIS, | ||
| 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 12 | # See the License for the specific language governing permissions and | ||
| 13 | # limitations under the License. | ||
| 14 | |||
| 15 | """Unittests for the update_manpages module.""" | ||
| 16 | |||
| 17 | import unittest | ||
| 18 | import tests.update_manpages as um | ||
| 19 | |||
| 20 | |||
| 21 | class UpdateManpagesTest(unittest.TestCase): | ||
| 22 | """Tests the update-manpages code.""" | ||
| 23 | |||
| 24 | def test_replace_regex(self): | ||
| 25 | """Check that replace_regex works.""" | ||
| 26 | data = '\n\033[1mSummary\033[m\n' | ||
| 27 | self.assertEqual(um.replace_regex(data),'\nSummary\n') | ||
diff --git a/tests/update_manpages.py b/tests/update_manpages.py new file mode 120000 index 00000000..40bbdea7 --- /dev/null +++ b/tests/update_manpages.py | |||
| @@ -0,0 +1 @@ | |||
| update-manpages \ No newline at end of file | |||
