Anders Roxell | 65be768 | 2022-12-08 12:02:43 +0100 | [diff] [blame] | 1 | #!/usr/bin/env python3 |
| 2 | import sys |
| 3 | import re |
| 4 | |
| 5 | |
| 6 | def slugify(line): |
| 7 | non_ascii_pattern = r"[^A-Za-z0-9_-]+" |
| 8 | line = re.sub(r"\[\d{1,5}\]", "", line) |
| 9 | return re.sub( |
| 10 | r"_-", "_", re.sub(r"(^_|_$)", "", re.sub(non_ascii_pattern, "_", line)) |
| 11 | ) |
| 12 | |
| 13 | |
| 14 | tests = "" |
| 15 | for line in sys.stdin: |
| 16 | if "# selftests: " in line: |
| 17 | tests = slugify(line.replace("\n", "").split("selftests:")[1]) |
| 18 | elif re.search(r"^.*?not ok \d{1,5} ", line): |
Mark Brown | 51737d5 | 2023-01-17 10:45:16 +0000 | [diff] [blame] | 19 | match = re.match(r"^.*?not ok [0-9]+ (.*?)$", line) |
Anders Roxell | 65be768 | 2022-12-08 12:02:43 +0100 | [diff] [blame] | 20 | ascii_test_line = slugify(re.sub("# .*$", "", match.group(1))) |
Anders Roxell | 5511039 | 2023-01-03 09:06:27 +0100 | [diff] [blame] | 21 | output = f"{tests}_{ascii_test_line} fail" |
Anders Roxell | 65be768 | 2022-12-08 12:02:43 +0100 | [diff] [blame] | 22 | if f"selftests_{tests}" in output: |
| 23 | output = re.sub(r"^.*_selftests_", "", output) |
| 24 | print(f"{output}") |
| 25 | elif re.search(r"^.*?ok \d{1,5} ", line): |
Mark Brown | 51737d5 | 2023-01-17 10:45:16 +0000 | [diff] [blame] | 26 | match = re.match(r"^.*?ok [0-9]+ (.*?)$", line) |
Anders Roxell | 85a05ee | 2023-06-27 11:22:03 +0200 | [diff] [blame] | 27 | if "# skip" in match.group(1).lower(): |
| 28 | ascii_test_line = slugify(re.sub("# skip", "", match.group(1).lower())) |
Anders Roxell | 65be768 | 2022-12-08 12:02:43 +0100 | [diff] [blame] | 29 | output = f"{tests}_{ascii_test_line} skip" |
| 30 | else: |
| 31 | ascii_test_line = slugify(match.group(1)) |
| 32 | output = f"{tests}_{ascii_test_line} pass" |
| 33 | if f"selftests_{tests}" in output: |
| 34 | output = re.sub(r"^.*_selftests_", "", output) |
| 35 | print(f"{output}") |