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

Unified Diff: chrome/common/extensions/docs/server2/owners_data_source_test.py

Issue 453713002: Docserver: Generate a table of extension/app API owners (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mlg rebasing Created 6 years, 4 months 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: chrome/common/extensions/docs/server2/owners_data_source_test.py
diff --git a/chrome/common/extensions/docs/server2/owners_data_source_test.py b/chrome/common/extensions/docs/server2/owners_data_source_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..64f695251644a27285e822f3f73eec5218e7f70f
--- /dev/null
+++ b/chrome/common/extensions/docs/server2/owners_data_source_test.py
@@ -0,0 +1,189 @@
+#!/usr/bin/env python
+# Copyright 2014 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 owners_data_source import ParseOwnersFile, OwnersDataSource
+from server_instance import ServerInstance
+from servlet import Request
+from test_file_system import TestFileSystem
+
+
+_TEST_FS = {
+ 'chrome': {
+ 'browser': {
+ 'extensions': {
+ 'OWNERS': '\n'.join([
+ '# Core owners.',
+ 'satsuki@revocs.tld'
+ ]),
+ 'api': {
+ 'some_api': {
+ 'OWNERS': '\n'.join([
+ 'matoi@owner.tld'
+ ]),
+ 'some_api.cc': ''
+ },
+ 'another_api': {
+ 'another_api.cc': '',
+ 'another_api.h': ''
+ },
+ 'moar_apis': {
+ 'OWNERS': '\n'.join([
+ '# For editing moar_apis.',
+ 'satsuki@revocs.tld'
+ ])
+ }
+ }
+ }
+ }
+ },
+ 'extensions': {
+ 'browser': {
+ 'api': {
+ 'a_different_api': {
+ 'OWNERS': '\n'.join([
+ '# Hallo!',
+ 'nonon@owner.tld',
+ 'matoi@owner.tld'
+ ])
+ }
+ }
+ }
+ }
+}
+
+
+class OwnersDataSourceTest(unittest.TestCase):
+ def setUp(self):
+ server_instance = ServerInstance.ForTest(
+ file_system=TestFileSystem(_TEST_FS))
+ # Don't randomize the owners to avoid testing issues.
+ self._owners_ds = OwnersDataSource(server_instance,
+ Request.ForTest('/'),
+ randomize=False)
+
+ def testParseOwnersFile(self):
+ owners_content = '\n'.join([
+ 'satsuki@revocs.tld',
+ 'mankanshoku@owner.tld',
+ '',
+ 'matoi@owner.tld'
+ ])
+ owners, notes = ParseOwnersFile(owners_content, randomize=False)
+ # The order of the owners list should reflect the order of the owners file.
+ self.assertEqual(owners, [
+ {
+ 'email': 'satsuki@revocs.tld',
+ 'username': 'satsuki'
+ },
+ {
+ 'email': 'mankanshoku@owner.tld',
+ 'username': 'mankanshoku'
+ },
+ {
+ 'email': 'matoi@owner.tld',
+ 'username': 'matoi',
+ 'last': True
+ }
+ ])
+ self.assertEqual(notes, '')
+
+ owners_content_with_comments = '\n'.join([
+ '# This is a comment concerning this file',
+ '# that should not be ignored.',
+ 'matoi@owner.tld',
+ 'mankanshoku@owner.tld',
+ '',
+ '# Only bug satsuki if matoi or mankanshoku are unavailable.',
+ 'satsuki@revocs.tld'
+ ])
+ owners, notes = ParseOwnersFile(owners_content_with_comments,
+ randomize=False)
+ self.assertEqual(owners, [
+ {
+ 'email': 'matoi@owner.tld',
+ 'username': 'matoi'
+ },
+ {
+ 'email': 'mankanshoku@owner.tld',
+ 'username': 'mankanshoku'
+ },
+ {
+ 'email': 'satsuki@revocs.tld',
+ 'username': 'satsuki',
+ 'last': True
+ }
+ ])
+ self.assertEqual(notes, '\n'.join([
+ 'This is a comment concerning this file',
+ 'that should not be ignored.',
+ 'Only bug satsuki if matoi or mankanshoku are unavailable.'
+ ]))
+
+
+ def testCollectOwners(self):
+ # NOTE: Order matters. The list should be sorted by 'apiName'.
+ self.assertEqual(self._owners_ds.get('apis'), [{
+ 'apiName': 'Core Extensions/Apps Owners',
+ 'owners': [
+ {
+ 'email': 'satsuki@revocs.tld',
+ 'username': 'satsuki',
+ 'last': True
+ }
+ ],
+ 'notes': 'Core owners.',
+ 'id': 'core'
+ },
+ {
+ 'apiName': 'a_different_api',
+ 'owners': [
+ {
+ 'email': 'nonon@owner.tld',
+ 'username': 'nonon'
+ },
+ {
+ 'email': 'matoi@owner.tld',
+ 'username': 'matoi',
+ 'last': True
+ }
+ ],
+ 'notes': 'Hallo!',
+ 'id': 'a_different_api'
+ },
+ {
+ 'apiName': 'another_api',
+ 'owners': [],
+ 'notes': 'Use one of the Core Extensions/Apps Owners.',
+ 'id': 'another_api'
+ },
+ {
+ 'apiName': 'moar_apis',
+ 'owners': [
+ {
+ 'email': 'satsuki@revocs.tld',
+ 'username': 'satsuki',
+ 'last': True
+ }
+ ],
+ 'notes': 'For editing moar_apis.',
+ 'id': 'moar_apis'
+ },
+ {
+ 'apiName': 'some_api',
+ 'owners': [
+ {
+ 'email': 'matoi@owner.tld',
+ 'username': 'matoi',
+ 'last': True
+ }
+ ],
+ 'notes': '',
+ 'id': 'some_api'
+ }])
+
+if __name__ == '__main__':
+ unittest.main()

Powered by Google App Engine
This is Rietveld 408576698