| # Copyright 2016 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import unittest |
| |
| from webkitpy.common.host_mock import MockHost |
| from webkitpy.common.system.executive_mock import mock_git_commands |
| from webkitpy.w3c.chromium_commit import ChromiumCommit |
| from webkitpy.w3c.common import exportable_commits_since |
| |
| |
| class MockLocalWPT(object): |
| |
| def test_patch(self, patch, chromium_commit): # pylint: disable=unused-argument |
| return 'patch' |
| |
| |
| class CommonTest(unittest.TestCase): |
| |
| def test_exportable_commits_since(self): |
| host = MockHost() |
| host.executive = mock_git_commands({ |
| 'show': 'fake message', |
| 'rev-list': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'rev-parse': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'crrev-parse': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'diff': 'fake diff', |
| 'diff-tree': 'some\nfiles', |
| 'format-patch': 'hey I\'m a patch', |
| 'footers': 'cr-rev-position', |
| }) |
| |
| commits = exportable_commits_since('beefcafe', host, MockLocalWPT()) |
| self.assertEqual(len(commits), 1) |
| self.assertIsInstance(commits[0], ChromiumCommit) |
| self.assertEqual(host.executive.calls, [ |
| ['git', 'rev-parse', '--show-toplevel'], |
| ['git', 'rev-list', 'beefcafe..HEAD', '--reverse', '--', |
| 'add087a97844f4b9e307d9a216940582d96db306/third_party/WebKit/LayoutTests/external/wpt/'], |
| ['git', 'diff-tree', '--name-only', '--no-commit-id', '-r', 'add087a97844f4b9e307d9a216940582d96db306', '--', |
| '/mock-checkout/third_party/WebKit/LayoutTests/external/wpt'], |
| ['git', 'format-patch', '-1', '--stdout', 'add087a97844f4b9e307d9a216940582d96db306', '--', 'some', 'files'], |
| ['git', 'show', '--format=%B', '--no-patch', 'add087a97844f4b9e307d9a216940582d96db306'], |
| ['git', 'show', '--format=%B', '--no-patch', 'add087a97844f4b9e307d9a216940582d96db306'] |
| ]) |
| |
| def test_ignores_commits_with_noexport_true(self): |
| host = MockHost() |
| host.executive = mock_git_commands({ |
| 'show': 'Commit message\nNOEXPORT=true', |
| 'rev-list': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'rev-parse': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'footers': 'cr-rev-position', |
| }) |
| |
| commits = exportable_commits_since('add087a97844f4b9e307d9a216940582d96db306', host, MockLocalWPT()) |
| self.assertEqual(commits, []) |
| self.assertEqual(host.executive.calls, [ |
| ['git', 'rev-parse', '--show-toplevel'], |
| ['git', 'rev-list', 'add087a97844f4b9e307d9a216940582d96db306..HEAD', '--reverse', '--', |
| 'add087a97844f4b9e307d9a216940582d96db306/third_party/WebKit/LayoutTests/external/wpt/'], |
| ['git', 'diff-tree', '--name-only', '--no-commit-id', '-r', 'add087a97844f4b9e307d9a216940582d96db306', '--', |
| '/mock-checkout/third_party/WebKit/LayoutTests/external/wpt'], |
| ['git', 'show', '--format=%B', '--no-patch', 'add087a97844f4b9e307d9a216940582d96db306'] |
| ]) |
| |
| def test_ignores_reverted_commits_with_noexport_true(self): |
| host = MockHost() |
| host.executive = mock_git_commands({ |
| 'show': 'Commit message\n> NOEXPORT=true', |
| 'rev-list': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'rev-parse': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'footers': 'cr-rev-position', |
| 'diff-tree': '', |
| }, strict=True) |
| |
| commits = exportable_commits_since('add087a97844f4b9e307d9a216940582d96db306', host, MockLocalWPT()) |
| self.assertEqual(len(commits), 0) |
| self.assertEqual(host.executive.calls, [ |
| ['git', 'rev-parse', '--show-toplevel'], |
| ['git', 'rev-list', 'add087a97844f4b9e307d9a216940582d96db306..HEAD', '--reverse', '--', |
| 'add087a97844f4b9e307d9a216940582d96db306/third_party/WebKit/LayoutTests/external/wpt/'], |
| ['git', 'diff-tree', '--name-only', '--no-commit-id', '-r', 'add087a97844f4b9e307d9a216940582d96db306', '--', |
| '/mock-checkout/third_party/WebKit/LayoutTests/external/wpt'], |
| ['git', 'show', '--format=%B', '--no-patch', 'add087a97844f4b9e307d9a216940582d96db306'] |
| ]) |
| |
| def test_ignores_commits_that_start_with_import(self): |
| host = MockHost() |
| host.executive = mock_git_commands({ |
| 'show': 'Import rutabaga@deadbeef', |
| 'rev-list': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'rev-parse': 'add087a97844f4b9e307d9a216940582d96db306', |
| 'footers': 'cr-rev-position', |
| }) |
| |
| commits = exportable_commits_since('beefcafe', host, MockLocalWPT()) |
| self.assertEqual(commits, []) |
| self.assertEqual(host.executive.calls, [ |
| ['git', 'rev-parse', '--show-toplevel'], |
| ['git', 'rev-list', 'beefcafe..HEAD', '--reverse', '--', |
| 'add087a97844f4b9e307d9a216940582d96db306/third_party/WebKit/LayoutTests/external/wpt/'], |
| ['git', 'diff-tree', '--name-only', '--no-commit-id', '-r', 'add087a97844f4b9e307d9a216940582d96db306', '--', |
| '/mock-checkout/third_party/WebKit/LayoutTests/external/wpt'], |
| ['git', 'show', '--format=%B', '--no-patch', 'add087a97844f4b9e307d9a216940582d96db306'], |
| ['git', 'show', '--format=%B', '--no-patch', 'add087a97844f4b9e307d9a216940582d96db306'], |
| ]) |