diff --git a/Help/command/cmake_command.rst b/Help/command/cmake_language.rst
similarity index 69%
rename from Help/command/cmake_command.rst
rename to Help/command/cmake_language.rst
index 08b783232dcf9298a5eddfc41c95785aba8b64e6..21f51a0c77192732e4300f046f81bfe341ef36b4 100644
--- a/Help/command/cmake_command.rst
+++ b/Help/command/cmake_language.rst
@@ -1,5 +1,5 @@
-cmake_command
--------------
+cmake_language
+--------------
 
 Call meta-operations on CMake commands.
 
@@ -8,8 +8,8 @@ Synopsis
 
 .. parsed-literal::
 
-  cmake_command(`INVOKE`_ <command> [<args>...])
-  cmake_command(`EVAL`_ CODE <code>...)
+  cmake_language(`CALL`_ <command> [<args>...])
+  cmake_language(`EVAL`_ CODE <code>...)
 
 Introduction
 ^^^^^^^^^^^^
@@ -17,24 +17,24 @@ Introduction
 This command will call meta-operations on built-in CMake commands or
 those created via the :command:`macro` or :command:`function` commands.
 
-``cmake_command`` does not introduce a new variable or policy scope.
+``cmake_language`` does not introduce a new variable or policy scope.
 
-Invoking Commands
-^^^^^^^^^^^^^^^^^
+Calling Commands
+^^^^^^^^^^^^^^^^
 
-.. _INVOKE:
+.. _CALL:
 
 .. code-block:: cmake
 
-  cmake_command(INVOKE <command> [<args>...])
+  cmake_language(CALL <command> [<args>...])
 
-Invokes the named ``<command>`` with the given arguments (if any).
+Calls the named ``<command>`` with the given arguments (if any).
 For example, the code:
 
 .. code-block:: cmake
 
   set(message_command "message")
-  cmake_command(INVOKE ${message_command} STATUS "Hello World!")
+  cmake_language(CALL ${message_command} STATUS "Hello World!")
 
 is equivalent to
 
@@ -49,7 +49,7 @@ Evaluating Code
 
 .. code-block:: cmake
 
-  cmake_command(EVAL CODE <code>...)
+  cmake_language(EVAL CODE <code>...)
 
 Evaluates the ``<code>...`` as CMake code.
 
@@ -62,7 +62,7 @@ For example, the code:
   set(C TRUE)
   set(condition "(A AND B) OR C")
 
-  cmake_command(EVAL CODE "
+  cmake_language(EVAL CODE "
     if (${condition})
       message(STATUS TRUE)
     else()
diff --git a/Help/command/function.rst b/Help/command/function.rst
index 30938b3ee1e03691456adb6bac574932fed72da0..7a9b90754223db4aad0ac20b241a6f8cb4410f92 100644
--- a/Help/command/function.rst
+++ b/Help/command/function.rst
@@ -44,14 +44,14 @@ can be invoked through any of
   foo()
   Foo()
   FOO()
-  cmake_command(INVOKE foo)
+  cmake_language(CALL foo)
 
 and so on. However, it is strongly recommended to stay with the
 case chosen in the function definition. Typically functions use
 all-lowercase names.
 
-The :command:`cmake_command(INVOKE ...)` command can also be used to invoke the
-function.
+The :command:`cmake_language(CALL ...)` command can also be used to
+invoke the function.
 
 Arguments
 ^^^^^^^^^
diff --git a/Help/command/macro.rst b/Help/command/macro.rst
index 65159f43b2f4a0ec7105a473a8d144725c6bb3df..797a90d8f4a639b411aa330c5c24d61890f826c4 100644
--- a/Help/command/macro.rst
+++ b/Help/command/macro.rst
@@ -42,14 +42,14 @@ can be invoked through any of
   foo()
   Foo()
   FOO()
-  cmake_command(INVOKE foo)
+  cmake_language(CALL foo)
 
 and so on. However, it is strongly recommended to stay with the
 case chosen in the macro definition.  Typically macros use
 all-lowercase names.
 
-The :command:`cmake_command(INVOKE ...)` command can also be used to invoke the
-macro.
+The :command:`cmake_language(CALL ...)` command can also be used to
+invoke the macro.
 
 Arguments
 ^^^^^^^^^
diff --git a/Help/manual/cmake-commands.7.rst b/Help/manual/cmake-commands.7.rst
index 87743b4b75f4889a34c14bf534865178e268111a..0aa4f751778209c96f7cb29e2adf066b80436fff 100644
--- a/Help/manual/cmake-commands.7.rst
+++ b/Help/manual/cmake-commands.7.rst
@@ -16,8 +16,8 @@ These commands are always available.
    :maxdepth: 1
 
    /command/break
-   /command/cmake_command
    /command/cmake_host_system_information
+   /command/cmake_language
    /command/cmake_minimum_required
    /command/cmake_parse_arguments
    /command/cmake_policy
diff --git a/Help/release/dev/cmake_command-command.rst b/Help/release/dev/cmake_command-command.rst
deleted file mode 100644
index 6200ae20e3b85a62744069c4d3c79bbb0007eb0d..0000000000000000000000000000000000000000
--- a/Help/release/dev/cmake_command-command.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-cmake_command
--------------
-
-* The :command:`cmake_command()` command was added for meta-operations on
-  scripted or built-in commands, starting with a mode to ``INVOKE`` other
-  commands, and ``EVAL CODE`` to inplace evaluate a CMake script.
diff --git a/Help/release/dev/cmake_language-command.rst b/Help/release/dev/cmake_language-command.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5c00cea4428f51688265ab106898703cc508f534
--- /dev/null
+++ b/Help/release/dev/cmake_language-command.rst
@@ -0,0 +1,6 @@
+cmake_language-command
+----------------------
+
+* The :command:`cmake_language()` command was added for meta-operations on
+  scripted or built-in commands, starting with a mode to ``CALL`` other
+  commands, and ``EVAL CODE`` to inplace evaluate a CMake script.
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
index 6d585eed7d00722c8809d7927bc9c10070e1db1f..22d8032e2a98c2104029f89e9fe2c712a0bf1ddc 100644
--- a/Source/CMakeLists.txt
+++ b/Source/CMakeLists.txt
@@ -488,10 +488,10 @@ set(SRCS
   cmBuildCommand.h
   cmBuildNameCommand.cxx
   cmBuildNameCommand.h
-  cmCMakeCommand.cxx
-  cmCMakeCommand.h
   cmCMakeHostSystemInformationCommand.cxx
   cmCMakeHostSystemInformationCommand.h
+  cmCMakeLanguageCommand.cxx
+  cmCMakeLanguageCommand.h
   cmCMakeMinimumRequired.cxx
   cmCMakeMinimumRequired.h
   cmCMakePolicyCommand.cxx
diff --git a/Source/cmCMakeCommand.cxx b/Source/cmCMakeLanguageCommand.cxx
similarity index 89%
rename from Source/cmCMakeCommand.cxx
rename to Source/cmCMakeLanguageCommand.cxx
index 23bc0eac9a3d5b2bc81d0d2e5fc7e8417450dd9f..66857be450fb3860973910b38993a896e7c8efbc 100644
--- a/Source/cmCMakeCommand.cxx
+++ b/Source/cmCMakeLanguageCommand.cxx
@@ -1,6 +1,6 @@
 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
    file Copyright.txt or https://cmake.org/licensing for details.  */
-#include "cmCMakeCommand.h"
+#include "cmCMakeLanguageCommand.h"
 
 #include <algorithm>
 #include <cstddef>
@@ -13,8 +13,8 @@
 #include "cmRange.h"
 #include "cmStringAlgorithms.h"
 
-bool cmCMakeCommand(std::vector<cmListFileArgument> const& args,
-                    cmExecutionStatus& status)
+bool cmCMakeLanguageCommand(std::vector<cmListFileArgument> const& args,
+                            cmExecutionStatus& status)
 {
   if (args.empty()) {
     status.SetError("called with incorrect number of arguments");
@@ -36,7 +36,7 @@ bool cmCMakeCommand(std::vector<cmListFileArgument> const& args,
     return false;
   }
 
-  if (dispatchExpandedArgs[0] == "INVOKE") {
+  if (dispatchExpandedArgs[0] == "CALL") {
     if ((args.size() == 1 && dispatchExpandedArgs.size() != 2) ||
         dispatchExpandedArgs.size() > 2) {
       status.SetError("called with incorrect number of arguments");
@@ -44,7 +44,7 @@ bool cmCMakeCommand(std::vector<cmListFileArgument> const& args,
     }
 
     // First argument is the name of the function to call
-    std::string invokeCommand;
+    std::string callCommand;
     size_t startArg;
     if (dispatchExpandedArgs.size() == 1) {
       std::vector<std::string> functionExpandedArg;
@@ -57,15 +57,15 @@ bool cmCMakeCommand(std::vector<cmListFileArgument> const& args,
         return false;
       }
 
-      invokeCommand = functionExpandedArg[0];
+      callCommand = functionExpandedArg[0];
       startArg = 2;
     } else {
-      invokeCommand = dispatchExpandedArgs[1];
+      callCommand = dispatchExpandedArgs[1];
       startArg = 1;
     }
 
     cmListFileFunction func;
-    func.Name = invokeCommand;
+    func.Name = callCommand;
     func.Line = context.Line;
 
     // The rest of the arguments are passed to the function call above
diff --git a/Source/cmCMakeCommand.h b/Source/cmCMakeLanguageCommand.h
similarity index 63%
rename from Source/cmCMakeCommand.h
rename to Source/cmCMakeLanguageCommand.h
index 7dbecff9ee2d86efae21181ff6aa9afc9cfcc192..73065156b024e25c8034994a62644a5ff3760b93 100644
--- a/Source/cmCMakeCommand.h
+++ b/Source/cmCMakeLanguageCommand.h
@@ -1,7 +1,7 @@
 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
    file Copyright.txt or https://cmake.org/licensing for details.  */
-#ifndef cmCMakeCommand_h
-#define cmCMakeCommand_h
+#ifndef cmCMakeLanguageCommand_h
+#define cmCMakeLanguageCommand_h
 
 #include "cmConfigure.h" // IWYU pragma: keep
 
@@ -14,7 +14,7 @@ struct cmListFileArgument;
  * \brief Calls a scripted or build-in command
  *
  */
-bool cmCMakeCommand(std::vector<cmListFileArgument> const& args,
-                    cmExecutionStatus& status);
+bool cmCMakeLanguageCommand(std::vector<cmListFileArgument> const& args,
+                            cmExecutionStatus& status);
 
 #endif
diff --git a/Source/cmCommands.cxx b/Source/cmCommands.cxx
index 28b426732c925b3a84a45bc578052db07baec880..c94f128869bc33bf28e42426ef0b0f0f80863cb6 100644
--- a/Source/cmCommands.cxx
+++ b/Source/cmCommands.cxx
@@ -91,8 +91,8 @@
 #  include "cmAddLinkOptionsCommand.h"
 #  include "cmAuxSourceDirectoryCommand.h"
 #  include "cmBuildNameCommand.h"
-#  include "cmCMakeCommand.h"
 #  include "cmCMakeHostSystemInformationCommand.h"
+#  include "cmCMakeLanguageCommand.h"
 #  include "cmExportCommand.h"
 #  include "cmExportLibraryDependenciesCommand.h"
 #  include "cmFLTKWrapUICommand.h"
@@ -197,9 +197,9 @@ void GetScriptingCommands(cmState* state)
     "match the opening WHILE command.");
 
 #if !defined(CMAKE_BOOTSTRAP)
-  state->AddBuiltinCommand("cmake_command", cmCMakeCommand);
   state->AddBuiltinCommand("cmake_host_system_information",
                            cmCMakeHostSystemInformationCommand);
+  state->AddBuiltinCommand("cmake_language", cmCMakeLanguageCommand);
   state->AddBuiltinCommand("load_cache", cmLoadCacheCommand);
   state->AddBuiltinCommand("remove", cmRemoveCommand);
   state->AddBuiltinCommand("variable_watch", cmVariableWatchCommand);
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 230f1684802f7362a43076eb7404216868ab4820..0f94e4e007c44ee23fa8f4aaa737db3adf6e8110 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -281,6 +281,7 @@ if(NOT CMake_TEST_EXTERNAL_CMAKE)
 endif()
 add_RunCMake_test(execute_process)
 add_RunCMake_test(export)
+add_RunCMake_test(cmake_language)
 add_RunCMake_test(cmake_minimum_required)
 add_RunCMake_test(cmake_parse_arguments)
 add_RunCMake_test(continue)
@@ -676,5 +677,3 @@ add_RunCMake_test("CTestCommandExpandLists")
 
 add_RunCMake_test(PrecompileHeaders -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID})
 add_RunCMake_test("UnityBuild")
-
-add_RunCMake_test(cmake_command)
diff --git a/Tests/RunCMake/cmake_command/RunCMakeTest.cmake b/Tests/RunCMake/cmake_command/RunCMakeTest.cmake
deleted file mode 100644
index a6b2efe7cbe435a0049705822b50e96f61d9b73b..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/RunCMakeTest.cmake
+++ /dev/null
@@ -1,23 +0,0 @@
-include(RunCMake)
-
-run_cmake(cmake_command_no_parameters)
-run_cmake(cmake_command_unknown_meta_operation)
-run_cmake(cmake_command_invoke_double_evaluation)
-run_cmake(cmake_command_invoke_expanded_command)
-run_cmake(cmake_command_invoke_expanded_command_and_arguments)
-run_cmake(cmake_command_invoke_expanded_command_with_explicit_argument)
-run_cmake(cmake_command_invoke_expand_command_name)
-run_cmake(cmake_command_invoke_expand_function_name)
-run_cmake(cmake_command_invoke_message)
-run_cmake(cmake_command_invoke_message_fatal_error)
-run_cmake(cmake_command_invoke_no_parameters)
-run_cmake(cmake_command_invoke_preserve_arguments)
-run_cmake(cmake_command_invoke_unknown_function)
-run_cmake(cmake_command_eval_expand_command_name)
-run_cmake(cmake_command_eval_expanded_command_and_arguments)
-run_cmake(cmake_command_eval_extra_parameters_between_eval_and_code)
-run_cmake(cmake_command_eval_message)
-run_cmake(cmake_command_eval_message_fatal_error)
-run_cmake(cmake_command_eval_no_code)
-run_cmake(cmake_command_eval_no_parameters)
-run_cmake(cmake_command_eval_variable_outside_message)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_expand_command_name.cmake b/Tests/RunCMake/cmake_command/cmake_command_eval_expand_command_name.cmake
deleted file mode 100644
index 4cea3930b207ecc4295640258d0e87474c2fb077..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_expand_command_name.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-set (my_eval "EVAL")
-cmake_command (${my_eval} CODE message("OK!"))
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_extra_parameters_between_eval_and_code-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_eval_extra_parameters_between_eval_and_code-stderr.txt
deleted file mode 100644
index 13c114ed884ea5af6d1465ac41789e42cf60f0f3..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_extra_parameters_between_eval_and_code-stderr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-CMake Error at cmake_command_eval_extra_parameters_between_eval_and_code.cmake:1 \(cmake_command\):
-  cmake_command called with unsupported arguments between EVAL and CODE
-  arguments
-Call Stack \(most recent call first\):
-  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_extra_parameters_between_eval_and_code.cmake b/Tests/RunCMake/cmake_command/cmake_command_eval_extra_parameters_between_eval_and_code.cmake
deleted file mode 100644
index 0927631f8d7711c89670944e563d7bc6f657471a..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_extra_parameters_between_eval_and_code.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(EVAL BAD CODE "message(BAD CODE)")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_message.cmake b/Tests/RunCMake/cmake_command/cmake_command_eval_message.cmake
deleted file mode 100644
index 9ef5e25daf550a62352a546af0d6f4798007eea1..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_message.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(EVAL CODE message(WORKS!))
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_message_fatal_error-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_eval_message_fatal_error-stderr.txt
deleted file mode 100644
index 6a8a124592892cce15272fbac23fc8f379008896..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_message_fatal_error-stderr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-CMake Error at cmake_command_eval_message_fatal_error.cmake:1:EVAL:2 \(message\):
-  error!
-Call Stack \(most recent call first\):
-  cmake_command_eval_message_fatal_error.cmake:1 \(cmake_command\)
-  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_no_code-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_eval_no_code-stderr.txt
deleted file mode 100644
index ee53312ecf35ce5753b7f9ede88f2e2a66df2666..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_no_code-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-CMake Error at cmake_command_eval_no_code.cmake:1 \(cmake_command\):
-  cmake_command called without CODE argument
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_no_code.cmake b/Tests/RunCMake/cmake_command/cmake_command_eval_no_code.cmake
deleted file mode 100644
index 22e166753d222b79eef864cacda1e3a8d463819b..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_no_code.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(EVAL message "too many parameters")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_no_parameters-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_eval_no_parameters-stderr.txt
deleted file mode 100644
index e9fc317e595bf645ea525dc0691df11bca491fa5..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_no_parameters-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-CMake Error at cmake_command_eval_no_parameters.cmake:1 \(cmake_command\):
-  cmake_command called with incorrect number of arguments
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_no_parameters.cmake b/Tests/RunCMake/cmake_command/cmake_command_eval_no_parameters.cmake
deleted file mode 100644
index a5ba2c7d982a1740f80f1d75aa179505cf6d2fe4..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_no_parameters.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(EVAL)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_variable_outside_message.cmake b/Tests/RunCMake/cmake_command/cmake_command_eval_variable_outside_message.cmake
deleted file mode 100644
index b7a06a518b643fa63f4287420d721ce373fcb4af..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_variable_outside_message.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-cmake_command(EVAL CODE "set(phrase \"WORKS!\")")
-message(${phrase})
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_double_evaluation.cmake b/Tests/RunCMake/cmake_command/cmake_command_invoke_double_evaluation.cmake
deleted file mode 100644
index 10970fc2298348313ff392521f72d97af87c86aa..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_double_evaluation.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-set(var [[${foo}]])
-cmake_command(INVOKE cmake_command INVOKE message "var='${var}'")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expand_command_name.cmake b/Tests/RunCMake/cmake_command/cmake_command_invoke_expand_command_name.cmake
deleted file mode 100644
index d59afe4d629537d345083091ba9b6dd598613892..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_expand_command_name.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-set (my_invoke "INVOKE")
-cmake_command (${my_invoke} message "OK!")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_and_arguments-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_and_arguments-stderr.txt
deleted file mode 100644
index 6d0e241b37358145f6dddf8ecdd8e507a4f6681e..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_and_arguments-stderr.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-CMake Error at cmake_command_invoke_expanded_command_and_arguments.cmake:2 \(cmake_command\):
-  cmake_command called with incorrect number of arguments
-Call Stack \(most recent call first\):
-  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_and_arguments.cmake b/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_and_arguments.cmake
deleted file mode 100644
index 6bfa3a7245e45e502c64f518fa5ccb086ee4930e..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_and_arguments.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-set(invoke_message INVOKE message a b)
-cmake_command(${invoke_message})
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_with_explicit_argument.cmake b/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_with_explicit_argument.cmake
deleted file mode 100644
index eb0411f5a5a4c560b39799bd685602ceac13fc69..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_with_explicit_argument.cmake
+++ /dev/null
@@ -1,2 +0,0 @@
-set (cmd INVOKE message)
-cmake_command (${cmd} "OK!")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_message.cmake b/Tests/RunCMake/cmake_command/cmake_command_invoke_message.cmake
deleted file mode 100644
index 336d78a835f91454f1e94f66505d1e278b56ef28..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_message.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(INVOKE message WORKS!)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_message_fatal_error-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_invoke_message_fatal_error-stderr.txt
deleted file mode 100644
index 2c9dab5565c7104f888861720ad104fa58e9d3e1..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_message_fatal_error-stderr.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-CMake Error at cmake_command_invoke_message_fatal_error.cmake:1 \(message\):
-  error!
-Call Stack \(most recent call first\):
-  cmake_command_invoke_message_fatal_error.cmake:1 \(cmake_command\)
-  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_message_fatal_error.cmake b/Tests/RunCMake/cmake_command/cmake_command_invoke_message_fatal_error.cmake
deleted file mode 100644
index 6b427647b8857b3a25fcb4528b7d07c7da9f9870..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_message_fatal_error.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(INVOKE message FATAL_ERROR error!)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_no_parameters-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_invoke_no_parameters-stderr.txt
deleted file mode 100644
index 7741b4171354c5afe5ea414dd40aa165e3904dfc..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_no_parameters-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-CMake Error at cmake_command_invoke_no_parameters.cmake:1 \(cmake_command\):
-  cmake_command called with incorrect number of arguments
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_no_parameters.cmake b/Tests/RunCMake/cmake_command/cmake_command_invoke_no_parameters.cmake
deleted file mode 100644
index b9c5e14c576e2fe18cbfaf818e5e4a394d796e9f..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_no_parameters.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(INVOKE)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_unknown_function-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_invoke_unknown_function-stderr.txt
deleted file mode 100644
index 50a81a3c0bc499a68b360a480742bc8f144cee27..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_unknown_function-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-CMake Error at cmake_command_invoke_unknown_function.cmake:1 \(unknown\):
-  Unknown CMake command "unknown".
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_unknown_function.cmake b/Tests/RunCMake/cmake_command/cmake_command_invoke_unknown_function.cmake
deleted file mode 100644
index f19a04b3ab8c738c6f65b73f544e53718f33ef77..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_unknown_function.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(INVOKE unknown)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_no_parameters-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_no_parameters-stderr.txt
deleted file mode 100644
index 772b6047552fd0cad01469866e14781cf3935199..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_no_parameters-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-CMake Error at cmake_command_no_parameters.cmake:1 \(cmake_command\):
-  cmake_command called with incorrect number of arguments
diff --git a/Tests/RunCMake/cmake_command/cmake_command_no_parameters.cmake b/Tests/RunCMake/cmake_command/cmake_command_no_parameters.cmake
deleted file mode 100644
index b9c5e14c576e2fe18cbfaf818e5e4a394d796e9f..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_no_parameters.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(INVOKE)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_unknown_meta_operation-stderr.txt b/Tests/RunCMake/cmake_command/cmake_command_unknown_meta_operation-stderr.txt
deleted file mode 100644
index 7b9b9153ad39160251ce1324eb5032c762e735f2..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_unknown_meta_operation-stderr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-CMake Error at cmake_command_unknown_meta_operation.cmake:1 \(cmake_command\):
-  cmake_command called with unknown meta-operation
diff --git a/Tests/RunCMake/cmake_command/cmake_command_unknown_meta_operation.cmake b/Tests/RunCMake/cmake_command/cmake_command_unknown_meta_operation.cmake
deleted file mode 100644
index f7c77e5e08f8bd377b2af139f399f70150579a56..0000000000000000000000000000000000000000
--- a/Tests/RunCMake/cmake_command/cmake_command_unknown_meta_operation.cmake
+++ /dev/null
@@ -1 +0,0 @@
-cmake_command(UNKNOWN)
diff --git a/Tests/RunCMake/cmake_command/CMakeLists.txt b/Tests/RunCMake/cmake_language/CMakeLists.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/CMakeLists.txt
rename to Tests/RunCMake/cmake_language/CMakeLists.txt
diff --git a/Tests/RunCMake/cmake_language/RunCMakeTest.cmake b/Tests/RunCMake/cmake_language/RunCMakeTest.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..c556e42012e3d6f87c4d143dda3ba316a807d928
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/RunCMakeTest.cmake
@@ -0,0 +1,23 @@
+include(RunCMake)
+
+run_cmake(no_parameters)
+run_cmake(unknown_meta_operation)
+run_cmake(call_double_evaluation)
+run_cmake(call_expanded_command)
+run_cmake(call_expanded_command_and_arguments)
+run_cmake(call_expanded_command_with_explicit_argument)
+run_cmake(call_expand_command_name)
+run_cmake(call_expand_function_name)
+run_cmake(call_message)
+run_cmake(call_message_fatal_error)
+run_cmake(call_no_parameters)
+run_cmake(call_preserve_arguments)
+run_cmake(call_unknown_function)
+run_cmake(eval_expand_command_name)
+run_cmake(eval_expanded_command_and_arguments)
+run_cmake(eval_extra_parameters_between_eval_and_code)
+run_cmake(eval_message)
+run_cmake(eval_message_fatal_error)
+run_cmake(eval_no_code)
+run_cmake(eval_no_parameters)
+run_cmake(eval_variable_outside_message)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_double_evaluation-stderr.txt b/Tests/RunCMake/cmake_language/call_double_evaluation-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_double_evaluation-stderr.txt
rename to Tests/RunCMake/cmake_language/call_double_evaluation-stderr.txt
diff --git a/Tests/RunCMake/cmake_language/call_double_evaluation.cmake b/Tests/RunCMake/cmake_language/call_double_evaluation.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..cf8fc914c0a6271a8ee5ea1b4e5ddb62ae580ebb
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_double_evaluation.cmake
@@ -0,0 +1,2 @@
+set(var [[${foo}]])
+cmake_language(CALL cmake_language CALL message "var='${var}'")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_expand_command_name-stderr.txt b/Tests/RunCMake/cmake_language/call_expand_command_name-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_expand_command_name-stderr.txt
rename to Tests/RunCMake/cmake_language/call_expand_command_name-stderr.txt
diff --git a/Tests/RunCMake/cmake_language/call_expand_command_name.cmake b/Tests/RunCMake/cmake_language/call_expand_command_name.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..e03bb1fd27ccda547ddd67daa352c6795759384d
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_expand_command_name.cmake
@@ -0,0 +1,2 @@
+set (my_call "CALL")
+cmake_language (${my_call} message "OK!")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_extra_parameters_between_eval_and_code-result.txt b/Tests/RunCMake/cmake_language/call_expand_function_name-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_extra_parameters_between_eval_and_code-result.txt
rename to Tests/RunCMake/cmake_language/call_expand_function_name-stderr.txt
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expand_function_name.cmake b/Tests/RunCMake/cmake_language/call_expand_function_name.cmake
similarity index 70%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_expand_function_name.cmake
rename to Tests/RunCMake/cmake_language/call_expand_function_name.cmake
index 923ddaaa94db23e7cf7e5eac39ded188a5a4741d..565a7df40627d76be0b8752e24a6fe2242bb6d91 100644
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_expand_function_name.cmake
+++ b/Tests/RunCMake/cmake_language/call_expand_function_name.cmake
@@ -8,4 +8,4 @@ endfunction()
 
 set(function_version 1)
 
-cmake_command(INVOKE some_function_${function_version})
+cmake_language(CALL some_function_${function_version})
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_expanded_command_and_arguments-stderr.txt b/Tests/RunCMake/cmake_language/call_expanded_command-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_expanded_command_and_arguments-stderr.txt
rename to Tests/RunCMake/cmake_language/call_expanded_command-stderr.txt
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command.cmake b/Tests/RunCMake/cmake_language/call_expanded_command.cmake
similarity index 50%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command.cmake
rename to Tests/RunCMake/cmake_language/call_expanded_command.cmake
index bca7d2f91f0e09a2facd5f46a598fc34dfd24b3e..e76e61231926b5bc9afbdc85f217115a0804e70b 100644
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command.cmake
+++ b/Tests/RunCMake/cmake_language/call_expanded_command.cmake
@@ -2,5 +2,5 @@ function (itsok)
   message(OK!)
 endfunction()
 
-set (cmd INVOKE itsok)
-cmake_command (${cmd})
+set (cmd CALL itsok)
+cmake_language (${cmd})
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_message_fatal_error-result.txt b/Tests/RunCMake/cmake_language/call_expanded_command_and_arguments-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_message_fatal_error-result.txt
rename to Tests/RunCMake/cmake_language/call_expanded_command_and_arguments-result.txt
diff --git a/Tests/RunCMake/cmake_language/call_expanded_command_and_arguments-stderr.txt b/Tests/RunCMake/cmake_language/call_expanded_command_and_arguments-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e87e9bc272faebb4b61528090512372f97466d0a
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_expanded_command_and_arguments-stderr.txt
@@ -0,0 +1,4 @@
+CMake Error at call_expanded_command_and_arguments.cmake:2 \(cmake_language\):
+  cmake_language called with incorrect number of arguments
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/cmake_language/call_expanded_command_and_arguments.cmake b/Tests/RunCMake/cmake_language/call_expanded_command_and_arguments.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..4ce6b34dea736fd6e37a45c0bb127f08df65914a
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_expanded_command_and_arguments.cmake
@@ -0,0 +1,2 @@
+set(call_message CALL message a b)
+cmake_language(${call_message})
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expand_command_name-stderr.txt b/Tests/RunCMake/cmake_language/call_expanded_command_with_explicit_argument-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_expand_command_name-stderr.txt
rename to Tests/RunCMake/cmake_language/call_expanded_command_with_explicit_argument-stderr.txt
diff --git a/Tests/RunCMake/cmake_language/call_expanded_command_with_explicit_argument.cmake b/Tests/RunCMake/cmake_language/call_expanded_command_with_explicit_argument.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..056340005564f757df3c4c3010ad87d24cb52edd
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_expanded_command_with_explicit_argument.cmake
@@ -0,0 +1,2 @@
+set (cmd CALL message)
+cmake_language (${cmd} "OK!")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_message-stderr.txt b/Tests/RunCMake/cmake_language/call_message-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_message-stderr.txt
rename to Tests/RunCMake/cmake_language/call_message-stderr.txt
diff --git a/Tests/RunCMake/cmake_language/call_message.cmake b/Tests/RunCMake/cmake_language/call_message.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..31aefdf2101d94ebfcf8a5d4d9a6d5892a87aad7
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_message.cmake
@@ -0,0 +1 @@
+cmake_language(CALL message WORKS!)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_no_code-result.txt b/Tests/RunCMake/cmake_language/call_message_fatal_error-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_no_code-result.txt
rename to Tests/RunCMake/cmake_language/call_message_fatal_error-result.txt
diff --git a/Tests/RunCMake/cmake_language/call_message_fatal_error-stderr.txt b/Tests/RunCMake/cmake_language/call_message_fatal_error-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..83eb3d80af1de274da075db896265417908ab1de
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_message_fatal_error-stderr.txt
@@ -0,0 +1,5 @@
+CMake Error at call_message_fatal_error.cmake:1 \(message\):
+  error!
+Call Stack \(most recent call first\):
+  call_message_fatal_error.cmake:1 \(cmake_language\)
+  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/cmake_language/call_message_fatal_error.cmake b/Tests/RunCMake/cmake_language/call_message_fatal_error.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..935b43794f7369db0cf49ddc2d6b1d7f314e3bd2
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_message_fatal_error.cmake
@@ -0,0 +1 @@
+cmake_language(CALL message FATAL_ERROR error!)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_no_parameters-result.txt b/Tests/RunCMake/cmake_language/call_no_parameters-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_no_parameters-result.txt
rename to Tests/RunCMake/cmake_language/call_no_parameters-result.txt
diff --git a/Tests/RunCMake/cmake_language/call_no_parameters-stderr.txt b/Tests/RunCMake/cmake_language/call_no_parameters-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9e2c08fd7f40962ab581a7f712622293d4828a2a
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_no_parameters-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error at call_no_parameters.cmake:1 \(cmake_language\):
+  cmake_language called with incorrect number of arguments
diff --git a/Tests/RunCMake/cmake_language/call_no_parameters.cmake b/Tests/RunCMake/cmake_language/call_no_parameters.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..8353e08da740b79e37d801d0e9ec441824dc1152
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_no_parameters.cmake
@@ -0,0 +1 @@
+cmake_language(CALL)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_preserve_arguments-stderr.txt b/Tests/RunCMake/cmake_language/call_preserve_arguments-stderr.txt
similarity index 57%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_preserve_arguments-stderr.txt
rename to Tests/RunCMake/cmake_language/call_preserve_arguments-stderr.txt
index 4670e60b0c916d18e05005bec02937cc6869d9c3..8ec5483cd6a50db6562d47207b99a175f4951f09 100644
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_preserve_arguments-stderr.txt
+++ b/Tests/RunCMake/cmake_language/call_preserve_arguments-stderr.txt
@@ -1,6 +1,6 @@
 foo\(...\)
 \[a;b\]
 \[c;d\]
-cmake_command\(INVOKE foo ...\)
+cmake_language\(CALL foo ...\)
 \[a;b\]
 \[c;d\]
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_preserve_arguments.cmake b/Tests/RunCMake/cmake_language/call_preserve_arguments.cmake
similarity index 69%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_preserve_arguments.cmake
rename to Tests/RunCMake/cmake_language/call_preserve_arguments.cmake
index 53ac2e60e79615e5804fa47ddabb29eb4c9f2ce5..bfef0fda1bd2cd125a32738fdc33c3b4904fd72f 100644
--- a/Tests/RunCMake/cmake_command/cmake_command_invoke_preserve_arguments.cmake
+++ b/Tests/RunCMake/cmake_language/call_preserve_arguments.cmake
@@ -8,5 +8,5 @@ endfunction()
 message("foo(...)")
 foo("a;b" "c;d")
 
-message("cmake_command(INVOKE foo ...)")
-cmake_command(INVOKE foo "a;b" "c;d")
+message("cmake_language(CALL foo ...)")
+cmake_language(CALL foo "a;b" "c;d")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expand_function_name-stderr.txt b/Tests/RunCMake/cmake_language/call_unknown_function-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_expand_function_name-stderr.txt
rename to Tests/RunCMake/cmake_language/call_unknown_function-result.txt
diff --git a/Tests/RunCMake/cmake_language/call_unknown_function-stderr.txt b/Tests/RunCMake/cmake_language/call_unknown_function-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d09e708dedc53ab9ec383adf16462ee1e1d1058a
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_unknown_function-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error at call_unknown_function.cmake:1 \(unknown\):
+  Unknown CMake command "unknown".
diff --git a/Tests/RunCMake/cmake_language/call_unknown_function.cmake b/Tests/RunCMake/cmake_language/call_unknown_function.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..efd6bafe9b8a856efe377cc9d0fa1091d510ecf1
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/call_unknown_function.cmake
@@ -0,0 +1 @@
+cmake_language(CALL unknown)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command-stderr.txt b/Tests/RunCMake/cmake_language/eval_expand_command_name-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command-stderr.txt
rename to Tests/RunCMake/cmake_language/eval_expand_command_name-stderr.txt
diff --git a/Tests/RunCMake/cmake_language/eval_expand_command_name.cmake b/Tests/RunCMake/cmake_language/eval_expand_command_name.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..2397232c1c7f5d36655d8484f320527beb44cc4f
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_expand_command_name.cmake
@@ -0,0 +1,2 @@
+set (my_eval "EVAL")
+cmake_language (${my_eval} CODE message("OK!"))
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_with_explicit_argument-stderr.txt b/Tests/RunCMake/cmake_language/eval_expanded_command_and_arguments-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_with_explicit_argument-stderr.txt
rename to Tests/RunCMake/cmake_language/eval_expanded_command_and_arguments-stderr.txt
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_expanded_command_and_arguments.cmake b/Tests/RunCMake/cmake_language/eval_expanded_command_and_arguments.cmake
similarity index 62%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_expanded_command_and_arguments.cmake
rename to Tests/RunCMake/cmake_language/eval_expanded_command_and_arguments.cmake
index fcc399bbf9b602727379242f2317b8d17cf17f63..f7d2d515a6814e8940e022349c9322ac652f2bd1 100644
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_expanded_command_and_arguments.cmake
+++ b/Tests/RunCMake/cmake_language/eval_expanded_command_and_arguments.cmake
@@ -1,2 +1,2 @@
 set(cmd EVAL CODE [[message("OK!")]])
-cmake_command(${cmd})
+cmake_language(${cmd})
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_and_arguments-result.txt b/Tests/RunCMake/cmake_language/eval_extra_parameters_between_eval_and_code-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_expanded_command_and_arguments-result.txt
rename to Tests/RunCMake/cmake_language/eval_extra_parameters_between_eval_and_code-result.txt
diff --git a/Tests/RunCMake/cmake_language/eval_extra_parameters_between_eval_and_code-stderr.txt b/Tests/RunCMake/cmake_language/eval_extra_parameters_between_eval_and_code-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d32054fc8dc854645614f600cb2340941b5649ce
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_extra_parameters_between_eval_and_code-stderr.txt
@@ -0,0 +1,5 @@
+CMake Error at eval_extra_parameters_between_eval_and_code.cmake:1 \(cmake_language\):
+  cmake_language called with unsupported arguments between EVAL and CODE
+  arguments
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/cmake_language/eval_extra_parameters_between_eval_and_code.cmake b/Tests/RunCMake/cmake_language/eval_extra_parameters_between_eval_and_code.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..7c004d7cff8e2ab4eec409f30400f95c6a08f0be
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_extra_parameters_between_eval_and_code.cmake
@@ -0,0 +1 @@
+cmake_language(EVAL BAD CODE "message(BAD CODE)")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_variable_outside_message-stderr.txt b/Tests/RunCMake/cmake_language/eval_message-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_variable_outside_message-stderr.txt
rename to Tests/RunCMake/cmake_language/eval_message-stderr.txt
diff --git a/Tests/RunCMake/cmake_language/eval_message.cmake b/Tests/RunCMake/cmake_language/eval_message.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..91edcdda610ef7082bb6aa37550904b2e28fed57
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_message.cmake
@@ -0,0 +1 @@
+cmake_language(EVAL CODE message(WORKS!))
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_message_fatal_error-result.txt b/Tests/RunCMake/cmake_language/eval_message_fatal_error-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_message_fatal_error-result.txt
rename to Tests/RunCMake/cmake_language/eval_message_fatal_error-result.txt
diff --git a/Tests/RunCMake/cmake_language/eval_message_fatal_error-stderr.txt b/Tests/RunCMake/cmake_language/eval_message_fatal_error-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5cf11e37c10fd459ac62ea60e2e3c92b1168c3c3
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_message_fatal_error-stderr.txt
@@ -0,0 +1,5 @@
+CMake Error at eval_message_fatal_error.cmake:1:EVAL:2 \(message\):
+  error!
+Call Stack \(most recent call first\):
+  eval_message_fatal_error.cmake:1 \(cmake_language\)
+  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_eval_message_fatal_error.cmake b/Tests/RunCMake/cmake_language/eval_message_fatal_error.cmake
similarity index 59%
rename from Tests/RunCMake/cmake_command/cmake_command_eval_message_fatal_error.cmake
rename to Tests/RunCMake/cmake_language/eval_message_fatal_error.cmake
index 22913de41ad3ef67f360f0a93d687b4e9a8ec5ae..72e155d06c2e4787367ed2642c3ba2f22e745ce5 100644
--- a/Tests/RunCMake/cmake_command/cmake_command_eval_message_fatal_error.cmake
+++ b/Tests/RunCMake/cmake_language/eval_message_fatal_error.cmake
@@ -1,4 +1,4 @@
-cmake_command(EVAL CODE
+cmake_language(EVAL CODE
 "
   message(FATAL_ERROR error!)
 "
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_no_parameters-result.txt b/Tests/RunCMake/cmake_language/eval_no_code-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_no_parameters-result.txt
rename to Tests/RunCMake/cmake_language/eval_no_code-result.txt
diff --git a/Tests/RunCMake/cmake_language/eval_no_code-stderr.txt b/Tests/RunCMake/cmake_language/eval_no_code-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..608ba8866aa75031bfcb720d622a5c58800c67a4
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_no_code-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error at eval_no_code.cmake:1 \(cmake_language\):
+  cmake_language called without CODE argument
diff --git a/Tests/RunCMake/cmake_language/eval_no_code.cmake b/Tests/RunCMake/cmake_language/eval_no_code.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..7f5bc21a219bdc5a2c38628287c8c7722b3318a2
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_no_code.cmake
@@ -0,0 +1 @@
+cmake_language(EVAL message "too many parameters")
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_unknown_function-result.txt b/Tests/RunCMake/cmake_language/eval_no_parameters-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_unknown_function-result.txt
rename to Tests/RunCMake/cmake_language/eval_no_parameters-result.txt
diff --git a/Tests/RunCMake/cmake_language/eval_no_parameters-stderr.txt b/Tests/RunCMake/cmake_language/eval_no_parameters-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6166898717ef233116a25304daf2395008d864b4
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_no_parameters-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error at eval_no_parameters.cmake:1 \(cmake_language\):
+  cmake_language called with incorrect number of arguments
diff --git a/Tests/RunCMake/cmake_language/eval_no_parameters.cmake b/Tests/RunCMake/cmake_language/eval_no_parameters.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..e7ae808e24a38b2e95e52706c53484a089dbf8ab
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_no_parameters.cmake
@@ -0,0 +1 @@
+cmake_language(EVAL)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_invoke_message-stderr.txt b/Tests/RunCMake/cmake_language/eval_variable_outside_message-stderr.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_invoke_message-stderr.txt
rename to Tests/RunCMake/cmake_language/eval_variable_outside_message-stderr.txt
diff --git a/Tests/RunCMake/cmake_language/eval_variable_outside_message.cmake b/Tests/RunCMake/cmake_language/eval_variable_outside_message.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..71f04570181c372c8e5f1c76fc24479e4ff01388
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/eval_variable_outside_message.cmake
@@ -0,0 +1,2 @@
+cmake_language(EVAL CODE "set(phrase \"WORKS!\")")
+message(${phrase})
diff --git a/Tests/RunCMake/cmake_command/cmake_command_no_parameters-result.txt b/Tests/RunCMake/cmake_language/no_parameters-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_no_parameters-result.txt
rename to Tests/RunCMake/cmake_language/no_parameters-result.txt
diff --git a/Tests/RunCMake/cmake_language/no_parameters-stderr.txt b/Tests/RunCMake/cmake_language/no_parameters-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..194bbe355a8cf97ea98bc8599af1377952d9b6bc
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/no_parameters-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error at no_parameters.cmake:1 \(cmake_language\):
+  cmake_language called with incorrect number of arguments
diff --git a/Tests/RunCMake/cmake_language/no_parameters.cmake b/Tests/RunCMake/cmake_language/no_parameters.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..8353e08da740b79e37d801d0e9ec441824dc1152
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/no_parameters.cmake
@@ -0,0 +1 @@
+cmake_language(CALL)
diff --git a/Tests/RunCMake/cmake_command/cmake_command_unknown_meta_operation-result.txt b/Tests/RunCMake/cmake_language/unknown_meta_operation-result.txt
similarity index 100%
rename from Tests/RunCMake/cmake_command/cmake_command_unknown_meta_operation-result.txt
rename to Tests/RunCMake/cmake_language/unknown_meta_operation-result.txt
diff --git a/Tests/RunCMake/cmake_language/unknown_meta_operation-stderr.txt b/Tests/RunCMake/cmake_language/unknown_meta_operation-stderr.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6a1d4fdf9dac452d11a0c5eb3ee3ed815d8dc2e7
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/unknown_meta_operation-stderr.txt
@@ -0,0 +1,2 @@
+CMake Error at unknown_meta_operation.cmake:1 \(cmake_language\):
+  cmake_language called with unknown meta-operation
diff --git a/Tests/RunCMake/cmake_language/unknown_meta_operation.cmake b/Tests/RunCMake/cmake_language/unknown_meta_operation.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..699f36f15af530ba7f5e054bb5475d8362c8589d
--- /dev/null
+++ b/Tests/RunCMake/cmake_language/unknown_meta_operation.cmake
@@ -0,0 +1 @@
+cmake_language(UNKNOWN)