mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
ctest: Add CLI argument spell checking
Use Levenshtein distance to track when the user may have made a typo in an argument to `ctest`.
This commit is contained in:
+9
-1
@@ -2615,7 +2615,15 @@ int cmCTest::Run(std::vector<std::string> const& args)
|
||||
}
|
||||
}
|
||||
if (!matched && cmHasPrefix(arg, '-') && !isPresetArgument(arg)) {
|
||||
cmSystemTools::Error(cmStrCat("Unknown argument: ", arg));
|
||||
std::string error = cmStrCat("Unknown argument: ", arg);
|
||||
std::vector<CommandArgument> allArguments = arguments;
|
||||
cm::append(allArguments, presetArguments);
|
||||
std::string const suggestion =
|
||||
cmFindClosestCommandLineArgument(arg, allArguments);
|
||||
if (!suggestion.empty()) {
|
||||
error = cmStrCat(error, ". Did you mean: ", suggestion, '?');
|
||||
}
|
||||
cmSystemTools::Error(error);
|
||||
cmSystemTools::Error("Run 'ctest --help' for all supported options.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -951,6 +951,7 @@ endfunction()
|
||||
run_output_junit_invalid()
|
||||
|
||||
run_cmake_command(invalid-ctest-argument ${CMAKE_CTEST_COMMAND} --not-a-valid-ctest-argument)
|
||||
run_cmake_command(invalid-ctest-argument-did-you-mean ${CMAKE_CTEST_COMMAND} --parallell 2)
|
||||
|
||||
block()
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TimeoutDefault)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
1
|
||||
@@ -0,0 +1,2 @@
|
||||
CMake Error: Unknown argument: --parallell\. Did you mean: --parallel\?
|
||||
CMake Error: Run 'ctest --help' for all supported options\.
|
||||
Reference in New Issue
Block a user