[pypy-commit] pypy refine-testrunner: start to split up the execute_test function

RonnyPfannschmidt noreply at buildbot.pypy.org
Sun Jul 1 16:03:27 CEST 2012


Author: Ronny Pfannschmidt <Ronny.Pfannschmidt at gmx.de>
Branch: refine-testrunner
Changeset: r55882:64db80b9c934
Date: 2012-07-01 16:02 +0200
http://bitbucket.org/pypy/pypy/changeset/64db80b9c934/

Log:	start to split up the execute_test function

diff --git a/testrunner/runner.py b/testrunner/runner.py
--- a/testrunner/runner.py
+++ b/testrunner/runner.py
@@ -9,11 +9,7 @@
 WRITE_MODE = 'wb'
 
 
-
-
-def execute_test(cwd, test, out, logfname, interp, test_driver,
-                 do_dry_run=False, timeout=None,
-                 _win32=(sys.platform=='win32')):
+def execute_args(test, logfname, interp, test_driver):
     args = interp + test_driver
     args += ['-p', 'resultlog',
              '--resultlog=%s' % logfname,
@@ -21,15 +17,20 @@
              test]
 
     args = map(str, args)
+    return args
+
+
+
+def execute_test(cwd, test, out, logfname, interp, test_driver,
+                 runfunc, timeout=None,
+                 _win32=(sys.platform=='win32')):
+    args = execute_args(test, logfname, interp, test_driver)
+
     interp0 = args[0]
     if (_win32 and not os.path.isabs(interp0) and
         ('\\' in interp0 or '/' in interp0)):
         args[0] = os.path.join(str(cwd), interp0)
 
-    if do_dry_run:
-        runfunc = util.dry_run
-    else:
-        runfunc = util.run
     
     exitcode = runfunc(args, cwd, out, timeout=timeout)
     
@@ -57,10 +58,14 @@
         one_output = sessdir.join("%d-%s-output" % (num, basename))
         num += n
 
+        if dry_run:
+            runfunc = util.dry_run
+        else:
+            runfunc = util.run
         try:
             test_driver = get_test_driver(test)
             exitcode = execute_test(root, test, one_output, logfname,
-                                    interp, test_driver, do_dry_run=dry_run,
+                                    interp, test_driver, runfunc=runfunc,
                                     timeout=timeout)
 
             cleanup(test)
diff --git a/testrunner/test/test_runner.py b/testrunner/test/test_runner.py
--- a/testrunner/test/test_runner.py
+++ b/testrunner/test/test_runner.py
@@ -8,21 +8,24 @@
 
 
 
+class FakeRun(object):
+    exitcode = 0
+    def __call__(self, args, cwd, out, timeout):
+        self.called = (args, cwd, out, timeout)
+        return self.exitcode
+
+
+
 
 class TestExecuteTest(object):
 
-    def pytest_funcarg__info(self, request):
-        monkeypatch = request.getfuncargvalue('monkeypatch')
-        info = {'exitcode' : 0}
-        def fake_run(args, cwd, out, timeout):
-            info['called'] = (args, cwd, out, timeout)
-            return info['exitcode']
-        monkeypatch.setattr(util, 'run', fake_run)
-        return info
+    def pytest_funcarg__fakerun(self, request):
+        return FakeRun()
 
 
-    def test_explicit(self, info):
+    def test_explicit(self, fakerun):
         res = runner.execute_test('/wd', 'test_one', 'out', 'LOGFILE',
+                                  runfunc=fakerun,
                                   interp=['INTERP', 'IARG'],
                                   test_driver=['driver', 'darg'],
                                   timeout='secs')
@@ -35,11 +38,12 @@
 
                     'test_one']
 
-        assert info['called'] == (expected, '/wd', 'out', 'secs')        
+        assert fakerun.called == (expected, '/wd', 'out', 'secs')        
         assert res == 0
 
-    def test_explicit_win32(self, info):
+    def test_explicit_win32(self, fakerun):
         res = runner.execute_test('/wd', 'test_one', 'out', 'LOGFILE',
+                                  runfunc=fakerun,
                                   interp=['./INTERP', 'IARG'],
                                   test_driver=['driver', 'darg'],
                                   timeout='secs',
@@ -52,20 +56,22 @@
                     '--resultlog=LOGFILE',
                     '--junitxml=LOGFILE.junit',
                     'test_one']
-        assert info['called'][0] == expected
-        assert info['called'] == (expected, '/wd', 'out', 'secs') 
+        assert fakerun.called[0] == expected
+        assert fakerun.called == (expected, '/wd', 'out', 'secs') 
         assert res == 0
 
-    def test_error(self, info):
-        info['exitcode'] = 1
+    def test_error(self, fakerun):
+        fakerun.exitcode = 1
         res = runner.execute_test('/wd', 'test_one', 'out', 'LOGFILE',
+                                  runfunc=fakerun,
                                   interp=['INTERP', 'IARG'],
                                   test_driver=['driver', 'darg'])
         assert res == 1
 
 
-        info['exitcode'] = -signal.SIGSEGV
+        fakerun.exitcode = -signal.SIGSEGV
         res = runner.execute_test('/wd', 'test_one', 'out', 'LOGFILE',
+                                  runfunc=fakerun,
                                   interp=['INTERP', 'IARG'],
                                   test_driver=['driver', 'darg'])
         assert res == -signal.SIGSEGV


More information about the pypy-commit mailing list