check_check_fork.c

来自「c unit test framework」· C语言 代码 · 共 128 行

C
128
字号
#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 + =
减小字号Ctrl + -
显示快捷键?