allow filtering of tests executed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
diff --git a/demo/main.c b/demo/main.c
index 883f54d..aa58c20 100644
--- a/demo/main.c
+++ b/demo/main.c
@@ -1,7 +1,7 @@
#include "shared.h"
int mtest_opponent(void);
-int unit_tests(void);
+int unit_tests(int argc, char **argv);
void ndraw(mp_int *a, const char *name)
{
@@ -24,7 +24,7 @@ void ndraw(mp_int *a, const char *name)
free(buf);
}
-int main(void)
+int main(int argc, char **argv)
{
srand(LTM_DEMO_RAND_SEED);
@@ -48,5 +48,5 @@ int main(void)
if (LTM_DEMO_TEST_VS_MTEST) {
return mtest_opponent();
}
- return unit_tests();
+ return unit_tests(argc, argv);
}
diff --git a/demo/test.c b/demo/test.c
index c72c493..01bc959 100644
--- a/demo/test.c
+++ b/demo/test.c
@@ -1806,7 +1806,7 @@ LTM_ERR:
return EXIT_FAILURE;
}
-int unit_tests(void)
+int unit_tests(int argc, char **argv)
{
static const struct {
const char *name;
@@ -1846,7 +1846,7 @@ int unit_tests(void)
#undef T
};
unsigned long i;
- int res = EXIT_SUCCESS;
+ int res = EXIT_SUCCESS, j;
#if defined(LTM_DEMO_REAL_RAND) && !defined(_WIN32)
fd_urandom = fopen("/dev/urandom", "r");
@@ -1856,6 +1856,14 @@ int unit_tests(void)
#endif
for (i = 0; i < sizeof(test) / sizeof(test[0]); ++i) {
+ if (argc > 1) {
+ for (j = 1; j < argc; ++j) {
+ if (strstr(test[i].name, argv[j]) != NULL) {
+ break;
+ }
+ }
+ if (j == argc) continue;
+ }
printf("TEST %s\n\n", test[i].name);
if (test[i].fn() != EXIT_SUCCESS) {
printf("\n\nFAIL %s\n\n", test[i].name);