Bug 1284238 - Test that manifest tests are filtered with correct settings; r?maja_zf draft
authorAnjana Vakil <anjanavakil@gmail.com>
Thu, 08 Sep 2016 14:20:28 +0200
changeset 411729 3b1c95cab206be29b95724765e587b9b56958bab
parent 411725 fba6f05f60a334d14fda171b1c0059fe153b6e02
child 530799 c30416f535be562a82cf6790846cffd27bd2b753
push id28968
push userbmo:anjanavakil@gmail.com
push dateThu, 08 Sep 2016 15:20:41 +0000
reviewersmaja_zf
bugs1284238
milestone51.0a1
Bug 1284238 - Test that manifest tests are filtered with correct settings; r?maja_zf Add tests to ensure that the arguments passed to the call to `manifest.active_tests` from within `runner.add_test` are correct, based on the runner's settings for e.g. e10s and test tags. Add helper function for setup for these tests to avoid duplication. MozReview-Commit-ID: CsaDm7cSyZf
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
@@ -303,16 +303,52 @@ def test_add_test_manifest(mock_runner, 
             for test in mock_runner.tests:
                 assert test['filepath'].endswith(test['expected'] + '.py')
         else:
             pytest.raises(IOError, "mock_runner.add_test(manifest_with_tests.filepath)")
     assert manifest_with_tests.manifest_class().read.called
     assert manifest_with_tests.manifest_class().active_tests.called
 
 
+def get_kwargs_passed_to_manifest(mock_runner, manifest, monkeypatch, **kwargs):
+    '''Helper function for test_manifest_* tests.
+    Returns the kwargs passed to the call to manifest.active_tests.'''
+    monkeypatch.setattr('marionette.runner.base.TestManifest', manifest.manifest_class)
+    monkeypatch.setattr('marionette.runner.base.mozinfo.info', {'mozinfo_key': 'mozinfo_val'})
+    for attr in kwargs:
+        setattr(mock_runner, attr, kwargs[attr])
+    with patch('marionette.runner.base.os.path.exists', return_value=True):
+        mock_runner.add_test(manifest.filepath)
+    call_args, call_kwargs = manifest.manifest_class().active_tests.call_args
+    return call_kwargs
+
+
+def test_manifest_basic_args(mock_runner, manifest, monkeypatch):
+    kwargs = get_kwargs_passed_to_manifest(mock_runner, manifest, monkeypatch)
+    assert kwargs['exists'] is False
+    assert kwargs['disabled'] is True
+    assert kwargs['app'] == 'fake_app'
+    assert 'mozinfo_key' in kwargs and kwargs['mozinfo_key'] == 'mozinfo_val'
+
+
+@pytest.mark.parametrize('e10s', (True, False))
+def test_manifest_with_e10s(mock_runner, manifest, monkeypatch, e10s):
+    kwargs = get_kwargs_passed_to_manifest(mock_runner, manifest, monkeypatch, e10s=e10s)
+    assert kwargs['e10s'] == e10s
+
+
+@pytest.mark.parametrize('test_tags', (None, ['tag', 'tag2']))
+def test_manifest_with_test_tags(mock_runner, manifest, monkeypatch, test_tags):
+    kwargs = get_kwargs_passed_to_manifest(mock_runner, manifest, monkeypatch, test_tags=test_tags)
+    if test_tags is None:
+        assert kwargs['filters'] == []
+    else:
+        assert len(kwargs['filters']) == 1 and kwargs['filters'][0].tags == test_tags
+
+
 def test_cleanup_with_manifest(mock_runner, manifest_with_tests, monkeypatch):
     monkeypatch.setattr('marionette.runner.base.TestManifest', manifest_with_tests.manifest_class)
     if manifest_with_tests.n_enabled > 0:
         context = patch('marionette.runner.base.os.path.exists', return_value=True)
     else:
         context = pytest.raises(Exception)
     with context:
         mock_runner.run_tests([manifest_with_tests.filepath])