summaryrefslogtreecommitdiff
path: root/Templates
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2021-04-29 13:18:54 +0000
committerKitware Robot <kwrobot@kitware.com>2021-04-29 09:19:02 -0400
commit34f316b484d9c56695488a6a8e1ace1df97d0ff4 (patch)
tree11c705326144b89ad31577d9e39c0ae45b9c77e9 /Templates
parentde76de9606e35bd156819621df09f2fe914fc34d (diff)
parent3f6ff4b5dba01f2f58dca75546ebefd0830110a5 (diff)
downloadcmake-34f316b484d9c56695488a6a8e1ace1df97d0ff4.tar.gz
Merge topic 'test_driver_tap13_support'
3f6ff4b5db create_test_sourcelist: add test driver option to run all tests a3aa5596a1 Tests: Isolate TestDriver build directories Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3661
Diffstat (limited to 'Templates')
-rw-r--r--Templates/TestDriver.cxx.in43
1 files changed, 42 insertions, 1 deletions
diff --git a/Templates/TestDriver.cxx.in b/Templates/TestDriver.cxx.in
index 3e47d6a0d2..e3efa794d1 100644
--- a/Templates/TestDriver.cxx.in
+++ b/Templates/TestDriver.cxx.in
@@ -2,6 +2,7 @@
#include <stdio.h> /* NOLINT */
#include <stdlib.h> /* NOLINT */
#include <string.h> /* NOLINT */
+#include <time.h>
#if defined(_MSC_VER)
#pragma warning(disable : 4996) /* deprecation */
@@ -62,11 +63,23 @@ static char* lowercase(const char* string)
return new_string;
}
+int isTestSkipped(const char *name, int n_skipped_tests, char *skipped_tests[]) {
+ int i;
+ for (i = 0; i < n_skipped_tests; i++) {
+ if (strcmp(name, skipped_tests[i]) == 0) {
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
int main(int ac, char* av[])
{
int i;
int testNum = 0;
int partial_match;
+ int run_all;
char *arg;
int testToRun = -1;
@@ -95,15 +108,43 @@ int main(int ac, char* av[])
av++;
}
partial_match = 0;
+ run_all = 0;
arg = CM_NULL; /* NOLINT */
- /* If partial match is requested. */
+ /* If partial match or running all tests are requested. */
if (testToRun == -1 && ac > 1) {
partial_match = (strcmp(av[1], "-R") == 0) ? 1 : 0;
+ run_all = (strcmp(av[1], "-A") == 0) ? 1 : 0;
}
if (partial_match != 0 && ac < 3) {
printf("-R needs an additional parameter.\n");
return -1;
}
+ if (run_all == 1) {
+ clock_t t;
+ int status = 0;
+ const char* status_message = NULL;
+ printf("TAP version 13\n");
+ printf("1..%d\n", NumTests);
+ for (i = 0; i < NumTests; ++i) {
+ const char *name = cmakeGeneratedFunctionMapEntries[i].name;
+ if (ac > 2) {
+ if (isTestSkipped(name, ac - 2, av + 2) == 1) {
+ printf("ok %d %s # SKIP\n", i + 1, name);
+ continue;
+ }
+ }
+ t = clock();
+ status = (*cmakeGeneratedFunctionMapEntries[i].func)(ac, av);
+ t = clock() - t;
+ double time_taken = ((double)t) / CLOCKS_PER_SEC;
+ status_message = (status == -1) ? "not ok" : "ok";
+ printf("%s %d %s # %f\n", status_message, i + 1, name, time_taken);
+ }
+ printf("All tests finished.\n");
+
+ return 0;
+ }
+
if (testToRun == -1) {
arg = lowercase(av[1 + partial_match]);
}