bool TestBatchRunner_Run_Batch_IMP(TestBatchRunner *self, TestBatch *batch) { struct try_run_tests_context args; args.runner = self; args.batch = batch; Err *err = Err_trap(S_try_run_tests, &args); bool failed = false; if (err) { failed = true; String *mess = Err_Get_Mess(err); Err_warn_mess((String*)INCREF(mess)); } if (self->num_failed > 0) { failed = true; TestFormatter_batch_comment(self->formatter, "%d/%d tests failed.\n", self->num_failed, self->test_num); } if (self->test_num != self->num_planned) { failed = true; TestFormatter_batch_comment(self->formatter, "Bad plan: You planned %d tests but ran" " %d.\n", self->num_planned, self->test_num); } return !failed; }
void Err_warn_at(const char *file, int line, const char *func, const char *pattern, ...) { va_list args; va_start(args, pattern); String *message = S_vmake_mess(file, line, func, pattern, args); va_end(args); Err_warn_mess(message); }
void CFISH_WARN(char *pattern, ...) { va_list args; va_start(args, pattern); String *message = S_str_vnewf(pattern, args); va_end(args); Err_warn_mess(message); }
void Err_warn_at(const char *file, int line, const char *func, const char *pattern, ...) { va_list args; CharBuf *message = CB_new(0); va_start(args, pattern); S_vcat_mess(message, file, line, func, pattern, args); va_end(args); Err_warn_mess(message); }
void CFISH_WARN(char *pattern, ...) { va_list args; CharBuf *const message = CB_new(strlen(pattern) + 10); va_start(args, pattern); CB_VCatF(message, pattern, args); va_end(args); Err_warn_mess(message); }