r300g/tests: Exit test runner with a valid status code

This way make check can report whether or not the tests pass.

NOTE: This is a candidate for the stable branches.

Reviewed-by: Marek Olšák <maraeo@gmail.com>
This commit is contained in:
Tom Stellard 2013-02-10 00:15:10 -05:00
parent 5355fc1e87
commit bcf2e157ca
5 changed files with 22 additions and 6 deletions

View file

@ -27,7 +27,17 @@
#include "r300_compiler_tests.h" #include "r300_compiler_tests.h"
#include <stdlib.h>
int main(int argc, char ** argv) int main(int argc, char ** argv)
{ {
radeon_compiler_util_run_tests(); unsigned pass = 1;
pass &= radeon_compiler_optimize_run_tests();
pass &= radeon_compiler_util_run_tests();
if (pass) {
return EXIT_SUCCESS;
} else {
return EXIT_FAILURE;
}
} }

View file

@ -25,4 +25,5 @@
* *
*/ */
void radeon_compiler_util_run_tests(void); unsigned radeon_compiler_optimize_run_tests(void);
unsigned radeon_compiler_util_run_tests(void);

View file

@ -94,11 +94,11 @@ static void test_runner_rc_inst_can_use_presub(struct test_result * result)
"MAD temp[0].xyz, temp[2].xyz_, -temp[3].xxx_, input[5].xyz_;"); "MAD temp[0].xyz, temp[2].xyz_, -temp[3].xxx_, input[5].xyz_;");
} }
void radeon_compiler_util_run_tests() unsigned radeon_compiler_util_run_tests()
{ {
struct test tests[] = { struct test tests[] = {
{"rc_inst_can_use_presub()", test_runner_rc_inst_can_use_presub}, {"rc_inst_can_use_presub()", test_runner_rc_inst_can_use_presub},
{NULL, NULL} {NULL, NULL}
}; };
run_tests(tests); return run_tests(tests);
} }

View file

@ -31,16 +31,21 @@
#include "unit_test.h" #include "unit_test.h"
void run_tests(struct test tests[]) unsigned run_tests(struct test tests[])
{ {
int i; int i;
unsigned pass = 1;
for (i = 0; tests[i].name; i++) { for (i = 0; tests[i].name; i++) {
printf("Test %s\n", tests[i].name); printf("Test %s\n", tests[i].name);
memset(&tests[i].result, 0, sizeof(tests[i].result)); memset(&tests[i].result, 0, sizeof(tests[i].result));
tests[i].test_func(&tests[i].result); tests[i].test_func(&tests[i].result);
printf("Test %s (%d/%d) pass\n", tests[i].name, printf("Test %s (%d/%d) pass\n", tests[i].name,
tests[i].result.pass, tests[i].result.test_count); tests[i].result.pass, tests[i].result.test_count);
if (tests[i].result.pass != tests[i].result.test_count) {
pass = 0;
}
} }
return pass;
} }
void test_begin(struct test_result * result) void test_begin(struct test_result * result)

View file

@ -37,7 +37,7 @@ struct test {
struct test_result result; struct test_result result;
}; };
void run_tests(struct test tests[]); unsigned run_tests(struct test tests[]);
void test_begin(struct test_result * result); void test_begin(struct test_result * result);
void test_check(struct test_result * result, int cond); void test_check(struct test_result * result, int cond);