Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Unified Diff: third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py

Issue 2544173002: Skip commits that don't generate a patch + fixes to get export working (Closed)
Patch Set: Merge ChromiumWPT functionality into TestExporter, expose exportable_commits Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py
index f8629e1baa68f72d32c18d6732d2361b8a27c439..3664f92c9f4a33e2c902a0e62c71f18a76b9ca5b 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter_unittest.py
@@ -6,47 +6,54 @@ import unittest
from webkitpy.common.host_mock import MockHost
from webkitpy.common.system.executive_mock import MockExecutive2
+from webkitpy.w3c.chromium_commit import ChromiumCommit
from webkitpy.w3c.test_exporter import TestExporter
from webkitpy.w3c.wpt_github_mock import MockWPTGitHub
+def mock_command_exec(vals):
+ def run_fn(args):
+ if args[1] in vals:
+ return vals[args[1]]
+ else:
+ return ''
+ return MockExecutive2(run_command_fn=run_fn)
+
+
class TestExporterTest(unittest.TestCase):
+ def setUp(self):
+ self.host = MockHost()
+ self.wpt_github = MockWPTGitHub(pull_requests=[])
+
def test_stops_if_more_than_one_pr_is_in_flight(self):
- host = MockHost()
- wpt_github = MockWPTGitHub(pull_requests=[{'id': 1}, {'id': 2}])
+ self.wpt_github = MockWPTGitHub(pull_requests=[{'id': 1}, {'id': 2}])
# TODO: make Exception more specific
with self.assertRaises(Exception):
- TestExporter(host, wpt_github).run()
+ TestExporter(self.host, self.wpt_github).run()
def test_if_pr_exists_merges_it(self):
- host = MockHost()
- wpt_github = MockWPTGitHub(pull_requests=[{'number': 1, 'title': 'abc'}])
- TestExporter(host, wpt_github).run()
+ self.wpt_github = MockWPTGitHub(pull_requests=[{'number': 1, 'title': 'abc'}])
+ TestExporter(self.host, self.wpt_github).run()
- self.assertIn('merge_pull_request', wpt_github.calls)
+ self.assertIn('merge_pull_request', self.wpt_github.calls)
def test_merge_failure_errors_out(self):
- host = MockHost()
- wpt_github = MockWPTGitHub(pull_requests=[{'number': 1, 'title': 'abc'}],
- unsuccessful_merge=True)
+ self.wpt_github = MockWPTGitHub(pull_requests=[{'number': 1, 'title': 'abc'}],
+ unsuccessful_merge=True)
# TODO: make Exception more specific
with self.assertRaises(Exception):
- TestExporter(host, wpt_github).run()
+ TestExporter(self.host, self.wpt_github).run()
def test_dry_run_stops_before_creating_pr(self):
- host = MockHost()
- host.executive = MockExecutive2(output='beefcafe')
- wpt_github = MockWPTGitHub(pull_requests=[{'number': 1, 'title': 'abc'}])
- TestExporter(host, wpt_github, dry_run=True).run()
+ self.wpt_github = MockWPTGitHub(pull_requests=[{'number': 1, 'title': 'abc'}])
- self.assertEqual(wpt_github.calls, ['in_flight_pull_requests'])
+ TestExporter(self.host, self.wpt_github, dry_run=True).run()
+ self.assertEqual(self.wpt_github.calls, ['in_flight_pull_requests'])
def test_creates_pull_request_for_earliest_commit(self):
- host = MockHost()
-
def mock_command(args):
git_command = args[1]
if git_command == 'rev-list':
@@ -58,14 +65,75 @@ class TestExporterTest(unittest.TestCase):
return 'newer fake text'
elif 'facebeef' in args:
return 'older fake text'
+ elif git_command == 'remote':
+ return 'github'
+ elif git_command == 'format-patch':
+ return 'fake patch'
+ elif git_command == 'diff':
+ return 'fake patch diff'
+ elif git_command == 'diff-tree':
+ return 'fake\nfiles\nchanged'
else:
return ''
- host.executive = MockExecutive2(run_command_fn=mock_command)
- wpt_github = MockWPTGitHub(pull_requests=[])
-
- TestExporter(host, wpt_github).run()
+ self.host.executive = MockExecutive2(run_command_fn=mock_command)
+ TestExporter(self.host, self.wpt_github).run()
- self.assertEqual(wpt_github.calls, ['in_flight_pull_requests', 'create_pr'])
- self.assertEqual(wpt_github.pull_requests_created,
+ self.assertEqual(self.wpt_github.calls, ['in_flight_pull_requests', 'create_pr'])
+ self.assertEqual(self.wpt_github.pull_requests_created,
[('chromium-export-try', 'older fake text', 'older fake text')])
+
+ def test_exportable_commits_since(self):
qyearsley 2016/12/15 20:59:14 Name: test_exportable_commits
+ self.host.executive = mock_command_exec({
+ 'show': 'fake message',
+ 'rev-list': 'badbeef8',
+ 'rev-parse': 'badbeef8',
+ 'crrev-parse': 'badbeef8',
+ 'diff': 'fake diff',
+ 'diff-tree': 'some\nfiles',
+ 'format-patch': 'hey I\'m a patch',
+ 'footers': 'cr-rev-position',
+ })
+ test_exporter = TestExporter(self.host, self.wpt_github)
+
+ commits = test_exporter.exportable_commits()
+ self.assertEqual(len(commits), 1)
+ self.assertIsInstance(commits[0], ChromiumCommit)
+
+ def test_ignores_commits_with_noexport_true(self):
+ self.host.executive = mock_command_exec({
+ 'show': 'Commit message\nNOEXPORT=true',
+ 'rev-list': 'badbeef8',
+ 'rev-parse': 'badbeef8',
+ 'footers': 'cr-rev-position',
+ })
+ test_exporter = TestExporter(self.host, self.wpt_github)
+
+ commits = test_exporter.exportable_commits()
+ self.assertEqual(len(commits), 0)
+
+ def test_ignores_reverted_commits_with_noexport_true(self):
+ self.host.executive = mock_command_exec({
+ 'show': 'Commit message\n> NOEXPORT=true',
+ 'rev-list': 'badbeef8',
+ 'rev-parse': 'badbeef8',
+ 'footers': 'cr-rev-position',
+ })
+ wpt_github = MockWPTGitHub(pull_requests=[])
+ test_exporter = TestExporter(self.host, wpt_github)
+
+ commits = test_exporter.exportable_commits()
+ self.assertEqual(len(commits), 0)
+
+ def test_ignores_commits_that_start_with_import(self):
+ self.host.executive = mock_command_exec({
+ 'show': 'Import rutabaga@deadbeef',
+ 'rev-list': 'badbeef8',
+ 'rev-parse': 'badbeef8',
+ 'footers': 'cr-rev-position',
+ })
+ wpt_github = MockWPTGitHub(pull_requests=[])
+ test_exporter = TestExporter(self.host, wpt_github)
+
+ commits = test_exporter.exportable_commits()
+ self.assertEqual(len(commits), 0)

Powered by Google App Engine
This is Rietveld 408576698