diff options
Diffstat (limited to 'taskcluster/taskgraph/test/test_files_changed.py')
-rw-r--r-- | taskcluster/taskgraph/test/test_files_changed.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/taskcluster/taskgraph/test/test_files_changed.py b/taskcluster/taskgraph/test/test_files_changed.py new file mode 100644 index 000000000..0e3366b3c --- /dev/null +++ b/taskcluster/taskgraph/test/test_files_changed.py @@ -0,0 +1,73 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +from __future__ import absolute_import, print_function, unicode_literals + +import json +import os +import unittest + +from .. import files_changed + +PARAMS = { + 'head_repository': 'https://hg.mozilla.org/mozilla-central', + 'head_rev': 'a14f88a9af7a', +} + +FILES_CHANGED = [ + 'devtools/client/debugger/new/index.html', + 'devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js', + 'devtools/client/inspector/test/head.js', + 'devtools/client/themes/rules.css', + 'devtools/client/webconsole/test/browser_webconsole_output_06.js', + 'devtools/server/actors/highlighters/eye-dropper.js', + 'devtools/server/actors/object.js', + 'docshell/base/nsDocShell.cpp', + 'dom/tests/mochitest/general/test_contentViewer_overrideDPPX.html', + 'taskcluster/scripts/builder/build-l10n.sh', +] + + +class FakeResponse: + + def json(self): + with open(os.path.join(os.path.dirname(__file__), 'automationrelevance.json')) as f: + return json.load(f) + + +class TestGetChangedFiles(unittest.TestCase): + + def setUp(self): + files_changed._cache.clear() + self.old_get = files_changed.requests.get + + def fake_get(url, **kwargs): + return FakeResponse() + files_changed.requests.get = fake_get + + def tearDown(self): + files_changed.requests.get = self.old_get + + def test_get_changed_files(self): + """Get_changed_files correctly gets the list of changed files in a push. + This tests against the production hg.mozilla.org so that it will detect + any changes in the format of the returned data.""" + self.assertEqual( + sorted(files_changed.get_changed_files(PARAMS['head_repository'], PARAMS['head_rev'])), + FILES_CHANGED) + + +class TestCheck(unittest.TestCase): + + def setUp(self): + files_changed._cache[PARAMS['head_repository'], PARAMS['head_rev']] = FILES_CHANGED + + def test_check_no_params(self): + self.assertTrue(files_changed.check({}, ["ignored"])) + + def test_check_no_match(self): + self.assertFalse(files_changed.check(PARAMS, ["nosuch/**"])) + + def test_check_match(self): + self.assertTrue(files_changed.check(PARAMS, ["devtools/**"])) |