?? check_check_fork.c
字號:
#include <sys/types.h>#include <unistd.h>#include <stdlib.h>#include <check.h>#include "check_check.h"static int counter;static pid_t mypid;static void fork_sub_setup (void){ counter = 0; mypid = getpid();}START_TEST(test_inc){ counter++;}END_TESTSTART_TEST(test_nofork_sideeffects){ fail_unless(counter == 1, "Side effects not seen across tests");}END_TESTSTART_TEST(test_nofork_pid){ fail_unless(mypid == getpid(), "Unit test is in a different adresss space from setup code");}END_TESTstatic Suite *make_fork_sub_suite (void){ Suite *s; TCase *tc; s = suite_create("Fork Sub"); tc = tcase_create("Core"); suite_add_tcase (s, tc); tcase_add_unchecked_fixture(tc, fork_sub_setup,NULL); tcase_add_test(tc,test_inc); tcase_add_test(tc,test_nofork_sideeffects); tcase_add_test(tc,test_nofork_pid); return s;}static SRunner *fork_sr;static SRunner *fork_dummy_sr;void fork_setup (void){ fork_sr = srunner_create(make_fork_sub_suite()); fork_dummy_sr = srunner_create (make_fork_sub_suite()); srunner_set_fork_status(fork_sr,CK_NOFORK); srunner_run_all(fork_sr,CK_SILENT);}void fork_teardown (void){ srunner_free(fork_sr);}START_TEST(test_default_fork){ fail_unless(srunner_fork_status(fork_dummy_sr) == CK_FORK, "Default fork status not set correctly");}END_TESTSTART_TEST(test_set_fork){ srunner_set_fork_status(fork_dummy_sr, CK_NOFORK); fail_unless(srunner_fork_status(fork_dummy_sr) == CK_NOFORK, "Fork status not changed correctly");}END_TESTSTART_TEST(test_env){ putenv((char *) "CK_FORK=no"); fail_unless(srunner_fork_status(fork_dummy_sr) == CK_NOFORK, "Fork status does not obey environment variable");}END_TESTSTART_TEST(test_env_and_set){ putenv((char *) "CK_FORK=no"); srunner_set_fork_status(fork_dummy_sr, CK_FORK); fail_unless(srunner_fork_status(fork_dummy_sr) == CK_FORK, "Explicit setting of fork status should override env");}END_TESTSTART_TEST(test_nofork){ fail_unless(srunner_ntests_failed(fork_sr) == 0, "Errors on nofork test");}END_TESTSuite *make_fork_suite(void){ Suite *s; TCase *tc; s = suite_create("Fork"); tc = tcase_create("Core"); suite_add_tcase(s, tc); tcase_add_test(tc,test_default_fork); tcase_add_test(tc,test_set_fork); tcase_add_test(tc,test_env); tcase_add_test(tc,test_env_and_set); tcase_add_test(tc,test_nofork); return s;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -