120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Python
		
	
	
	
| import py
 | |
| 
 | |
| class TestDistribution:
 | |
|     def test_manytests_to_one_popen(self, testdir):
 | |
|         p1 = testdir.makepyfile("""
 | |
|                 import py
 | |
|                 def test_fail0():
 | |
|                     assert 0
 | |
|                 def test_fail1():
 | |
|                     raise ValueError()
 | |
|                 def test_ok():
 | |
|                     pass
 | |
|                 def test_skip():
 | |
|                     py.test.skip("hello")
 | |
|             """, 
 | |
|         )
 | |
|         result = testdir.runpytest(p1, '-d', '--tx=popen', '--tx=popen')
 | |
|         result.stdout.fnmatch_lines([
 | |
|             "*0*popen*Python*",
 | |
|             "*1*popen*Python*",
 | |
|             "*2 failed, 1 passed, 1 skipped*",
 | |
|         ])
 | |
|         assert result.ret == 1
 | |
| 
 | |
|     def test_dist_conftest_specified(self, testdir):
 | |
|         p1 = testdir.makepyfile("""
 | |
|                 import py
 | |
|                 def test_fail0():
 | |
|                     assert 0
 | |
|                 def test_fail1():
 | |
|                     raise ValueError()
 | |
|                 def test_ok():
 | |
|                     pass
 | |
|                 def test_skip():
 | |
|                     py.test.skip("hello")
 | |
|             """, 
 | |
|         )
 | |
|         testdir.makeconftest("""
 | |
|             option_tx = 'popen popen popen'.split()
 | |
|         """)
 | |
|         result = testdir.runpytest(p1, '-d')
 | |
|         result.stdout.fnmatch_lines([
 | |
|             "*0*popen*Python*",
 | |
|             "*1*popen*Python*",
 | |
|             "*2*popen*Python*",
 | |
|             "*2 failed, 1 passed, 1 skipped*",
 | |
|         ])
 | |
|         assert result.ret == 1
 | |
| 
 | |
|     def test_dist_tests_with_crash(self, testdir):
 | |
|         if not hasattr(py.std.os, 'kill'):
 | |
|             py.test.skip("no os.kill")
 | |
|         
 | |
|         p1 = testdir.makepyfile("""
 | |
|                 import py
 | |
|                 def test_fail0():
 | |
|                     assert 0
 | |
|                 def test_fail1():
 | |
|                     raise ValueError()
 | |
|                 def test_ok():
 | |
|                     pass
 | |
|                 def test_skip():
 | |
|                     py.test.skip("hello")
 | |
|                 def test_crash():
 | |
|                     import time
 | |
|                     import os
 | |
|                     time.sleep(0.5)
 | |
|                     os.kill(os.getpid(), 15)
 | |
|             """
 | |
|         )
 | |
|         result = testdir.runpytest(p1, '-d', '--tx=3*popen')
 | |
|         result.stdout.fnmatch_lines([
 | |
|             "*popen*Python*",
 | |
|             "*popen*Python*",
 | |
|             "*popen*Python*",
 | |
|             "*node down*",
 | |
|             "*3 failed, 1 passed, 1 skipped*"
 | |
|         ])
 | |
|         assert result.ret == 1
 | |
| 
 | |
|     def test_distribution_rsyncdirs_example(self, testdir):
 | |
|         source = testdir.mkdir("source")
 | |
|         dest = testdir.mkdir("dest")
 | |
|         subdir = source.mkdir("example_pkg")
 | |
|         subdir.ensure("__init__.py")
 | |
|         p = subdir.join("test_one.py")
 | |
|         p.write("def test_5(): assert not __file__.startswith(%r)" % str(p))
 | |
|         result = testdir.runpytest("-d", "--rsyncdir=%(subdir)s" % locals(), 
 | |
|             "--tx=popen//chdir=%(dest)s" % locals(), p)
 | |
|         assert result.ret == 0
 | |
|         result.stdout.fnmatch_lines([
 | |
|             "*0* *popen*platform*",
 | |
|             #"RSyncStart: [G1]",
 | |
|             #"RSyncFinished: [G1]",
 | |
|             "*1 passed*"
 | |
|         ])
 | |
|         assert dest.join(subdir.basename).check(dir=1)
 | |
| 
 | |
|     def test_dist_each(self, testdir):
 | |
|         interpreters = []
 | |
|         for name in ("python2.4", "python2.5"):
 | |
|             interp = py.path.local.sysfind(name)
 | |
|             if interp is None:
 | |
|                 py.test.skip("%s not found" % name)
 | |
|             interpreters.append(interp)
 | |
| 
 | |
|         testdir.makepyfile(__init__="", test_one="""
 | |
|             import sys
 | |
|             def test_hello():
 | |
|                 print("%s...%s" % sys.version_info[:2])
 | |
|                 assert 0
 | |
|         """)
 | |
|         args = ["--dist=each"]
 | |
|         args += ["--tx", "popen//python=%s" % interpreters[0]]
 | |
|         args += ["--tx", "popen//python=%s" % interpreters[1]]
 | |
|         result = testdir.runpytest(*args)
 | |
|         s = result.stdout.str()
 | |
|         assert "2.4" in s
 | |
|         assert "2.5" in s
 |