Add a TOR_SKIP_TESTCASES environment variable for suppressing tests.

For example, "TOR_SKIP_TESTCASES=crypto/.. ./src/test/test" will run
the tests and suppress all the "crypto/" tests.  You could get the
same effect by running "./src/test/test :crypto/..", but that can be
harder to arrange from CI.

Part of a fix/workaround for 33643.
This commit is contained in:
Nick Mathewson 2020-03-19 15:25:11 -04:00
parent 3150c30351
commit 6bafe97bc1
2 changed files with 20 additions and 0 deletions

5
changes/ticket33643 Normal file
View File

@ -0,0 +1,5 @@
o Minor features (testing):
- The unit tests now support a "TOR_SKIP_TESTCASES" environment variable
to specify a list of space-separated test cases that should not be
executed. We will use this to disable certain tests that are failing on
Appveyor because of mismatched OpenSSL libraries. Part of ticket 33643.

View File

@ -348,6 +348,21 @@ main(int c, const char **v)
atexit(remove_directory); atexit(remove_directory);
/* Look for TOR_SKIP_TESTCASES: a space-separated list of tests to skip. */
const char *skip_tests = getenv("TOR_SKIP_TESTCASES");
if (skip_tests) {
smartlist_t *skip = smartlist_new();
smartlist_split_string(skip, skip_tests, NULL,
SPLIT_IGNORE_BLANK, -1);
int n = 0;
SMARTLIST_FOREACH_BEGIN(skip, char *, cp) {
n += tinytest_skip(testgroups, cp);
tor_free(cp);
} SMARTLIST_FOREACH_END(cp);
printf("Skipping %d testcases.\n", n);
smartlist_free(skip);
}
int have_failed = (tinytest_main(c, v, testgroups) != 0); int have_failed = (tinytest_main(c, v, testgroups) != 0);
free_pregenerated_keys(); free_pregenerated_keys();