| Index: third_party/WebKit/Tools/Scripts/webkitpy/w3c/directory_owners_extractor_unittest.py
|
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/directory_owners_extractor_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/directory_owners_extractor_unittest.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..189570e8a2d93488f403d970f8a5c5c3b9e2cfdd
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/directory_owners_extractor_unittest.py
|
| @@ -0,0 +1,75 @@
|
| +# 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'],
|
| + 'external/wpt/bar': ['b@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/quux/x/y.html': '',
|
| + }
|
| + changed_files = [
|
| + 'third_party/WebKit/LayoutTests/external/wpt/foo/x/y.html',
|
| + 'third_party/WebKit/LayoutTests/external/wpt/quux/x/y.html',
|
| + ]
|
| + self.assertEqual(self.extractor.list_owners(changed_files), {'a@chromium.org': 'external/wpt/foo'})
|
| +
|
| + 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'))
|
|
|