static void fail(int t_no, char *frmt, ...) { char buf[10]; size_t bufsz = sizeof(buf); va_list va; THR_MTX_LOCK(tc_mutex); va_start(va, frmt); #if HAVE_VSNPRINTF vsnprintf(err_buf, ERR_BUF_SZ, frmt, va); #else vsprintf(err_buf, frmt, va); #endif va_end(va); tc_failed = 1; if (enif_getenv("ERL_ABORT_ON_FAILURE", buf, &bufsz) == 0 && strcmp("true", buf) == 0) { fprintf(stderr, "Testcase \"%s\" failed: %s\n", testcase_name(), err_buf); abort(); } exit_thread(t_no, 0); }
ErlDrvData testcase_drv_start(ErlDrvPort port, char *command) { InternalTestCaseState_t *itcs = (InternalTestCaseState_t *) driver_alloc(sizeof(InternalTestCaseState_t)); if (!itcs) { return ERL_DRV_ERROR_GENERAL; } itcs->visible.testcase_name = testcase_name(); itcs->visible.extra = NULL; itcs->port = port; itcs->result = TESTCASE_FAILED; itcs->comment = ""; return (ErlDrvData) itcs; }