]> granicus.if.org Git - check/commitdiff
Post an error if a fork mode is set and fork is unavailable
authorbrarcher <brarcher@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Sun, 22 Sep 2013 21:27:53 +0000 (21:27 +0000)
committerbrarcher <brarcher@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Sun, 22 Sep 2013 21:27:53 +0000 (21:27 +0000)
The default fork mode if fork is unavailable is CK_NOFORK.
Someone trying to set a fork mode without fork available will
only result in failures running tests. Posting an error up
front before tests are run makes more sense.

git-svn-id: svn+ssh://svn.code.sf.net/p/check/code/trunk@775 64e312b2-a51f-0410-8e61-82d0ca0eb02a

src/check_run.c
tests/check_check_fork.c

index 944a41efe2b0a4d9b2c3ed8fd3c1112ff66a6f59..b516471942f484e2c4304195c626cecad7a2c8b7 100644 (file)
@@ -594,6 +594,13 @@ enum fork_status srunner_fork_status (SRunner *sr)
 
 void srunner_set_fork_status (SRunner *sr, enum fork_status fstat)
 {
+#if !defined(HAVE_FORK)
+  /* If fork() is unavailable, do not allow a fork mode to be set */
+  if (fstat != CK_NOFORK)
+  {
+         eprintf("This version does not support fork", __FILE__, __LINE__);
+  }
+#endif /* ! HAVE_FORK */
   sr->fstat = fstat;
 }
 
index 75907fdb3fc60622f33cd71c64a5eb09ead81ad4..c09fa5528c86df5017eedd7981c6474f9695377b 100644 (file)
@@ -81,7 +81,7 @@ START_TEST(test_default_fork)
 }
 END_TEST
 
-START_TEST(test_set_fork)
+START_TEST(test_set_nofork)
 {
   srunner_set_fork_status(fork_dummy_sr, CK_NOFORK);
   ck_assert_msg(srunner_fork_status(fork_dummy_sr) == CK_NOFORK,
@@ -89,6 +89,12 @@ START_TEST(test_set_fork)
 }
 END_TEST
 
+/*
+ * The following tests will fail if fork is unavailable, as
+ * attempting to set the fork mode as anything but
+ * CK_NOFORK is considered an error.
+ */
+#if defined(HAVE_FORK)
 START_TEST(test_env)
 {
   putenv((char *) "CK_FORK=no");
@@ -105,7 +111,7 @@ START_TEST(test_env_and_set)
              "Explicit setting of fork status should override env");
 }
 END_TEST
-
+#endif /* HAVE_FORK */
 
 START_TEST(test_nofork)
 {
@@ -124,9 +130,11 @@ Suite *make_fork_suite(void)
 
   suite_add_tcase(s, tc);
   tcase_add_test(tc,test_default_fork);
-  tcase_add_test(tc,test_set_fork);
+  tcase_add_test(tc,test_set_nofork);
+#if defined(HAVE_FORK)
   tcase_add_test(tc,test_env);
   tcase_add_test(tc,test_env_and_set);
+#endif /* HAVE_FORK */
   tcase_add_test(tc,test_nofork);
   
   return s;