Hardcode the version of the tools used in the test feature script
instead of the tests. By changing the hard-coded location it's
easier to make the location flexible in the future.
Drive-by change
- The minimum required version for clang-query is now 15, which matches our future idea as outlined in the Dockerfile.
- The minimum required version for clang-tidy is now 16, which enables the new clang-tidy ADL plugin. This plugin is disabled for C++03 due to false positives when using noexcept, which is not an operator in C++03.
I think I would dumb down the whole patch to this. It does mean that only folks with exactly clang-tidy-15 will get those tests enabled, but it's already pretty much the status quo, and doing this avoids piping through the clang-tidy version across multiple layers like buildkite-pipeline.yml and CMake.
We should also do the same for clang-query in the same patch.
If we want to be more clever about finding clang-tidy (e.g. falling back on clang-tidy --version >= 15), we can do something similar to what we do with getStdFlag in params.py and basically do a linear search with various options.
Also, restricting the changes to this means that we avoid adding another dependency from the test suite onto CMake, which is good since we want to strive for the test suite being as freestanding as possible (within reason).