def test_export(self): host = TestExporterTest.MyMockHost() options = parse_args([ 'test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN' ]) exporter = TestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub) exporter.do_export() self.assertEquals(exporter._github.calls, ['create_pr']) self.assertTrue( 'WebKit export' in exporter._github.pull_requests_created[0][1]) self.assertEquals(exporter._git.calls, [ '/mock-checkout/WebKitBuild/w3c-tests/web-platform-tests', 'fetch', 'checkout master', 'reset hard origin/master', 'checkout new branch wpt-export-for-webkit-1234', 'apply_mail_patch patch.temp --exclude *-expected.txt', 'commit -a -m WebKit export of https://bugs.webkit.org/show_bug.cgi?id=1234', 'remote ', 'remote add USER https://[email protected]/USER/web-platform-tests.git', 'remote get-url USER', 'push USER wpt-export-for-webkit-1234:wpt-export-for-webkit-1234 -f', 'checkout master', 'delete branch wpt-export-for-webkit-1234', 'checkout master', 'reset hard origin/master' ]) self.assertEquals(exporter._bugzilla.calls, [ 'fetch bug 1234', 'post comment to bug 1234 : Submitted web-platform-tests pull request: https://github.com/w3c/web-platform-tests/pull/5678' ])
def test_export_with_specific_branch(self): host = TestExporterTest.MyMockHost() host.web.responses.append({ 'status_code': 200, 'body': '{"login": "******"}' }) options = parse_args([ 'test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN', '-bn', 'wpt-export-branch' ]) exporter = WebPlatformTestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) exporter.do_export() self.assertEquals(exporter._git.calls, [ '/mock-checkout/WebKitBuild/w3c-tests/web-platform-tests', 'fetch', 'checkout master', 'reset hard origin/master', 'checkout new branch wpt-export-for-webkit-1234', 'apply_mail_patch patch.temp ', 'commit -a -m WebKit export of https://bugs.webkit.org/show_bug.cgi?id=1234', 'remote ', 'remote add USER https://[email protected]/USER/wpt.git', 'remote get-url USER', 'push USER wpt-export-for-webkit-1234:wpt-export-branch -f', 'checkout master', 'delete branch wpt-export-for-webkit-1234', 'checkout master', 'reset hard origin/master' ])
def test_export(self): host = TestExporterTest.MyMockHost() host.web.responses.append({'status_code': 200, 'body': '{"login": "******"}'}) options = parse_args(['test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN']) exporter = WebPlatformTestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) exporter.do_export() self.assertEquals(exporter._github.calls, ['create_pr', 'add_label "webkit-export"']) self.assertTrue('WebKit export' in exporter._github.pull_requests_created[0][1]) self.assertEquals(exporter._git.calls, [ '/mock-checkout/WebKitBuild/w3c-tests/web-platform-tests', 'fetch', 'checkout master', 'reset hard origin/master', 'checkout new branch wpt-export-for-webkit-1234', 'apply_mail_patch patch.temp ', 'commit -a -m WebKit export of https://bugs.webkit.org/show_bug.cgi?id=1234', 'remote ', 'remote add USER https://[email protected]/USER/wpt.git', 'remote get-url USER', 'push USER wpt-export-for-webkit-1234:wpt-export-for-webkit-1234 -f', 'checkout master', 'delete branch wpt-export-for-webkit-1234', 'checkout master', 'reset hard origin/master']) self.assertEquals(exporter._bugzilla.calls, [ 'fetch bug 1234', 'post comment to bug 1234 : Submitted web-platform-tests pull request: https://github.com/web-platform-tests/wpt/pull/5678']) self.assertEquals(mock_linter.calls, ['/mock-checkout/WebKitBuild/w3c-tests/web-platform-tests', 'lint'])
def test_export_wrong_token(self): host = TestExporterTest.MyMockHost() host.web.responses.append({'status_code': 200, 'body': '{"login": "******"}'}) options = parse_args(['test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN']) exporter = WebPlatformTestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) with self.assertRaises(Exception) as context: exporter.do_export() self.assertIn('OAuth token does not match the provided username', str(context.exception))
def test_export_invalid_token(self): host = TestExporterTest.MyMockHost() host.web.responses.append({'status_code': 401}) options = parse_args(['test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN']) exporter = WebPlatformTestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) with self.assertRaises(Exception) as context: exporter.do_export() self.assertIn('OAuth token is not valid', str(context.exception))
def test_ignore_changes_to_w3c_import_log(self): host = TestExporterTest.MyMockHost() host._mockSCM.mock_format_patch_result = """ Subversion Revision: 231920 diff --git a/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log +change to w3c import """ options = parse_args(['test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN']) exporter = WebPlatformTestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) self.assertFalse(exporter.has_wpt_changes())
def test_has_wpt_changes(self): host = TestExporterTest.MyMockHost() options = parse_args([ 'test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN' ]) exporter = WebPlatformTestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) self.assertTrue(exporter.has_wpt_changes())
def test_has_no_wpt_changes_for_no_diff(self): host = TestExporterTest.MyMockHost() host._mockSCM.mock_format_patch_result = None options = parse_args([ 'test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN' ]) exporter = WebPlatformTestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) self.assertFalse(exporter.has_wpt_changes())
def test_export_interactive_mode(self): host = TestExporterTest.MyMockHost() host.web.responses.append({ 'status_code': 200, 'body': '{"login": "******"}' }) options = parse_args([ 'test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN', '--interactive' ]) exporter = WebPlatformTestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) exporter.do_export()
def run(self, state): if self._options.non_interactive: return bug_id = state.get("bug_id") if not bug_id: return args = ["--bug", str(bug_id), "--create-pr"] if self._options.git_commit: args.append("--git-commit") args.append(self._options.git_commit) test_exporter = WebPlatformTestExporter(self._tool, parse_args(args)) message = 'Would you like to export the web-platform-tests changes to a WPT GitHub repository?' if test_exporter.has_wpt_changes() and self._tool.user.confirm( message): test_exporter.do_export()
def test_export_with_specific_branch(self): host = TestExporterTest.MyMockHost() options = parse_args([ 'test_exporter.py', '-g', 'HEAD', '-b', '1234', '-c', '-n', 'USER', '-t', 'TOKEN', '-bn', 'wpt-export-branch' ]) exporter = TestExporter(host, options, TestExporterTest.MockGit, TestExporterTest.MockBugzilla, MockWPTGitHub, TestExporterTest.MockWPTLinter) exporter.do_export() self.assertEquals(exporter._git.calls, [ '/mock-checkout/WebKitBuild/w3c-tests/web-platform-tests', 'fetch', 'checkout master', 'reset hard origin/master', 'checkout new branch wpt-export-for-webkit-1234', 'apply_mail_patch patch.temp --exclude *-expected.txt --exclude *.worker.html --exclude *.any.html --exclude *.any.worker.html', 'commit -a -m WebKit export of https://bugs.webkit.org/show_bug.cgi?id=1234', 'remote ', 'remote add USER https://[email protected]/USER/web-platform-tests.git', 'remote get-url USER', 'push USER wpt-export-for-webkit-1234:wpt-export-branch -f', 'checkout master', 'delete branch wpt-export-for-webkit-1234', 'checkout master', 'reset hard origin/master' ])