Bug 1291643 - Test cleanup after running (possibly empty) manifest; r?whimboo
Add tests to make sure that if an empty or nonempty manifest is run,
Marionette/Firefox are shut down as expected (previous behavior
was that the Marionette cleanup was never reached in this scenario).
MozReview-Commit-ID: 5hlUd0GQAQR
--- a/testing/marionette/harness/marionette/tests/harness_unit/test_marionette_runner.py
+++ b/testing/marionette/harness/marionette/tests/harness_unit/test_marionette_runner.py
@@ -395,16 +395,40 @@ def test_add_test_manifest(runner):
for test in runner.tests:
assert test['filepath'].endswith(('test_expected_pass.py', 'test_expected_fail.py'))
if test['filepath'].endswith('test_expected_fail.py'):
assert test['expected'] == 'fail'
else:
assert test['expected'] == 'pass'
+def test_cleanup_with_manifest(mock_runner):
+ mock_runner._appName = 'fake_app'
+ with patch.multiple('marionette.runner.base.TestManifest',
+ read=DEFAULT, active_tests=DEFAULT) as mocks:
+ mocks['active_tests'].return_value = [{'expected':'pass', 'path':'test_something.py'}]
+ with patch('marionette.runner.base.mozversion.get_version'):
+ with patch('marionette.runner.base.os.path.exists', return_value=True):
+ mock_runner.run_tests(['fake_manifest.ini'])
+ assert mock_runner.marionette is None
+ assert mock_runner.httpd is None
+
+def test_cleanup_empty_manifest(mock_runner):
+ mock_runner._appName = 'fake_app'
+ with patch.multiple('marionette.runner.base.TestManifest',
+ read=DEFAULT, active_tests=DEFAULT) as mocks:
+ mocks['active_tests'].return_value = []
+ with patch('marionette.runner.base.mozversion.get_version'):
+ with pytest.raises(Exception) as exc:
+ mock_runner.run_tests(['fake_empty_manifest.ini'])
+ assert "no tests to run" in exc.value.message
+ assert mock_runner.marionette is None
+ assert mock_runner.httpd is None
+
+
def test_reset_test_stats(runner):
def reset_successful(runner):
stats = ['passed', 'failed', 'unexpected_successes', 'todo', 'skipped', 'failures']
return all([((s in vars(runner)) and (not vars(runner)[s])) for s in stats])
assert reset_successful(runner)
runner.passed = 1
runner.failed = 1
runner.failures.append(['TEST-UNEXPECTED-FAIL'])