steakhal created this revision. steakhal added reviewers: aaron.ballman, whisperity, LegalizeAdulthood, alexfh. Herald added subscribers: martong, rnkovacs, xazax.hun. Herald added a project: All. steakhal requested review of this revision. Herald added a project: clang-tools-extra. Herald added a subscriber: cfe-commits.
I and @whisperity spent some time debugging a LIT test case using the `-std=c++11-or-later` `check_clang_tidy.py` flag when the test had fixits. It turns out if the test wants to report a diagnostic into a header file AND into the test file as well, one needs to first copy the header somewhere under the build directory. It needs to be copied since `clang-tidy` sorts the reports into alphabetical order, thus to have a deterministic order relative to the diagnostic in the header AND the diagnostic in the test cpp file. There is more to this story. The `-std=c++11-or-later` turns out executes the test with multiple `-std=XX` version substitution and each execution will also have the `-fix` tidy parameter. This means that the freshly copied header file I stated in the previous paragraph gets fixed up and the very next tidy execution will fail miserably. Following @whisperity's advice, I'm leaving a reminder about such //shared// state in the related doc comment. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D125771 Files: clang-tools-extra/test/clang-tidy/check_clang_tidy.py Index: clang-tools-extra/test/clang-tidy/check_clang_tidy.py =================================================================== --- clang-tools-extra/test/clang-tidy/check_clang_tidy.py +++ clang-tools-extra/test/clang-tidy/check_clang_tidy.py @@ -19,11 +19,17 @@ [-assume-filename=<file-with-source-extension>] \ [-check-suffix=<comma-separated-file-check-suffixes>] \ [-check-suffixes=<comma-separated-file-check-suffixes>] \ + [-std=(c++11-or-later|c++17)] \ <source-file> <check-name> <temp-file> \ -- [optional clang-tidy arguments] Example: // RUN: %check_clang_tidy %s llvm-include-order %t -- -- -isystem %S/Inputs + +Notes: + -std=c++11-or-later: + This flag will cause multiple runs withing the same check_clang_tidy + execution. Make sure you don't have shared state across these runs. """ import argparse
Index: clang-tools-extra/test/clang-tidy/check_clang_tidy.py =================================================================== --- clang-tools-extra/test/clang-tidy/check_clang_tidy.py +++ clang-tools-extra/test/clang-tidy/check_clang_tidy.py @@ -19,11 +19,17 @@ [-assume-filename=<file-with-source-extension>] \ [-check-suffix=<comma-separated-file-check-suffixes>] \ [-check-suffixes=<comma-separated-file-check-suffixes>] \ + [-std=(c++11-or-later|c++17)] \ <source-file> <check-name> <temp-file> \ -- [optional clang-tidy arguments] Example: // RUN: %check_clang_tidy %s llvm-include-order %t -- -- -isystem %S/Inputs + +Notes: + -std=c++11-or-later: + This flag will cause multiple runs withing the same check_clang_tidy + execution. Make sure you don't have shared state across these runs. """ import argparse
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits