blob: 213e436bbcb2489c2933b022a1ac10b3567e8acf [file] [log] [blame]
# Copyright 2017 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.system.filesystem_mock import MockFileSystem
from webkitpy.w3c.directory_owners_extractor import DirectoryOwnersExtractor
class DirectoryOwnersExtractorTest(unittest.TestCase):
def setUp(self):
self.filesystem = MockFileSystem()
self.extractor = DirectoryOwnersExtractor(self.filesystem)
def test_lines_to_owner_map(self):
lines = [
'external/wpt/webgl [ Skip ]',
'## Owners: mek@chromium.org',
'# external/wpt/webmessaging [ Pass ]',
'## Owners: hta@chromium.org',
'# external/wpt/webrtc [ Pass ]',
'external/wpt/websockets [ Skip ]',
'## Owners: michaeln@chromium.org,jsbell@chromium.org',
'# external/wpt/webstorage [ Pass ]',
'external/wpt/webvtt [ Skip ]',
]
self.assertEqual(
self.extractor.lines_to_owner_map(lines),
{
'external/wpt/webmessaging': ['mek@chromium.org'],
'external/wpt/webrtc': ['hta@chromium.org'],
'external/wpt/webstorage': ['michaeln@chromium.org', 'jsbell@chromium.org'],
})
def test_list_owners(self):
self.extractor.owner_map = {
'external/wpt/foo': ['a@chromium.org', 'c@chromium.org'],
'external/wpt/bar': ['b@chromium.org'],
'external/wpt/baz': ['a@chromium.org', 'c@chromium.org'],
}
self.filesystem.files = {
'/mock-checkout/third_party/WebKit/LayoutTests/external/wpt/foo/x/y.html': '',
'/mock-checkout/third_party/WebKit/LayoutTests/external/wpt/bar/x/y.html': '',
'/mock-checkout/third_party/WebKit/LayoutTests/external/wpt/baz/x/y.html': '',
'/mock-checkout/third_party/WebKit/LayoutTests/external/wpt/quux/x/y.html': '',
}
changed_files = [
'third_party/WebKit/LayoutTests/external/wpt/foo/x/y.html',
'third_party/WebKit/LayoutTests/external/wpt/baz/x/y.html',
'third_party/WebKit/LayoutTests/external/wpt/quux/x/y.html',
]
self.assertEqual(
self.extractor.list_owners(changed_files),
{('a@chromium.org', 'c@chromium.org'): ['external/wpt/foo', 'external/wpt/baz']})
def test_extract_owner_positive_cases(self):
self.assertEqual(self.extractor.extract_owners('## Owners: foo@chromium.org'), ['foo@chromium.org'])
self.assertEqual(self.extractor.extract_owners('# Owners: foo@chromium.org'), ['foo@chromium.org'])
self.assertEqual(self.extractor.extract_owners('## Owners: a@x.com,b@x.com'), ['a@x.com', 'b@x.com'])
self.assertEqual(self.extractor.extract_owners('## Owners: a@x.com, b@x.com'), ['a@x.com', 'b@x.com'])
self.assertEqual(self.extractor.extract_owners('## Owner: foo@chromium.org'), ['foo@chromium.org'])
def test_extract_owner_negative_cases(self):
self.assertIsNone(self.extractor.extract_owners(''))
self.assertIsNone(self.extractor.extract_owners('## Something: foo@chromium.org'))
self.assertIsNone(self.extractor.extract_owners('## Owners: not an email address'))
def test_extract_directory_positive_cases(self):
self.assertEqual(self.extractor.extract_directory('external/a/b [ Pass ]'), 'external/a/b')
self.assertEqual(self.extractor.extract_directory('# external/c/d [ Pass ]'), 'external/c/d')
self.assertEqual(self.extractor.extract_directory('# external/e/f [ Skip ]'), 'external/e/f')
self.assertEqual(self.extractor.extract_directory('# external/g/h/i [ Skip ]'), 'external/g/h/i')
def test_extract_directory_negative_cases(self):
self.assertIsNone(self.extractor.extract_directory(''))
self.assertIsNone(self.extractor.extract_directory('external/a/b [ Skip ]'))
self.assertIsNone(self.extractor.extract_directory('# some comment'))