summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2010-03-18 21:08:32 -0400
committerNed Batchelder <ned@nedbatchelder.com>2010-03-18 21:08:32 -0400
commit5d1c0be90f612fecd1eb4128f5c0ab40219bf07a (patch)
tree64d2b730635e9dafed4a9ab34720f0cc991457c9 /test
parent46d0590f1c473aa15352b437a7a037ec4b7fa120 (diff)
downloadpython-coveragepy-5d1c0be90f612fecd1eb4128f5c0ab40219bf07a.tar.gz
A test for issue #56.
Diffstat (limited to 'test')
-rw-r--r--test/test_process.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/test_process.py b/test/test_process.py
index e8e8c8b..3fc5f34 100644
--- a/test/test_process.py
+++ b/test/test_process.py
@@ -203,3 +203,43 @@ class ProcessTest(CoverageTest):
self.assertMultiLineEqual(out, "about to exit..\n")
self.assertEqual(status, status2)
self.assertEqual(status, 17)
+
+ if hasattr(os, 'fork'):
+ def test_fork(self):
+ self.make_file("fork.py", """\
+ import os
+
+ def child():
+ print('Child!')
+
+ def main():
+ ret = os.fork()
+
+ if ret == 0:
+ child()
+ else:
+ os.waitpid(ret, 0)
+
+ main()
+ """)
+
+ out = self.run_command("coverage run -p fork.py")
+ self.assertEqual(out, 'Child!\n')
+ self.assertFalse(os.path.exists(".coverage"))
+
+ # After running the forking program, there should be two
+ # .coverage.machine.123 files.
+ self.assertEqual(self.number_of_data_files(), 2)
+
+ # Combine the parallel coverage data files into .coverage .
+ self.run_command("coverage -c")
+ self.assertTrue(os.path.exists(".coverage"))
+
+ # After combining, there should be only the .coverage file.
+ self.assertEqual(self.number_of_data_files(), 1)
+
+ # Read the coverage file and see that b_or_c.py has all 7 lines
+ # executed.
+ data = coverage.CoverageData()
+ data.read_file(".coverage")
+ self.assertEqual(data.summary()['fork.py'], 7)