diff --git a/libcxx/utils/libcxx/test/dsl.py b/libcxx/utils/libcxx/test/dsl.py --- a/libcxx/utils/libcxx/test/dsl.py +++ b/libcxx/utils/libcxx/test/dsl.py @@ -201,6 +201,14 @@ _, _, exitCode, _ = _executeScriptInternal(test, script) return exitCode +@_memoizeExpensiveOperation(lambda c, s: (c.substitutions, c.environment, s)) +def runCommandGetVersion(config, command): + with _makeConfigTest(config) as test: + out, _, exitCode, _ = _executeScriptInternal(test, command) + if exitCode != 0: + return -1 + return int(re.search('[0-9]+', out).group()) + @_memoizeExpensiveOperation(lambda c, l: (c.substitutions, c.environment, l)) def hasAnyLocale(config, locales): """ diff --git a/libcxx/utils/libcxx/test/features.py b/libcxx/utils/libcxx/test/features.py --- a/libcxx/utils/libcxx/test/features.py +++ b/libcxx/utils/libcxx/test/features.py @@ -84,7 +84,7 @@ Feature(name='executor-has-no-bash', when=lambda cfg: runScriptExitCode(cfg, ['%{exec} bash -c \'bash --version\'']) != 0), Feature(name='has-clang-tidy', - when=lambda cfg: runScriptExitCode(cfg, ['clang-tidy --version']) == 0), + when=lambda cfg: runCommandGetVersion(cfg, ['clang-tidy --version']) >= 13), Feature(name='apple-clang', when=_isAppleClang), Feature(name=lambda cfg: 'apple-clang-{__clang_major__}'.format(**compilerMacros(cfg)), when=_isAppleClang),