END_TEST START_TEST(test_ppack_multictx) { int filedes[2]; CtxMsg cmsg; LocMsg lmsg; RcvMsg *rmsg; cmsg.ctx = CK_CTX_SETUP; lmsg.line = 5; lmsg.file = (char *) "abc123.c"; pipe (filedes); ppack (filedes[1], CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (filedes[1], CK_MSG_LOC, (CheckMsg *) &lmsg); cmsg.ctx = CK_CTX_TEST; ppack (filedes[1], CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (filedes[1], CK_MSG_LOC, (CheckMsg *) &lmsg); cmsg.ctx = CK_CTX_TEARDOWN; ppack (filedes[1], CK_MSG_CTX, (CheckMsg *) &cmsg); close (filedes[1]); rmsg = punpack (filedes[0]); fail_unless (rmsg->test_line == 5, "Test loc not being preserved on CTX change"); fail_unless (rmsg->fixture_line == -1, "Fixture not reset on CTX change"); if (rmsg != NULL) free (rmsg); }
END_TEST START_TEST(test_ppack_noctx) { FILE * result_file; char * result_file_name = NULL; LocMsg lmsg; FailMsg fmsg; RcvMsg *rmsg; lmsg.file = (char *) "abc123.c"; lmsg.line = 10; fmsg.msg = (char *) "oops"; result_file = open_tmp_file(&result_file_name); free(result_file_name); ppack (result_file, CK_MSG_LOC, (CheckMsg *) &lmsg); ppack (result_file, CK_MSG_FAIL, (CheckMsg *) &fmsg); rewind(result_file); rmsg = punpack (result_file); ck_assert_msg (rmsg == NULL, "Result should be NULL with no CTX"); if (rmsg != NULL) free (rmsg); fclose(result_file); }
END_TEST START_TEST(test_ppack_nofail) { FILE * result_file; char * result_file_name = NULL; CtxMsg cmsg; LocMsg lmsg; RcvMsg *rmsg; lmsg.file = (char *) "abc123.c"; lmsg.line = 10; cmsg.ctx = CK_CTX_SETUP; result_file = open_tmp_file(&result_file_name); free(result_file_name); ppack (result_file, CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (result_file, CK_MSG_LOC, (CheckMsg *) &lmsg); rewind (result_file); rmsg = punpack (result_file); ck_assert_msg (rmsg != NULL && rmsg->msg == NULL, "Failure result should be NULL with no failure message"); free (rmsg); fclose(result_file); }
END_TEST START_TEST(test_ppack_multictx) { FILE * result_file; char * result_file_name = NULL; CtxMsg cmsg; LocMsg lmsg; RcvMsg *rmsg; cmsg.ctx = CK_CTX_SETUP; lmsg.line = 5; lmsg.file = (char *) "abc123.c"; result_file = open_tmp_file(&result_file_name); free(result_file_name); ppack (result_file, CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (result_file, CK_MSG_LOC, (CheckMsg *) &lmsg); cmsg.ctx = CK_CTX_TEST; ppack (result_file, CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (result_file, CK_MSG_LOC, (CheckMsg *) &lmsg); cmsg.ctx = CK_CTX_TEARDOWN; ppack (result_file, CK_MSG_CTX, (CheckMsg *) &cmsg); rewind(result_file); rmsg = punpack (result_file); ck_assert_msg (rmsg != NULL && rmsg->test_line == 5, "Test loc not being preserved on CTX change"); ck_assert_msg (rmsg->fixture_line == -1, "Fixture not reset on CTX change"); free (rmsg); fclose(result_file); }
void send_ctx_info(enum ck_result_ctx ctx) { CtxMsg cmsg; cmsg.ctx = ctx; ppack(fileno(get_pipe()), CK_MSG_CTX, (CheckMsg *) &cmsg); }
void send_duration_info(int duration) { DurationMsg dmsg; dmsg.duration = duration; ppack(get_pipe(), CK_MSG_DURATION, (CheckMsg *) & dmsg); }
void send_failure_info(const char *msg) { FailMsg fmsg; fmsg.msg = (char *) msg; ppack(fileno(get_pipe()), CK_MSG_FAIL, (CheckMsg *) &fmsg); }
END_TEST START_TEST(test_ppack_onlyctx) { FILE * result_file; char * result_file_name = NULL; CtxMsg cmsg; RcvMsg *rmsg; cmsg.ctx = CK_CTX_SETUP; result_file = open_tmp_file(&result_file_name); free(result_file_name); ppack (result_file, CK_MSG_CTX, (CheckMsg *) &cmsg); rewind(result_file); rmsg = punpack (result_file); ck_assert_msg (rmsg != NULL && rmsg->msg == NULL, "Result message should be NULL with only CTX"); ck_assert_msg (rmsg->fixture_line == -1, "Result loc line should be -1 with only CTX"); ck_assert_msg (rmsg->test_line == -1, "Result loc line should be -1 with only CTX"); if (rmsg != NULL) free (rmsg); fclose(result_file); }
void send_loc_info(const char * file, int line) { LocMsg lmsg; lmsg.file = (char *) file; lmsg.line = line; ppack(fileno(get_pipe()), CK_MSG_LOC, (CheckMsg *) &lmsg); }
void send_failure_info(const char *msg) { FailMsg fmsg; fmsg.msg = strdup(msg); ppack(get_pipe(), CK_MSG_FAIL, (CheckMsg *) & fmsg); free(fmsg.msg); }
END_TEST #define BIG_MSG_LEN 1037 START_TEST(test_ppack_big) { FILE * result_file; char * result_file_name = NULL; CtxMsg cmsg; LocMsg lmsg; FailMsg fmsg; RcvMsg *rmsg; cmsg.ctx = CK_CTX_TEST; lmsg.file = (char *)emalloc (BIG_MSG_LEN); memset (lmsg.file,'a',BIG_MSG_LEN - 1); lmsg.file[BIG_MSG_LEN - 1] = '\0'; lmsg.line = 10; fmsg.msg = (char *)emalloc (BIG_MSG_LEN); memset (fmsg.msg, 'a', BIG_MSG_LEN - 1); fmsg.msg[BIG_MSG_LEN - 1] = '\0'; result_file = open_tmp_file(&result_file_name); free(result_file_name); ppack (result_file, CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (result_file, CK_MSG_LOC, (CheckMsg *) &lmsg); ppack (result_file, CK_MSG_FAIL, (CheckMsg *) &fmsg); rewind (result_file); rmsg = punpack (result_file); ck_assert_msg (rmsg != NULL, "Return value from ppack should always be malloc'ed"); ck_assert_msg (rmsg->lastctx == CK_CTX_TEST, "CTX not set correctly in ppack"); ck_assert_msg (rmsg->test_line == 10, "Test line not received correctly"); ck_assert_msg (strcmp (rmsg->test_file, lmsg.file) == 0, "Test file not received correctly"); ck_assert_msg (strcmp (rmsg->msg, fmsg.msg) == 0, "Failure message not received correctly"); free (rmsg); free (lmsg.file); free (fmsg.msg); fclose(result_file); }
void send_loc_info(const char *file, int line) { LocMsg lmsg; lmsg.file = strdup(file); lmsg.line = line; ppack(get_pipe(), CK_MSG_LOC, (CheckMsg *) & lmsg); free(lmsg.file); }
END_TEST /* the ppack probably means 'pipe' pack */ #if defined(HAVE_FORK) && HAVE_FORK==1 START_TEST(test_ppack) { FILE * result_file; char * result_file_name = NULL; CtxMsg cmsg; LocMsg lmsg; FailMsg fmsg; RcvMsg *rmsg; cmsg.ctx = CK_CTX_TEST; lmsg.file = (char *) "abc123.c"; lmsg.line = 10; fmsg.msg = (char *) "oops"; result_file = open_tmp_file(&result_file_name); free(result_file_name); ppack (result_file, CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (result_file, CK_MSG_LOC, (CheckMsg *) &lmsg); ppack (result_file, CK_MSG_FAIL, (CheckMsg *) &fmsg); rewind(result_file); rmsg = punpack (result_file); ck_assert_msg (rmsg != NULL, "Return value from ppack should always be malloc'ed"); ck_assert_msg (rmsg->lastctx == CK_CTX_TEST, "CTX not set correctly in ppack"); ck_assert_msg (rmsg->fixture_line == -1, "Default fixture loc not correct"); ck_assert_msg (rmsg->fixture_file == NULL, "Default fixture loc not correct"); ck_assert_msg (rmsg->test_line == 10, "Test line not received correctly"); ck_assert_msg (strcmp(rmsg->test_file,"abc123.c") == 0, "Test file not received correctly"); ck_assert_msg (strcmp(rmsg->msg, "oops") == 0, "Failure message not received correctly"); free(rmsg); fclose(result_file); }
END_TEST #define BIG_MSG_LEN 1037 START_TEST(test_ppack_big) { int filedes[2]; CtxMsg cmsg; LocMsg lmsg; FailMsg fmsg; RcvMsg *rmsg; cmsg.ctx = CK_CTX_TEST; lmsg.file = emalloc (BIG_MSG_LEN); memset (lmsg.file,'a',BIG_MSG_LEN - 1); lmsg.file[BIG_MSG_LEN - 1] = '\0'; lmsg.line = 10; fmsg.msg = emalloc (BIG_MSG_LEN); memset (fmsg.msg, 'a', BIG_MSG_LEN - 1); fmsg.msg[BIG_MSG_LEN - 1] = '\0'; pipe (filedes); ppack (filedes[1], CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (filedes[1], CK_MSG_LOC, (CheckMsg *) &lmsg); ppack (filedes[1], CK_MSG_FAIL, (CheckMsg *) &fmsg); close (filedes[1]); rmsg = punpack (filedes[0]); fail_unless (rmsg != NULL, "Return value from ppack should always be malloc'ed"); fail_unless (rmsg->lastctx == CK_CTX_TEST, "CTX not set correctly in ppack"); fail_unless (rmsg->test_line == 10, "Test line not received correctly"); fail_unless (strcmp (rmsg->test_file, lmsg.file) == 0, "Test file not received correctly"); fail_unless (strcmp (rmsg->msg, fmsg.msg) == 0, "Failure message not received correctly"); free (rmsg); free (lmsg.file); free (fmsg.msg); }
END_TEST START_TEST(test_ppack) { int filedes[2]; CtxMsg cmsg; LocMsg lmsg; FailMsg fmsg; RcvMsg *rmsg; cmsg.ctx = CK_CTX_TEST; lmsg.file = (char *) "abc123.c"; lmsg.line = 10; fmsg.msg = (char *) "oops"; pipe (filedes); ppack (filedes[1], CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (filedes[1], CK_MSG_LOC, (CheckMsg *) &lmsg); ppack (filedes[1], CK_MSG_FAIL, (CheckMsg *) &fmsg); close (filedes[1]); rmsg = punpack (filedes[0]); fail_unless (rmsg != NULL, "Return value from ppack should always be malloc'ed"); fail_unless (rmsg->lastctx == CK_CTX_TEST, "CTX not set correctly in ppack"); fail_unless (rmsg->fixture_line == -1, "Default fixture loc not correct"); fail_unless (rmsg->fixture_file == NULL, "Default fixture loc not correct"); fail_unless (rmsg->test_line == 10, "Test line not received correctly"); fail_unless (strcmp(rmsg->test_file,"abc123.c") == 0, "Test file not received correctly"); fail_unless (strcmp(rmsg->msg, "oops") == 0, "Failure message not received correctly"); free(rmsg); }
END_TEST START_TEST(test_ppack_nofail) { int filedes[2]; CtxMsg cmsg; LocMsg lmsg; RcvMsg *rmsg; lmsg.file = (char *) "abc123.c"; lmsg.line = 10; cmsg.ctx = CK_CTX_SETUP; pipe (filedes); ppack (filedes[1], CK_MSG_CTX, (CheckMsg *) &cmsg); ppack (filedes[1], CK_MSG_LOC, (CheckMsg *) &lmsg); close (filedes[1]); rmsg = punpack (filedes[0]); fail_unless (rmsg->msg == NULL, "Failure result should be NULL with no failure message"); if (rmsg != NULL) free (rmsg); }
END_TEST START_TEST(test_ppack_noctx) { int filedes[2]; LocMsg lmsg; FailMsg fmsg; RcvMsg *rmsg; lmsg.file = (char *) "abc123.c"; lmsg.line = 10; fmsg.msg = (char *) "oops"; pipe (filedes); ppack (filedes[1], CK_MSG_LOC, (CheckMsg *) &lmsg); ppack (filedes[1], CK_MSG_FAIL, (CheckMsg *) &fmsg); close (filedes[1]); rmsg = punpack (filedes[0]); fail_unless (rmsg == NULL, "Result should be NULL with no CTX"); if (rmsg != NULL) free (rmsg); }
END_TEST START_TEST(test_ppack_onlyctx) { int filedes[2]; CtxMsg cmsg; RcvMsg *rmsg; cmsg.ctx = CK_CTX_SETUP; pipe (filedes); ppack (filedes[1], CK_MSG_CTX, (CheckMsg *) &cmsg); close (filedes[1]); rmsg = punpack (filedes[0]); fail_unless (rmsg->msg == NULL, "Result message should be NULL with only CTX"); fail_unless (rmsg->fixture_line == -1, "Result loc line should be -1 with only CTX"); fail_unless (rmsg->test_line == -1, "Result loc line should be -1 with only CTX"); if (rmsg != NULL) free (rmsg); }