mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-05-12 09:16:52 +00:00
[rocm-libraries] ROCm/rocm-libraries#5880 (commit a6b6c05)
[CK][CK_TILE] Fix CTest parsing to handle all test number formats (#5880) ## Motivation Fix a bug in the smart-build --ctest-only filter that was incorrectly excluding tests with numbers less than 100. ## Technical Details The issue was caused by CTest formatting test numbers with variable spacing based on the number of digits: - "Test `#1`: name (3 spaces for tests 1-9)" - "Test `#79`: name (2 spaces for tests 10-99)" - "Test `#100`: name (1 space for tests 100+)" The previous code used `line.strip().startswith("Test #")` which only matched tests with a single space (i.e., test numbers >= 100). This caused tests like ck_tile_unit_sequence (Test #79) to be excluded from smart-build test selection, resulting in CTest failures when the binary wasn't built. Solution: Replace string matching with a regex pattern that handles all spacing variations: r'^\s*Test\s+#\d+:\s*(.+)$' ## Test Plan Tested with test numbers from 1 to 12345. ## Test Result - Before: 48 tests selected (only tests #100+) - After: 146 tests selected (all CTest-registered tests) ## Submission Checklist - [x ] Look over the contributing guidelines at https://github.com/ROCm/ROCm/blob/develop/CONTRIBUTING.md#pull-requests. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Illia Silin <98187287+illsilin@users.noreply.github.com>
This commit is contained in:
committed by
assistant-librarian[bot]
parent
2f98c7bbef
commit
e2470e837a
@@ -29,6 +29,7 @@ import sys
|
||||
import subprocess
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
|
||||
|
||||
def get_changed_files(ref1, ref2, project: str = None):
|
||||
@@ -110,12 +111,18 @@ def get_ctest_registered_tests(build_dir=None):
|
||||
return None
|
||||
|
||||
tests = set()
|
||||
# CTest formats test numbers with variable spacing:
|
||||
# Test #1: name (3 spaces for 1-9)
|
||||
# Test #10: name (2 spaces for 10-99)
|
||||
# Test #100: name (1 space for 100+)
|
||||
# Use regex to match all formats
|
||||
test_pattern = re.compile(r'^\s*Test\s+#\d+:\s*(.+)$')
|
||||
|
||||
for line in result.stdout.splitlines():
|
||||
if line.strip().startswith("Test #"):
|
||||
parts = line.split(":", 1)
|
||||
if len(parts) == 2:
|
||||
test_name = parts[1].strip()
|
||||
tests.add(test_name)
|
||||
match = test_pattern.match(line)
|
||||
if match:
|
||||
test_name = match.group(1).strip()
|
||||
tests.add(test_name)
|
||||
|
||||
return tests
|
||||
except (subprocess.TimeoutExpired, FileNotFoundError, Exception):
|
||||
|
||||
Reference in New Issue
Block a user