[Python-checkins] python/dist/src/Lib/test test_subprocess.py, 1.7, 1.8

tim_one at users.sourceforge.net tim_one at users.sourceforge.net
Wed Oct 13 05:43:42 CEST 2004


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19774/Lib/test
Modified Files:
	test_subprocess.py 
Log Message:
Kill several problems at once: test_poll() failed sometimes for me.
Turns out the mysterious "expected output" file contained exactly N dots,
because test_poll() has a loop that *usually* went around N times,
printing one dot on each loop trip. But there's no guarantee of that,
because the exact value of N depended on the vagaries of scheduling
time.sleep()s across two different processes. So stopped printing dots,
and got rid of the expected output file. Add a loop counter instead,
and verify that the loop goes around at least a couple of times. Also
cut the minimum time needed for this test from 4 seconds to 1.
Index: test_subprocess.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_subprocess.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- test_subprocess.py	13 Oct 2004 03:29:54 -0000	1.7
+++ test_subprocess.py	13 Oct 2004 03:43:40 -0000	1.8
@@ -56,7 +56,7 @@
 
 def test_stdout_none(self):
 # .stdout is None when not redirected
- p = subprocess.Popen([sys.executable, "-c", 
+ p = subprocess.Popen([sys.executable, "-c",
 'print " this bit of output is from a '
 'test of stdout in a different '
 'process ..."'],
@@ -350,11 +350,16 @@
 
 def test_poll(self):
 p = subprocess.Popen([sys.executable,
- "-c", "import time; time.sleep(4)"])
- while p.poll() == None:
- sys.stdout.write(".")
- sys.stdout.flush()
- time.sleep(0.5)
+ "-c", "import time; time.sleep(1)"])
+ count = 0
+ while p.poll() is None:
+ time.sleep(0.1)
+ count += 1
+ # We expect that the poll loop probably went around about 10 times,
+ # but, based on system scheduling we can't control, it's possible
+ # poll() never returned None. It "should be" very rare that it
+ # didn't go around at least twice.
+ self.assert_(count >= 2)
 # Subsequent invocations should just return the returncode
 self.assertEqual(p.poll(), 0)
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /