Quellcode durchsuchen

ctest: rename TRACK to GROUP

Update command-line options, script variables, and documentation to use
the term "group" instead of "track". The old terms are still available
for now, but they are now undocumented.

This makes our terminology more consistent with CDash. The goal of this
change is to make it more clear to our users how CTest and CDash interact
with each other.
Zack Galbreath vor 6 Jahren
Ursprung
Commit
2a71a0390c

+ 15 - 14
Help/command/ctest_start.rst

@@ -5,9 +5,9 @@ Starts the testing for a given model
 
 
 ::
 ::
 
 
-  ctest_start(<model> [<source> [<binary>]] [TRACK <track>] [QUIET])
+  ctest_start(<model> [<source> [<binary>]] [GROUP <group>] [QUIET])
 
 
-  ctest_start([<model> [<source> [<binary>]]] [TRACK <track>] APPEND [QUIET])
+  ctest_start([<model> [<source> [<binary>]]] [GROUP <group>] APPEND [QUIET])
 
 
 Starts the testing for a given model.  The command should be called
 Starts the testing for a given model.  The command should be called
 after the binary directory is initialized.
 after the binary directory is initialized.
@@ -26,20 +26,21 @@ The parameters are as follows:
   Set the binary directory. If not specified, the value of
   Set the binary directory. If not specified, the value of
   :variable:`CTEST_BINARY_DIRECTORY` is used instead.
   :variable:`CTEST_BINARY_DIRECTORY` is used instead.
 
 
-``TRACK <track>``
-  If ``TRACK`` is used, the submissions will go to the specified track on the
-  CDash server. If no ``TRACK`` is specified, the name of the model is used by
-  default.
+``GROUP <group>``
+  If ``GROUP`` is used, the submissions will go to the specified group on the
+  CDash server. If no ``GROUP`` is specified, the name of the model is used by
+  default. This replaces the deprecated option ``TRACK``. Despite the name
+  change its behavior is unchanged.
 
 
 ``APPEND``
 ``APPEND``
   If ``APPEND`` is used, the existing ``TAG`` is used rather than creating a new
   If ``APPEND`` is used, the existing ``TAG`` is used rather than creating a new
   one based on the current time stamp. If you use ``APPEND``, you can omit the
   one based on the current time stamp. If you use ``APPEND``, you can omit the
-  ``<model>`` and ``TRACK <track>`` parameters, because they will be read from
+  ``<model>`` and ``GROUP <group>`` parameters, because they will be read from
   the generated ``TAG`` file. For example:
   the generated ``TAG`` file. For example:
 
 
   .. code-block:: cmake
   .. code-block:: cmake
 
 
-    ctest_start(Experimental TRACK TrackExperimental)
+    ctest_start(Experimental GROUP GroupExperimental)
 
 
   Later, in another ``ctest -S`` script:
   Later, in another ``ctest -S`` script:
 
 
@@ -48,11 +49,11 @@ The parameters are as follows:
     ctest_start(APPEND)
     ctest_start(APPEND)
 
 
   When the second script runs ``ctest_start(APPEND)``, it will read the
   When the second script runs ``ctest_start(APPEND)``, it will read the
-  ``Experimental`` model and ``TrackExperimental`` track from the ``TAG`` file
+  ``Experimental`` model and ``GroupExperimental`` group from the ``TAG`` file
   generated by the first ``ctest_start()`` command. Please note that if you
   generated by the first ``ctest_start()`` command. Please note that if you
-  call ``ctest_start(APPEND)`` and specify a different model or track than
+  call ``ctest_start(APPEND)`` and specify a different model or group than
   in the first ``ctest_start()`` command, a warning will be issued, and the
   in the first ``ctest_start()`` command, a warning will be issued, and the
-  new model and track will be used.
+  new model and group will be used.
 
 
 ``QUIET``
 ``QUIET``
   If ``QUIET`` is used, CTest will suppress any non-error messages that it
   If ``QUIET`` is used, CTest will suppress any non-error messages that it
@@ -65,11 +66,11 @@ equivalent:
 
 
 .. code-block:: cmake
 .. code-block:: cmake
 
 
-  ctest_start(Experimental path/to/source path/to/binary TRACK SomeTrack QUIET APPEND)
+  ctest_start(Experimental path/to/source path/to/binary GROUP SomeGroup QUIET APPEND)
 
 
-  ctest_start(TRACK SomeTrack Experimental QUIET path/to/source APPEND path/to/binary)
+  ctest_start(GROUP SomeGroup Experimental QUIET path/to/source APPEND path/to/binary)
 
 
-  ctest_start(APPEND QUIET Experimental path/to/source TRACK SomeTrack path/to/binary)
+  ctest_start(APPEND QUIET Experimental path/to/source GROUP SomeGroup path/to/binary)
 
 
 However, for the sake of readability, it is recommended that you order your
 However, for the sake of readability, it is recommended that you order your
 parameters in the order listed at the top of this page.
 parameters in the order listed at the top of this page.

+ 7 - 4
Help/manual/ctest.1.rst

@@ -482,14 +482,17 @@ a `CDash`_ server. The command-line signature used to submit to `CDash`_ is::
 
 
 Options for Dashboard Client include:
 Options for Dashboard Client include:
 
 
-``--track <track>``
- Specify the track to submit dashboard to
+``--group <group>``
+ Specify what group you'd like to submit results to
 
 
- Submit dashboard to specified track instead of default one.  By
+ Submit dashboard to specified group instead of default one.  By
  default, the dashboard is submitted to Nightly, Experimental, or
  default, the dashboard is submitted to Nightly, Experimental, or
- Continuous track, but by specifying this option, the track can be
+ Continuous group, but by specifying this option, the group can be
  arbitrary.
  arbitrary.
 
 
+ This replaces the deprecated option ``--track``.
+ Despite the name change its behavior is unchanged.
+
 ``-A <file>, --add-notes <file>``
 ``-A <file>, --add-notes <file>``
  Add a notes file with submission.
  Add a notes file with submission.
 
 

+ 8 - 6
Source/CTest/cmCTestStartCommand.cxx

@@ -33,14 +33,16 @@ bool cmCTestStartCommand::InitialPass(std::vector<std::string> const& args,
   const char* bld_dir = nullptr;
   const char* bld_dir = nullptr;
 
 
   while (cnt < args.size()) {
   while (cnt < args.size()) {
-    if (args[cnt] == "TRACK") {
+    if (args[cnt] == "GROUP" || args[cnt] == "TRACK") {
       cnt++;
       cnt++;
       if (cnt >= args.size() || args[cnt] == "APPEND" ||
       if (cnt >= args.size() || args[cnt] == "APPEND" ||
           args[cnt] == "QUIET") {
           args[cnt] == "QUIET") {
-        this->SetError("TRACK argument missing track name");
+        std::ostringstream e;
+        e << args[cnt - 1] << " argument missing group name";
+        this->SetError(e.str());
         return false;
         return false;
       }
       }
-      this->CTest->SetSpecificTrack(args[cnt].c_str());
+      this->CTest->SetSpecificGroup(args[cnt].c_str());
       cnt++;
       cnt++;
     } else if (args[cnt] == "APPEND") {
     } else if (args[cnt] == "APPEND") {
       cnt++;
       cnt++;
@@ -113,10 +115,10 @@ bool cmCTestStartCommand::InitialPass(std::vector<std::string> const& args,
                          << "   Build directory: " << bld_dir << std::endl,
                          << "   Build directory: " << bld_dir << std::endl,
                        this->Quiet);
                        this->Quiet);
   }
   }
-  const char* track = this->CTest->GetSpecificTrack();
-  if (track) {
+  const char* group = this->CTest->GetSpecificGroup();
+  if (group) {
     cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
     cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Track: " << track << std::endl, this->Quiet);
+                       "   Group: " << group << std::endl, this->Quiet);
   }
   }
 
 
   // Log startup actions.
   // Log startup actions.

+ 8 - 3
Source/CTest/cmCTestSubmitHandler.cxx

@@ -569,6 +569,11 @@ int cmCTestSubmitHandler::HandleCDashUploadFile(std::string const& file,
       << curl.Escape(this->CTest->GetCTestConfiguration("BuildName")) << "&"
       << curl.Escape(this->CTest->GetCTestConfiguration("BuildName")) << "&"
       << "site=" << curl.Escape(this->CTest->GetCTestConfiguration("Site"))
       << "site=" << curl.Escape(this->CTest->GetCTestConfiguration("Site"))
       << "&"
       << "&"
+      << "group=" << curl.Escape(this->CTest->GetTestModelString())
+      << "&"
+      // For now, we send both "track" and "group" to CDash in case we're
+      // submitting to an older instance that still expects the prior
+      // terminology.
       << "track=" << curl.Escape(this->CTest->GetTestModelString()) << "&"
       << "track=" << curl.Escape(this->CTest->GetTestModelString()) << "&"
       << "starttime=" << timeNow << "&"
       << "starttime=" << timeNow << "&"
       << "endtime=" << timeNow << "&"
       << "endtime=" << timeNow << "&"
@@ -837,10 +842,10 @@ int cmCTestSubmitHandler::ProcessHandler()
   }
   }
   cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, "Submit files\n",
   cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT, "Submit files\n",
                      this->Quiet);
                      this->Quiet);
-  const char* specificTrack = this->CTest->GetSpecificTrack();
-  if (specificTrack) {
+  const char* specificGroup = this->CTest->GetSpecificGroup();
+  if (specificGroup) {
     cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
     cmCTestOptionalLog(this->CTest, HANDLER_OUTPUT,
-                       "   Send to track: " << specificTrack << std::endl,
+                       "   Send to group: " << specificGroup << std::endl,
                        this->Quiet);
                        this->Quiet);
   }
   }
   this->SetLogFile(&ofs);
   this->SetLogFile(&ofs);

+ 27 - 21
Source/cmCTest.cxx

@@ -155,7 +155,7 @@ struct cmCTest::Private
   bool TomorrowTag = false;
   bool TomorrowTag = false;
 
 
   int TestModel = cmCTest::EXPERIMENTAL;
   int TestModel = cmCTest::EXPERIMENTAL;
-  std::string SpecificTrack;
+  std::string SpecificGroup;
 
 
   cmDuration TimeOut = cmDuration::zero();
   cmDuration TimeOut = cmDuration::zero();
 
 
@@ -508,10 +508,10 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command)
             day != lctime->tm_mday) {
             day != lctime->tm_mday) {
           tag.clear();
           tag.clear();
         }
         }
-        std::string track;
-        if (cmSystemTools::GetLineFromStream(tfin, track) &&
+        std::string group;
+        if (cmSystemTools::GetLineFromStream(tfin, group) &&
             !this->Impl->Parts[PartStart] && !command) {
             !this->Impl->Parts[PartStart] && !command) {
-          this->Impl->SpecificTrack = track;
+          this->Impl->SpecificGroup = group;
         }
         }
         std::string model;
         std::string model;
         if (cmSystemTools::GetLineFromStream(tfin, model) &&
         if (cmSystemTools::GetLineFromStream(tfin, model) &&
@@ -564,13 +564,13 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command)
         }
         }
       }
       }
     } else {
     } else {
-      std::string track;
+      std::string group;
       std::string modelStr;
       std::string modelStr;
       int model = cmCTest::UNKNOWN;
       int model = cmCTest::UNKNOWN;
 
 
       if (tfin) {
       if (tfin) {
         cmSystemTools::GetLineFromStream(tfin, tag);
         cmSystemTools::GetLineFromStream(tfin, tag);
-        cmSystemTools::GetLineFromStream(tfin, track);
+        cmSystemTools::GetLineFromStream(tfin, group);
         if (cmSystemTools::GetLineFromStream(tfin, modelStr)) {
         if (cmSystemTools::GetLineFromStream(tfin, modelStr)) {
           model = GetTestModelFromString(modelStr.c_str());
           model = GetTestModelFromString(modelStr.c_str());
         }
         }
@@ -605,15 +605,15 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command)
                            quiet);
                            quiet);
       }
       }
 
 
-      if (!this->Impl->SpecificTrack.empty() &&
-          track != this->Impl->SpecificTrack) {
+      if (!this->Impl->SpecificGroup.empty() &&
+          group != this->Impl->SpecificGroup) {
         cmCTestOptionalLog(this, WARNING,
         cmCTestOptionalLog(this, WARNING,
-                           "Track given in TAG does not match "
-                           "track given in ctest_start()"
+                           "Group given in TAG does not match "
+                           "group given in ctest_start()"
                              << std::endl,
                              << std::endl,
                            quiet);
                            quiet);
       } else {
       } else {
-        this->Impl->SpecificTrack = track;
+        this->Impl->SpecificGroup = group;
       }
       }
 
 
       cmCTestOptionalLog(this, OUTPUT,
       cmCTestOptionalLog(this, OUTPUT,
@@ -1021,8 +1021,8 @@ int cmCTest::ProcessSteps()
 
 
 std::string cmCTest::GetTestModelString()
 std::string cmCTest::GetTestModelString()
 {
 {
-  if (!this->Impl->SpecificTrack.empty()) {
-    return this->Impl->SpecificTrack;
+  if (!this->Impl->SpecificGroup.empty()) {
+    return this->Impl->SpecificGroup;
   }
   }
   switch (this->Impl->TestModel) {
   switch (this->Impl->TestModel) {
     case cmCTest::NIGHTLY:
     case cmCTest::NIGHTLY:
@@ -1908,9 +1908,15 @@ bool cmCTest::HandleCommandLineArguments(size_t& i,
     this->Impl->Debug = true;
     this->Impl->Debug = true;
     this->Impl->ShowLineNumbers = true;
     this->Impl->ShowLineNumbers = true;
   }
   }
+  if (this->CheckArgument(arg, "--group") && i < args.size() - 1) {
+    i++;
+    this->Impl->SpecificGroup = args[i];
+  }
+  // This is an undocumented / deprecated option.
+  // "Track" has been renamed to "Group".
   if (this->CheckArgument(arg, "--track") && i < args.size() - 1) {
   if (this->CheckArgument(arg, "--track") && i < args.size() - 1) {
     i++;
     i++;
-    this->Impl->SpecificTrack = args[i];
+    this->Impl->SpecificGroup = args[i];
   }
   }
   if (this->CheckArgument(arg, "--show-line-numbers")) {
   if (this->CheckArgument(arg, "--show-line-numbers")) {
     this->Impl->ShowLineNumbers = true;
     this->Impl->ShowLineNumbers = true;
@@ -2769,21 +2775,21 @@ std::vector<std::string>& cmCTest::GetInitialCommandLineArguments()
   return this->Impl->InitialCommandLineArguments;
   return this->Impl->InitialCommandLineArguments;
 }
 }
 
 
-const char* cmCTest::GetSpecificTrack()
+const char* cmCTest::GetSpecificGroup()
 {
 {
-  if (this->Impl->SpecificTrack.empty()) {
+  if (this->Impl->SpecificGroup.empty()) {
     return nullptr;
     return nullptr;
   }
   }
-  return this->Impl->SpecificTrack.c_str();
+  return this->Impl->SpecificGroup.c_str();
 }
 }
 
 
-void cmCTest::SetSpecificTrack(const char* track)
+void cmCTest::SetSpecificGroup(const char* group)
 {
 {
-  if (!track) {
-    this->Impl->SpecificTrack.clear();
+  if (!group) {
+    this->Impl->SpecificGroup.clear();
     return;
     return;
   }
   }
-  this->Impl->SpecificTrack = track;
+  this->Impl->SpecificGroup = group;
 }
 }
 
 
 void cmCTest::SetFailover(bool failover)
 void cmCTest::SetFailover(bool failover)

+ 3 - 3
Source/cmCTest.h

@@ -404,9 +404,9 @@ public:
 
 
   std::vector<std::string>& GetInitialCommandLineArguments();
   std::vector<std::string>& GetInitialCommandLineArguments();
 
 
-  /** Set the track to submit to */
-  void SetSpecificTrack(const char* track);
-  const char* GetSpecificTrack();
+  /** Set the group to submit to */
+  void SetSpecificGroup(const char* group);
+  const char* GetSpecificGroup();
 
 
   void SetFailover(bool failover);
   void SetFailover(bool failover);
   bool GetFailover() const;
   bool GetFailover() const;

+ 3 - 1
Source/ctest.cxx

@@ -83,7 +83,9 @@ static const char* cmDocumentationOptions[][2] = {
   { "-T <action>, --test-action <action>",
   { "-T <action>, --test-action <action>",
     "Sets the dashboard action to "
     "Sets the dashboard action to "
     "perform" },
     "perform" },
-  { "--track <track>", "Specify the track to submit dashboard to" },
+  { "--group <group>",
+    "Specify what build group on the dashboard you'd like to "
+    "submit results to." },
   { "-S <script>, --script <script>",
   { "-S <script>, --script <script>",
     "Execute a dashboard for a "
     "Execute a dashboard for a "
     "configuration" },
     "configuration" },

+ 1 - 0
Tests/RunCMake/ctest_start/AppendDifferentGroup-stderr.txt

@@ -0,0 +1 @@
+^Group given in TAG does not match group given in ctest_start\(\)$

+ 8 - 0
Tests/RunCMake/ctest_start/AppendDifferentGroup-stdout.txt

@@ -0,0 +1,8 @@
+Run dashboard with to-be-determined model
+   Source directory: .*/Tests/RunCMake/ctest_start/AppendDifferentGroup
+   Build directory: .*/Tests/RunCMake/ctest_start/AppendDifferentGroup-build
+   Group: ExperimentalDifferent
+   Site: test-site
+   Build name: test-build-name
+  Use existing tag: 19551112-2204 - ExperimentalDifferent
+   Use ExperimentalDifferent tag: [0-9-]+

+ 1 - 1
Tests/RunCMake/ctest_start/AppendDifferentTrack-stderr.txt

@@ -1 +1 @@
-^Track given in TAG does not match track given in ctest_start\(\)$
+^Group given in TAG does not match group given in ctest_start\(\)$

+ 1 - 1
Tests/RunCMake/ctest_start/AppendDifferentTrack-stdout.txt

@@ -1,7 +1,7 @@
 Run dashboard with to-be-determined model
 Run dashboard with to-be-determined model
    Source directory: .*/Tests/RunCMake/ctest_start/AppendDifferentTrack
    Source directory: .*/Tests/RunCMake/ctest_start/AppendDifferentTrack
    Build directory: .*/Tests/RunCMake/ctest_start/AppendDifferentTrack-build
    Build directory: .*/Tests/RunCMake/ctest_start/AppendDifferentTrack-build
-   Track: ExperimentalDifferent
+   Group: ExperimentalDifferent
    Site: test-site
    Site: test-site
    Build name: test-build-name
    Build name: test-build-name
   Use existing tag: 19551112-2204 - ExperimentalDifferent
   Use existing tag: 19551112-2204 - ExperimentalDifferent

+ 1 - 0
Tests/RunCMake/ctest_start/MissingGroupArg-result.txt

@@ -0,0 +1 @@
+(-1|255)

+ 2 - 0
Tests/RunCMake/ctest_start/MissingGroupArg-stderr.txt

@@ -0,0 +1,2 @@
+^CMake Error at .*/Tests/RunCMake/ctest_start/MissingGroupArg/test\.cmake:[0-9]+ \(ctest_start\):
+  ctest_start GROUP argument missing group name$

+ 1 - 0
Tests/RunCMake/ctest_start/MissingGroupArgAppend-result.txt

@@ -0,0 +1 @@
+(-1|255)

+ 2 - 0
Tests/RunCMake/ctest_start/MissingGroupArgAppend-stderr.txt

@@ -0,0 +1,2 @@
+^CMake Error at .*/Tests/RunCMake/ctest_start/MissingGroupArgAppend/test\.cmake:[0-9]+ \(ctest_start\):
+  ctest_start GROUP argument missing group name$

+ 1 - 0
Tests/RunCMake/ctest_start/MissingGroupArgQuiet-result.txt

@@ -0,0 +1 @@
+(-1|255)

+ 2 - 0
Tests/RunCMake/ctest_start/MissingGroupArgQuiet-stderr.txt

@@ -0,0 +1,2 @@
+^CMake Error at .*/Tests/RunCMake/ctest_start/MissingGroupArgQuiet/test\.cmake:[0-9]+ \(ctest_start\):
+  ctest_start GROUP argument missing group name$

+ 1 - 1
Tests/RunCMake/ctest_start/MissingTrackArg-stderr.txt

@@ -1,2 +1,2 @@
 ^CMake Error at .*/Tests/RunCMake/ctest_start/MissingTrackArg/test\.cmake:[0-9]+ \(ctest_start\):
 ^CMake Error at .*/Tests/RunCMake/ctest_start/MissingTrackArg/test\.cmake:[0-9]+ \(ctest_start\):
-  ctest_start TRACK argument missing track name$
+  ctest_start TRACK argument missing group name$

+ 1 - 1
Tests/RunCMake/ctest_start/MissingTrackArgAppend-stderr.txt

@@ -1,2 +1,2 @@
 ^CMake Error at .*/Tests/RunCMake/ctest_start/MissingTrackArgAppend/test\.cmake:[0-9]+ \(ctest_start\):
 ^CMake Error at .*/Tests/RunCMake/ctest_start/MissingTrackArgAppend/test\.cmake:[0-9]+ \(ctest_start\):
-  ctest_start TRACK argument missing track name$
+  ctest_start TRACK argument missing group name$

+ 1 - 1
Tests/RunCMake/ctest_start/MissingTrackArgQuiet-stderr.txt

@@ -1,2 +1,2 @@
 ^CMake Error at .*/Tests/RunCMake/ctest_start/MissingTrackArgQuiet/test\.cmake:[0-9]+ \(ctest_start\):
 ^CMake Error at .*/Tests/RunCMake/ctest_start/MissingTrackArgQuiet/test\.cmake:[0-9]+ \(ctest_start\):
-  ctest_start TRACK argument missing track name$
+  ctest_start TRACK argument missing group name$

+ 7 - 0
Tests/RunCMake/ctest_start/NoAppendDifferentGroup-stdout.txt

@@ -0,0 +1,7 @@
+Run dashboard with model Experimental
+   Source directory: .*/Tests/RunCMake/ctest_start/NoAppendDifferentGroup
+   Build directory: .*/Tests/RunCMake/ctest_start/NoAppendDifferentGroup-build
+   Group: ExperimentalDifferent
+   Site: test-site
+   Build name: test-build-name
+   Use ExperimentalDifferent tag: [0-9-]+

+ 1 - 1
Tests/RunCMake/ctest_start/NoAppendDifferentTrack-stdout.txt

@@ -1,7 +1,7 @@
 Run dashboard with model Experimental
 Run dashboard with model Experimental
    Source directory: .*/Tests/RunCMake/ctest_start/NoAppendDifferentTrack
    Source directory: .*/Tests/RunCMake/ctest_start/NoAppendDifferentTrack
    Build directory: .*/Tests/RunCMake/ctest_start/NoAppendDifferentTrack-build
    Build directory: .*/Tests/RunCMake/ctest_start/NoAppendDifferentTrack-build
-   Track: ExperimentalDifferent
+   Group: ExperimentalDifferent
    Site: test-site
    Site: test-site
    Build name: test-build-name
    Build name: test-build-name
    Use ExperimentalDifferent tag: [0-9-]+
    Use ExperimentalDifferent tag: [0-9-]+

+ 6 - 0
Tests/RunCMake/ctest_start/RunCMakeTest.cmake

@@ -26,18 +26,24 @@ run_ctest_start(WriteModelToTagExperimental Experimental QUIET)
 run_ctest_start(WriteModelToTagContinuous Continuous QUIET)
 run_ctest_start(WriteModelToTagContinuous Continuous QUIET)
 run_ctest_start(WriteModelToTagNightly Nightly QUIET)
 run_ctest_start(WriteModelToTagNightly Nightly QUIET)
 run_ctest_start(WriteModelToTagNoMatchingTrack Continuous TRACK SomeWeirdTrackName QUIET)
 run_ctest_start(WriteModelToTagNoMatchingTrack Continuous TRACK SomeWeirdTrackName QUIET)
+run_ctest_start(WriteModelToTagNoMatchingGroup Continuous GROUP SomeWeirdTrackName QUIET)
 run_ctest_start(AppendSameModel Continuous APPEND)
 run_ctest_start(AppendSameModel Continuous APPEND)
 run_ctest_start(AppendDifferentModel Experimental APPEND)
 run_ctest_start(AppendDifferentModel Experimental APPEND)
 run_ctest_start(AppendNoModel APPEND)
 run_ctest_start(AppendNoModel APPEND)
 run_ctest_start(AppendDifferentTrack TRACK ExperimentalDifferent APPEND)
 run_ctest_start(AppendDifferentTrack TRACK ExperimentalDifferent APPEND)
+run_ctest_start(AppendDifferentGroup GROUP ExperimentalDifferent APPEND)
 run_ctest_start(NoAppendDifferentTrack Experimental TRACK ExperimentalDifferent)
 run_ctest_start(NoAppendDifferentTrack Experimental TRACK ExperimentalDifferent)
+run_ctest_start(NoAppendDifferentGroup Experimental GROUP ExperimentalDifferent)
 run_ctest_start(AppendNoMatchingTrack Continuous APPEND)
 run_ctest_start(AppendNoMatchingTrack Continuous APPEND)
 run_ctest_start(AppendOldContinuous Continuous APPEND)
 run_ctest_start(AppendOldContinuous Continuous APPEND)
 run_ctest_start(AppendOldNoModel APPEND)
 run_ctest_start(AppendOldNoModel APPEND)
 run_ctest_start(NoModel QUIET)
 run_ctest_start(NoModel QUIET)
 run_ctest_start(MissingTrackArg Experimental TRACK)
 run_ctest_start(MissingTrackArg Experimental TRACK)
+run_ctest_start(MissingGroupArg Experimental GROUP)
 run_ctest_start(MissingTrackArgAppend Experimental TRACK APPEND)
 run_ctest_start(MissingTrackArgAppend Experimental TRACK APPEND)
+run_ctest_start(MissingGroupArgAppend Experimental GROUP APPEND)
 run_ctest_start(MissingTrackArgQuiet Experimental TRACK QUIET)
 run_ctest_start(MissingTrackArgQuiet Experimental TRACK QUIET)
+run_ctest_start(MissingGroupArgQuiet Experimental GROUP QUIET)
 run_ctest_start(TooManyArgs Experimental
 run_ctest_start(TooManyArgs Experimental
                 ${RunCMake_BINARY_DIR}/TooManyArgs-build
                 ${RunCMake_BINARY_DIR}/TooManyArgs-build
                 ${RunCMake_BINARY_DIR}/TooManyArgs-build
                 ${RunCMake_BINARY_DIR}/TooManyArgs-build

+ 1 - 0
Tests/RunCMake/ctest_start/WriteModelToTagNoMatchingGroup-check.cmake

@@ -0,0 +1 @@
+check_tag_contents("^[0-9-]+\nSomeWeirdTrackName\nContinuous\n$")