Bug 1287591 - Test cleanup after adding empty manifest; r?whimboo draft
authorAnjana Vakil <anjanavakil@gmail.com>
Mon, 01 Aug 2016 16:56:36 +0200
changeset 394972 9c11f73a4ddf11c893d97a70d786320d2adb989e
parent 394856 465d150bc8be5bbf9f02a8607d4552b6a5e1697c
child 526919 990c6f91263ab86b7c6d02d3d4329cd7927181b9
push id24686
push useranjanavakil@gmail.com
push dateMon, 01 Aug 2016 15:14:11 +0000
reviewerswhimboo
bugs1287591
milestone50.0a1
Bug 1287591 - Test cleanup after adding empty manifest; r?whimboo Add a test to make sure that if an empty manifest, or one with no active tests, is provided, Marionette/Firefox are shut down as expected (previous behavior was that the Marionette cleanup was never reached in this scenario). MozReview-Commit-ID: 5hlUd0GQAQR
testing/marionette/harness/marionette/tests/harness_unit/test_marionette_runner.py
--- 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,30 @@ 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_add_empty_manifest(mock_runner):
+    mock_runner._appName = 'fake_app'
+    mani_name, mani_tests = 'fake_empty_manifest.ini', []
+    with patch.multiple('marionette.runner.base.TestManifest',
+                        read=DEFAULT, active_tests=DEFAULT) as mocks:
+        mocks['active_tests'].return_value = mani_tests
+        with patch('marionette.runner.base.mozversion.get_version'):
+            with pytest.raises(Exception) as exc:
+                mock_runner.run_tests([mani_name])
+    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'])