Sometimes the check-prefixes is followed by %s, and we want to keep a
white space before it.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
llvm/utils/update_test_prefix.py | ||
---|---|---|
21 | I checked it and find it didn't work. It seems \w in [] loses its function. git reset --hard c22dc71b120b066c0066b8517014149a001cc2b0^1 git show c22dc71b120b066c0066b8517014149a001cc2b0 --stat | grep "llvm/test" | cut -d " " -f 2 | xargs llvm/utils/update_test_prefix.py Check if the outputs are identical to the patch. |
llvm/utils/update_test_prefix.py | ||
---|---|---|
21 | The problem seems to have been a spurious space. I tried small unittests, like this: import re test = ['-check-prefixes=abc123', '-check-prefixes=abc123-def', '-check-prefixes=abc %s', """-check-prefixes=abc def""", '-check-prefixes=abc,def', '-check-prefixes=abc,def %s'] for t in test: print(t, re.sub('-?-check-prefixes=([\w-]+[\s]*)', '--check-prefix=\\1', t)) $ python test.py ('-check-prefixes=abc123', '--check-prefix=abc123') ('-check-prefixes=abc123-def', '--check-prefix=abc123-def') ('-check-prefixes=abc %s', '--check-prefix=abc %s') ('-check-prefixes=abc\n def', '--check-prefix=abc\n def') ('-check-prefixes=abc,def', '--check-prefix=abc,def') ('-check-prefixes=abc,def %s', '--check-prefix=abc,def %s') |
llvm/utils/update_test_prefix.py | ||
---|---|---|
21 | Ah, that's it. The unittest is awesome. But the last 2 test results are wrong. The expected results are: ('-check-prefixes=abc,def', '--check-prefixes=abc,def') ('-check-prefixes=abc,def %s', '--check-prefixes=abc,def %s') We can remove the es when there is only one prefix. You can add one more test: ('-check-prefixes=abc\n\n def', '--check-prefix=abc\n\n def') to see using + instead of * is also problematic. |
llvm/utils/update_test_prefix.py | ||
---|---|---|
21 | One more try: print(t, re.sub('-?-check-prefixes=([\w-]+)(\Z|[ \t\n])', '--check-prefix=\\1\\2', t)) ('-check-prefixes=abc123', '--check-prefix=abc123') ('-check-prefixes=abc123-def', '--check-prefix=abc123-def') ('-check-prefixes=abc %s', '--check-prefix=abc %s') ('-check-prefixes=abc\n def', '--check-prefix=abc\n def') ('-check-prefixes=abc,def', '-check-prefixes=abc,def') ('-check-prefixes=abc,def %s', '-check-prefixes=abc,def %s') |
llvm/utils/update_test_prefix.py | ||
---|---|---|
21 | oh, and (for the test you suggested) ('-check-prefixes=abc\n\n def', '--check-prefix=abc\n\n def') |
llvm/utils/update_test_prefix.py | ||
---|---|---|
21 | It looks good to me. Thanks Mircea! |
I checked it and find it didn't work. It seems \w in [] loses its function.
I also think the * after [\s] (you can use \s without []) is problematical for --check-prefixes=A,B. Besides, changing to + is still problematical for it may consume extera blank lines.
It's hard to modify regular expression correctly without lots of checks, I think you can use my previous patch as a test:
Check if the outputs are identical to the patch.