aboutsummaryrefslogtreecommitdiff
path: root/02-usart/test_harness
diff options
context:
space:
mode:
Diffstat (limited to '02-usart/test_harness')
-rw-r--r--02-usart/test_harness/fake_env.h1
-rw-r--r--02-usart/test_harness/test_harness.c23
-rw-r--r--02-usart/test_harness/test_harness.h26
3 files changed, 26 insertions, 24 deletions
diff --git a/02-usart/test_harness/fake_env.h b/02-usart/test_harness/fake_env.h
index 09891bc..3cc6310 100644
--- a/02-usart/test_harness/fake_env.h
+++ b/02-usart/test_harness/fake_env.h
@@ -10,5 +10,6 @@ void* load_fake_apb2__();
void* load_fake_sram1__();
void* load_fake_sram2__();
void* load_fake_scb__();
+void* load_fake_nvic__();
#endif /* FAKE_ENV_H_ */
diff --git a/02-usart/test_harness/test_harness.c b/02-usart/test_harness/test_harness.c
index 9f7dd79..3a6d10a 100644
--- a/02-usart/test_harness/test_harness.c
+++ b/02-usart/test_harness/test_harness.c
@@ -46,7 +46,6 @@ static int execute_test(test_t* test)
int status;
int ec;
pid_t pid;
- const char* note = "";
snprintf(
fullname, sizeof(fullname), "%s::%s", iter->test_suite, iter->test_name);
@@ -66,17 +65,21 @@ static int execute_test(test_t* test)
return 1;
}
- ec = WEXITSTATUS(status);
- switch (ec) {
- case 0:
- printf("%s " GREEN "[PASS]" RESET "\n", fullname);
- return 0;
- case 11:
- note = " (SIGSEGV)";
- break;
+ if (WIFEXITED(status)) {
+ switch ((ec = WEXITSTATUS(status))) {
+ case 0:
+ printf("%s " GREEN "[PASS]" RESET "\n", fullname);
+ return 0;
+ default:
+ printf("%s " RED "[FAIL] %d" RESET "\n", fullname, ec);
+ return ec;
+ }
+ } else if (WIFSIGNALED(status)) {
+ int ec = WTERMSIG(status);
+ printf("%s " RED "[FAIL] signaled %d" RESET "\n", fullname, ec);
+ return ec;
}
- printf("%s " RED "[FAIL] %d%s" RESET "\n", fullname, ec, note);
return ec;
}
}
diff --git a/02-usart/test_harness/test_harness.h b/02-usart/test_harness/test_harness.h
index 0a218f8..74f3faa 100644
--- a/02-usart/test_harness/test_harness.h
+++ b/02-usart/test_harness/test_harness.h
@@ -20,20 +20,18 @@ typedef struct {
fprintf(stderr, fmt "\n", v1, v2)
#define FORMAT_STRING(v1, v2) \
- _Pragma("GCC diagnostic push"); \
- _Pragma("GCC diagnostic ignored \"-Wpointer-to-int-cast\""); \
- _Generic(v1, long: GENPR("%ld == %ld", v1, v2), \
- unsigned long: GENPR("%lu == %lu", v1, v2), \
- int: GENPR("%d == %d", v1, v2), \
- unsigned int: GENPR("%u == %u", v1, v2), \
- short: GENPR("%h == %h", v1, v2), \
- unsigned short: GENPR("%hu == %hu", v1, v2), \
- char: GENPR("%c == %c", v1, v2), \
- double: GENPR("%f == %f", v1, v2), \
- unsigned char: fprintf( \
- stderr, "%02x == %02x\n", (unsigned int) v1, (unsigned int) v2),\
- default: GENPR("%p == %p\n", v1, v2)); \
- _Pragma("GCC diagnostic pop")
+ fprintf( \
+ stderr, \
+ _Generic((v1), long: "%ld == %ld\n", \
+ unsigned long: "%lu == %lu\n", \
+ int: "%d == %d\n", \
+ unsigned int: "%u == %u\n", \
+ short: "%hu == %hu\n", \
+ unsigned short: "%hu == %hu\n", \
+ char: "%c == %c\n", \
+ double: "%f == %f\n", \
+ default: "%p == %p\n"), \
+ (v1), (v2)); \
#define TRY_PRINT_TYPE(v1, v2, type, fmt) \
else if (__builtin_types_compatible_p(typeof (v1), type)) { \