def test_runner_from_runnable_error(self): try: runnable = Runnable('unsupported_kind', '') runnable.pick_runner_class() except ValueError as e: self.assertEqual(str(e), 'Unsupported kind of runnable: unsupported_kind')
def test_runner_noop(self): runnable = Runnable('noop', None) runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] last_result = results[-1] self.assertEqual(last_result['status'], 'finished') self.assertIn('time', last_result)
def test_runner_noop(self): runnable = Runnable("noop", None) runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] last_result = results[-1] self.assertEqual(last_result["status"], "finished") self.assertIn("time", last_result)
def test_runner_python_unittest_empty_uri_error(self): runnable = Runnable("python-unittest", "") runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] output = "Invalid URI: could not be converted to an unittest dotted name." result = results[-1] self.assertEqual(result["status"], "finished") self.assertEqual(result["result"], "error") self.assertEqual(result["output"], output)
def test_runner_python_unittest_empty_uri_error(self): runnable = Runnable('python-unittest', '') runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] output = ("Invalid URI: could not be converted to an unittest " "dotted name.") result = results[-1] self.assertEqual(result['status'], 'finished') self.assertEqual(result['result'], 'error') self.assertEqual(result['output'], output)
def test_runner_exec_test_fail(self): runnable = Runnable('exec-test', '/bin/false') runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] stdout_result = results[-3] stderr_result = results[-2] last_result = results[-1] self.assertEqual(stdout_result['type'], 'stdout') self.assertEqual(stdout_result['log'], b'') self.assertEqual(stderr_result['type'], 'stderr') self.assertEqual(stderr_result['log'], b'') self.assertEqual(last_result['status'], 'finished') self.assertEqual(last_result['result'], 'fail') self.assertEqual(last_result['returncode'], 1) self.assertIn('time', last_result)
def test_runner_exec(self): runnable = Runnable('exec-test', sys.executable, '-c', 'import time; time.sleep(0.01)') runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] stdout_result = results[-3] stderr_result = results[-2] last_result = results[-1] self.assertEqual(stdout_result['type'], 'stdout') self.assertEqual(stdout_result['log'], b'') self.assertEqual(stderr_result['type'], 'stderr') self.assertEqual(stderr_result['log'], b'') self.assertEqual(last_result['status'], 'finished') self.assertEqual(last_result['returncode'], 0) self.assertIn('time', last_result)
def test_runner_exec_test_fail(self): runnable = Runnable("exec-test", "/bin/false") runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] stdout_result = results[-3] stderr_result = results[-2] last_result = results[-1] self.assertEqual(stdout_result["type"], "stdout") self.assertEqual(stdout_result["log"], b"") self.assertEqual(stderr_result["type"], "stderr") self.assertEqual(stderr_result["log"], b"") self.assertEqual(last_result["status"], "finished") self.assertEqual(last_result["result"], "fail") self.assertEqual(last_result["returncode"], 1) self.assertIn("time", last_result)
def test_runner_exec(self): runnable = Runnable( "exec-test", sys.executable, "-c", "import time; time.sleep(0.01)" ) runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] stdout_result = results[-3] stderr_result = results[-2] last_result = results[-1] self.assertEqual(stdout_result["type"], "stdout") self.assertEqual(stdout_result["log"], b"") self.assertEqual(stderr_result["type"], "stderr") self.assertEqual(stderr_result["log"], b"") self.assertEqual(last_result["status"], "finished") self.assertEqual(last_result["returncode"], 0) self.assertIn("time", last_result)
def test_runner_python_unittest_skip(self): runnable = Runnable( "python-unittest", "selftests/.data/unittests.py:Second.test_skip" ) runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] output1 = ( b"----------------------------------------------------------------------\n" b"Ran 1 test in " ) output2 = b"s\n\nOK (skipped=1)\n" output = results[-2] result = results[-1] self.assertEqual(result["status"], "finished") self.assertEqual(result["result"], "skip") self.assertTrue(output["log"].startswith(output1), "Start of output differs") self.assertTrue(output["log"].endswith(output2), "End of output differs")
def test_runner_python_unittest_fail(self): runnable = Runnable( "python-unittest", "selftests/.data/unittests.py:Second.test_fail" ) runner_klass = runnable.pick_runner_class() runner = runner_klass() results = [status for status in runner.run(runnable)] if sys.version_info < (3, 11): output1 = ( b"======================================================================\n" b"FAIL: test_fail (unittests.Second)\n" ) else: output1 = ( b"======================================================================\n" b"FAIL: test_fail (unittests.Second.test_fail)\n" ) output2 = b"\n\nFAILED (failures=1)\n" output = results[-2] result = results[-1] self.assertEqual(result["status"], "finished") self.assertEqual(result["result"], "fail") self.assertTrue(output["log"].startswith(output1), "Start of output differs") self.assertTrue(output["log"].endswith(output2), "End of output differs")