diff options
-rw-r--r-- | test/h5test.h | 9 | ||||
-rw-r--r-- | test/testframe.c | 62 |
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; + } +} |