-
- list_for_each(&m->compile_ok_tests, i, list) {
- cmdout = compile(score, m, i, false, false, keep);
- if (cmdout) {
- score->error = "Failed to compile tests";
- score_file_error(score, i, 0, cmdout);
- }
- }
-
- list_for_each(&m->run_tests, i, list) {
- cmdout = compile(score, m, i, false, false, keep);
- if (cmdout) {
- score->error = "Failed to compile tests";
- score_file_error(score, i, 0, cmdout);
- }
- }
-
- list_for_each(&m->api_tests, i, list) {
- cmdout = compile(score, m, i, false, true, keep);
- if (cmdout) {
- score->error = "Failed to compile tests";
- score_file_error(score, i, 0, cmdout);
+ struct list_head *list;
+ bool errors = false, warnings = false;
+
+ foreach_ptr(list, &m->compile_ok_tests, &m->run_tests, &m->api_tests) {
+ list_for_each(list, i, list) {
+ if (!compile(score, m, i, false, list == &m->api_tests,
+ keep, &cmdout)) {
+ score->error = "Failed to compile tests";
+ score_file_error(score, i, 0, cmdout);
+ errors = true;
+ } else if (!streq(cmdout, "")) {
+ score->error = "Test compiled with warnings";
+ score_file_error(score, i, 0, cmdout);
+ warnings = true;
+ }