summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/h5test.h9
-rw-r--r--test/testframe.c62
2 files changed, 59 insertions, 12 deletions
diff --git a/test/h5test.h b/test/h5test.h
index fa4ed43..99706f0 100644
--- a/test/h5test.h
+++ b/test/h5test.h
@@ -68,6 +68,13 @@
#define VERBOSE_HI (GetTestVerbosity()>=VERBO_HI)
/*
+ * Test controls definitions.
+ */
+#define SKIPTEST 1 /* Skip this test */
+#define ONLYTEST 2 /* Do only this test */
+#define BEGINTEST 3 /* Skip all tests before this test */
+
+/*
* This contains the filename prefix specificied as command line option for
* the parallel test files.
*/
@@ -129,6 +136,8 @@ H5TEST_DLL void ParseTestVerbosity(char *argv);
H5TEST_DLL int GetTestNumErrs(void);
H5TEST_DLL void *GetTestParameters(void);
H5TEST_DLL int TestErrPrintf(const char *format, ...);
+H5TEST_DLL void SetTest(const char *testname, int action);
+
#ifdef H5_HAVE_PARALLEL
H5TEST_DLL int h5_set_info_object(void);
diff --git a/test/testframe.c b/test/testframe.c
index d3391ac..3411b95 100644
--- a/test/testframe.c
+++ b/test/testframe.c
@@ -197,9 +197,7 @@ void TestParseCmdLine(int argc, char *argv[], int *Summary, int *CleanUp)
(HDstrcmp(argv[CLLoop], "-x") == 0))) {
Loop = CLLoop + 1;
while ((Loop < argc) && (argv[Loop][0] != '-')) {
- for (Loop1 = 0; Loop1 < Index; Loop1++)
- if (HDstrcmp(argv[Loop], Test[Loop1].Name) == 0)
- Test[Loop1].SkipFlag = 1;
+ SetTest(argv[Loop], SKIPTEST);
Loop++;
} /* end while */
} /* end if */
@@ -207,12 +205,7 @@ void TestParseCmdLine(int argc, char *argv[], int *Summary, int *CleanUp)
(HDstrcmp(argv[CLLoop], "-b") == 0))) {
Loop = CLLoop + 1;
while ((Loop < argc) && (argv[Loop][0] != '-')) {
- for (Loop1 = 0; Loop1 < Index; Loop1++) {
- if (HDstrcmp(argv[Loop], Test[Loop1].Name) != 0)
- Test[Loop1].SkipFlag = 1;
- if (HDstrcmp(argv[Loop], Test[Loop1].Name) == 0)
- Loop1 = Index;
- } /* end for */
+ SetTest(argv[Loop], BEGINTEST);
Loop++;
} /* end while */
} /* end if */
@@ -223,9 +216,7 @@ void TestParseCmdLine(int argc, char *argv[], int *Summary, int *CleanUp)
Loop = CLLoop + 1;
while ((Loop < argc) && (argv[Loop][0] != '-')) {
- for (Loop1 = 0; Loop1 < Index; Loop1++)
- if (HDstrcmp(argv[Loop], Test[Loop1].Name) == 0)
- Test[Loop1].SkipFlag = 0;
+ SetTest(argv[Loop], ONLYTEST);
Loop++;
} /* end while */
} /* end if */
@@ -380,3 +371,50 @@ TestErrPrintf(const char *format, ...)
return ret_value;
}
+
+/*
+ * Set (control) which test will be tested.
+ * SKIPTEST: skip this test
+ * ONLYTEST: do only this test
+ * BEGINETEST: skip all tests before this test
+ *
+ */
+void SetTest(const char *testname, int action)
+{
+ int Loop;
+
+ switch (action){
+ case SKIPTEST:
+ for (Loop = 0; Loop < Index; Loop++)
+ if (HDstrcmp(testname, Test[Loop].Name) == 0){
+ Test[Loop].SkipFlag = 1;
+ break;
+ }
+ break;
+ case BEGINTEST:
+ for (Loop = 0; Loop < Index; Loop++) {
+ if (HDstrcmp(testname, Test[Loop].Name) != 0)
+ Test[Loop].SkipFlag = 1;
+ else
+ break;
+ }
+ break;
+ case ONLYTEST:
+ for (Loop = 0; Loop < Index; Loop++) {
+ if (HDstrcmp(testname, Test[Loop].Name) != 0)
+ Test[Loop].SkipFlag = 1;
+ else {
+ Test[Loop].SkipFlag = 0;
+ break;
+ }
+ }
+ /* skip the rest */
+ while (++Loop < Index)
+ Test[Loop].SkipFlag = 1;
+ break;
+ default:
+ /* error */
+ printf("*** ERROR: Unknown action (%d) for SetTest\n", action);
+ break;
+ }
+}