blob: 5a2a90310ed65479b82df3c06b3f56cb5dedc199 [file] [log] [blame]
# 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 blinkpy.common.host_mock import MockHost
from blinkpy.common.path_finder import RELATIVE_WEB_TESTS
from blinkpy.common.system.executive import ScriptError
from blinkpy.common.system.executive_mock import MockExecutive, mock_git_commands
from blinkpy.w3c.chromium_commit import ChromiumCommit
CHROMIUM_WPT_DIR = RELATIVE_WEB_TESTS + 'external/wpt/'
class ChromiumCommitTest(unittest.TestCase):
def test_validates_sha(self):
with self.assertRaises(AssertionError):
ChromiumCommit(MockHost(), sha='rutabaga')
def test_derives_sha_from_position(self):
host = MockHost()
host.executive = MockExecutive(output='c881563d734a86f7d9cd57ac509653a61c45c240')
pos = 'Cr-Commit-Position: refs/heads/master@{#789}'
chromium_commit = ChromiumCommit(host, position=pos)
self.assertEqual(chromium_commit.position, 'refs/heads/master@{#789}')
self.assertEqual(chromium_commit.sha, 'c881563d734a86f7d9cd57ac509653a61c45c240')
def test_derives_position_from_sha(self):
host = MockHost()
host.executive = mock_git_commands({
'footers': 'refs/heads/master@{#789}'
})
chromium_commit = ChromiumCommit(host, sha='c881563d734a86f7d9cd57ac509653a61c45c240')
self.assertEqual(chromium_commit.position, 'refs/heads/master@{#789}')
self.assertEqual(chromium_commit.sha, 'c881563d734a86f7d9cd57ac509653a61c45c240')
def test_when_commit_has_no_position(self):
host = MockHost()
def run_command(_):
raise ScriptError('Unable to infer commit position from footers rutabaga')
host.executive = MockExecutive(run_command_fn=run_command)
chromium_commit = ChromiumCommit(host, sha='c881563d734a86f7d9cd57ac509653a61c45c240')
self.assertEqual(chromium_commit.position, 'no-commit-position-yet')
self.assertEqual(chromium_commit.sha, 'c881563d734a86f7d9cd57ac509653a61c45c240')
def test_filtered_changed_files_blacklist(self):
host = MockHost()
fake_files = ['file1', 'MANIFEST.json', 'file3', 'OWNERS']
qualified_fake_files = [CHROMIUM_WPT_DIR + f for f in fake_files]
host.executive = mock_git_commands({
'diff-tree': '\n'.join(qualified_fake_files),
'crrev-parse': 'c881563d734a86f7d9cd57ac509653a61c45c240',
})
position_footer = 'Cr-Commit-Position: refs/heads/master@{#789}'
chromium_commit = ChromiumCommit(host, position=position_footer)
files = chromium_commit.filtered_changed_files()
expected_files = ['file1', 'file3']
qualified_expected_files = [CHROMIUM_WPT_DIR + f for f in expected_files]
self.assertEqual(files, qualified_expected_files)
def test_short_sha(self):
chromium_commit = ChromiumCommit(
MockHost(), sha='c881563d734a86f7d9cd57ac509653a61c45c240')
self.assertEqual(chromium_commit.short_sha, 'c881563d73')
def test_url(self):
chromium_commit = ChromiumCommit(
MockHost(), sha='c881563d734a86f7d9cd57ac509653a61c45c240')
self.assertEqual(
chromium_commit.url(),
'https://chromium.googlesource.com/chromium/src/+/c881563d73')