diff options
Diffstat (limited to 'Source/cmGetTestPropertyCommand.cxx')
-rw-r--r-- | Source/cmGetTestPropertyCommand.cxx | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/Source/cmGetTestPropertyCommand.cxx b/Source/cmGetTestPropertyCommand.cxx index 36446c9..103471b 100644 --- a/Source/cmGetTestPropertyCommand.cxx +++ b/Source/cmGetTestPropertyCommand.cxx @@ -4,21 +4,42 @@ #include "cmExecutionStatus.h" #include "cmMakefile.h" +#include "cmSetPropertyCommand.h" #include "cmTest.h" #include "cmValue.h" bool cmGetTestPropertyCommand(std::vector<std::string> const& args, cmExecutionStatus& status) { - if (args.size() < 3) { + std::vector<std::string>::size_type args_size = args.size(); + if (args_size != 3 && args_size != 5) { status.SetError("called with incorrect number of arguments"); return false; } + std::string test_directory; + bool test_directory_option_enabled = false; + + int var_arg_index = 2; + if (args[2] == "DIRECTORY" && args_size == 5) { + var_arg_index = 4; + test_directory_option_enabled = true; + test_directory = args[3]; + } + + cmMakefile* test_directory_makefile = &status.GetMakefile(); + bool file_scopes_handled = + SetPropertyCommand::HandleAndValidateTestDirectoryScopes( + status, test_directory_option_enabled, test_directory, + test_directory_makefile); + if (!file_scopes_handled) { + return false; + } + std::string const& testName = args[0]; - std::string const& var = args[2]; + std::string const& var = args[var_arg_index]; cmMakefile& mf = status.GetMakefile(); - cmTest* test = mf.GetTest(testName); + cmTest* test = test_directory_makefile->GetTest(testName); if (test) { cmValue prop; if (!args[1].empty()) { |