Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2013 The Chromium Authors. All rights reserved. | 2 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import unittest | 6 import unittest |
| 7 | 7 |
| 8 from app_yaml_helper import AppYamlHelper | 8 from app_yaml_helper import AppYamlHelper |
| 9 from content_providers import IgnoreMissingContentProviders | 9 from content_providers import IgnoreMissingContentProviders |
| 10 from cron_servlet import CronServlet | 10 from cron_servlet import CronServlet |
| 11 from empty_dir_file_system import EmptyDirFileSystem | 11 from empty_dir_file_system import EmptyDirFileSystem |
| 12 from environment import GetAppVersion | 12 from environment import GetAppVersion |
| 13 from extensions_paths import ( | 13 from extensions_paths import ( |
| 14 APP_YAML, CONTENT_PROVIDERS, CHROME_EXTENSIONS, PUBLIC_TEMPLATES, SERVER2, | 14 APP_YAML, CONTENT_PROVIDERS, CHROME_EXTENSIONS, PUBLIC_TEMPLATES, SERVER2, |
| 15 STATIC_DOCS) | 15 STATIC_DOCS) |
| 16 from fake_fetchers import ConfigureFakeFetchers | |
| 16 from gcs_file_system_provider import CloudStorageFileSystemProvider | 17 from gcs_file_system_provider import CloudStorageFileSystemProvider |
| 17 from github_file_system_provider import GithubFileSystemProvider | 18 from github_file_system_provider import GithubFileSystemProvider |
| 18 from host_file_system_provider import HostFileSystemProvider | 19 from host_file_system_provider import HostFileSystemProvider |
| 19 from local_file_system import LocalFileSystem | 20 from local_file_system import LocalFileSystem |
| 20 from mock_file_system import MockFileSystem | 21 from mock_file_system import MockFileSystem |
| 21 from servlet import Request | 22 from servlet import Request |
| 22 from test_branch_utility import TestBranchUtility | 23 from test_branch_utility import TestBranchUtility |
| 23 from test_file_system import MoveTo, TestFileSystem | 24 from test_file_system import MoveTo, TestFileSystem |
| 24 from test_util import EnableLogging, ReadFile | 25 from test_util import EnableLogging, ReadFile |
| 25 | 26 |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 55 return CloudStorageFileSystemProvider.ForEmpty() | 56 return CloudStorageFileSystemProvider.ForEmpty() |
| 56 | 57 |
| 57 def GetAppVersion(self): | 58 def GetAppVersion(self): |
| 58 return self._app_version | 59 return self._app_version |
| 59 | 60 |
| 60 # (non-Delegate method). | 61 # (non-Delegate method). |
| 61 def SetAppVersion(self, app_version): | 62 def SetAppVersion(self, app_version): |
| 62 self._app_version = app_version | 63 self._app_version = app_version |
| 63 | 64 |
| 64 class CronServletTest(unittest.TestCase): | 65 class CronServletTest(unittest.TestCase): |
| 66 def setUp(self): | |
| 67 ConfigureFakeFetchers() | |
|
not at google - send to devlin
2014/08/21 21:39:58
Hm, why do you need this? I've tried very hard to
| |
| 68 | |
| 65 @EnableLogging('info') | 69 @EnableLogging('info') |
| 66 def testEverything(self): | 70 def testEverything(self): |
| 67 # All these tests are dependent (see above comment) so lump everything in | 71 # All these tests are dependent (see above comment) so lump everything in |
| 68 # the one test. | 72 # the one test. |
| 69 delegate = _TestDelegate(lambda _: MockFileSystem(LocalFileSystem.Create())) | 73 delegate = _TestDelegate(lambda _: MockFileSystem(LocalFileSystem.Create())) |
| 70 | 74 |
| 71 # Test that the cron runs successfully. | 75 # Test that the cron runs successfully. |
| 72 response = CronServlet(Request.ForTest('trunk'), | 76 response = CronServlet(Request.ForTest('trunk'), |
| 73 delegate_for_test=delegate).Get() | 77 delegate_for_test=delegate).Get() |
| 74 self.assertEqual(200, response.status) | 78 self.assertEqual(200, response.status) |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 86 | 90 |
| 87 self.assertEqual(len(first_run_file_systems), len(delegate.file_systems)) | 91 self.assertEqual(len(first_run_file_systems), len(delegate.file_systems)) |
| 88 for i, second_run_file_system in enumerate(delegate.file_systems): | 92 for i, second_run_file_system in enumerate(delegate.file_systems): |
| 89 self.assertTrue(*second_run_file_system.CheckAndReset( | 93 self.assertTrue(*second_run_file_system.CheckAndReset( |
| 90 read_count=0, | 94 read_count=0, |
| 91 stat_count=first_run_file_systems[i].GetStatCount())) | 95 stat_count=first_run_file_systems[i].GetStatCount())) |
| 92 | 96 |
| 93 @IgnoreMissingContentProviders | 97 @IgnoreMissingContentProviders |
| 94 def testSafeRevision(self): | 98 def testSafeRevision(self): |
| 95 test_data = { | 99 test_data = { |
| 96 'api': { | 100 'extensions': { |
| 97 '_api_features.json': '{}', | 101 'browser': { |
| 98 '_manifest_features.json': '{}', | 102 'api': {} |
| 99 '_permission_features.json': '{}', | 103 } |
| 100 }, | 104 }, |
| 101 'docs': { | 105 'chrome': { |
| 102 'examples': { | 106 'browser': { |
| 103 'examples.txt': 'examples.txt contents' | 107 'extensions': { |
| 108 'OWNERS': '', | |
| 109 'api': {} | |
| 110 } | |
| 104 }, | 111 }, |
| 105 'server2': { | 112 'common': { |
| 106 'app.yaml': AppYamlHelper.GenerateAppYaml('2-0-8') | 113 'extensions': { |
| 107 }, | 114 'api': { |
| 108 'static': { | 115 '_api_features.json': '{}', |
| 109 'static.txt': 'static.txt contents' | 116 '_manifest_features.json': '{}', |
| 110 }, | 117 '_permission_features.json': '{}', |
| 111 'templates': { | |
| 112 'articles': { | |
| 113 'activeTab.html': 'activeTab.html contents' | |
| 114 }, | |
| 115 'intros': { | |
| 116 'browserAction.html': 'activeTab.html contents' | |
| 117 }, | |
| 118 'private': { | |
| 119 'table_of_contents.html': 'table_of_contents.html contents', | |
| 120 }, | |
| 121 'public': { | |
| 122 'apps': { | |
| 123 'storage.html': '<h1>storage.html</h1> contents' | |
| 124 }, | 118 }, |
| 125 'extensions': { | 119 'docs': { |
| 126 'storage.html': '<h1>storage.html</h1> contents' | 120 'examples': { |
| 127 }, | 121 'examples.txt': 'examples.txt contents' |
| 128 }, | 122 }, |
| 129 'json': { | 123 'server2': { |
| 130 'chrome_sidenav.json': '{}', | 124 'app.yaml': AppYamlHelper.GenerateAppYaml('2-0-8') |
| 131 'content_providers.json': ReadFile(CONTENT_PROVIDERS), | 125 }, |
| 132 'manifest.json': '{}', | 126 'static': { |
| 133 'permissions.json': '{}', | 127 'static.txt': 'static.txt contents' |
| 134 'strings.json': '{}', | 128 }, |
| 135 'whats_new.json': '{}', | 129 'templates': { |
| 136 }, | 130 'articles': { |
| 131 'activeTab.html': 'activeTab.html contents' | |
| 132 }, | |
| 133 'intros': { | |
| 134 'browserAction.html': 'activeTab.html contents' | |
| 135 }, | |
| 136 'private': { | |
| 137 'table_of_contents.html': 'table_of_contents.html contents', | |
| 138 }, | |
| 139 'public': { | |
| 140 'apps': { | |
| 141 'storage.html': '<h1>storage.html</h1> contents' | |
| 142 }, | |
| 143 'extensions': { | |
| 144 'storage.html': '<h1>storage.html</h1> contents' | |
| 145 }, | |
| 146 }, | |
| 147 'json': { | |
| 148 'chrome_sidenav.json': '{}', | |
| 149 'content_providers.json': ReadFile(CONTENT_PROVIDERS), | |
| 150 'manifest.json': '{}', | |
| 151 'permissions.json': '{}', | |
| 152 'strings.json': '{}', | |
| 153 'whats_new.json': '{}', | |
| 154 }, | |
| 155 } | |
| 156 } | |
| 157 } | |
| 137 } | 158 } |
| 138 } | 159 } |
| 139 } | 160 } |
| 140 | 161 |
| 141 updates = [] | 162 updates = [] |
| 142 | 163 |
| 143 def app_yaml_update(version): | 164 def app_yaml_update(version): |
| 144 return MoveTo(SERVER2, { | 165 return MoveTo(SERVER2, { |
| 145 'app.yaml': AppYamlHelper.GenerateAppYaml(version) | 166 'app.yaml': AppYamlHelper.GenerateAppYaml(version) |
| 146 }) | 167 }) |
| 147 def storage_html_update(update): | 168 def storage_html_update(update): |
| 148 return MoveTo(PUBLIC_TEMPLATES, { | 169 return MoveTo(PUBLIC_TEMPLATES, { |
| 149 'apps': {'storage.html': update} | 170 'apps': {'storage.html': update} |
| 150 }) | 171 }) |
| 151 def static_txt_update(update): | 172 def static_txt_update(update): |
| 152 return MoveTo(STATIC_DOCS, { | 173 return MoveTo(STATIC_DOCS, { |
| 153 'static.txt': update | 174 'static.txt': update |
| 154 }) | 175 }) |
| 155 | 176 |
| 156 storage_html_path = PUBLIC_TEMPLATES + 'apps/storage.html' | 177 storage_html_path = PUBLIC_TEMPLATES + 'apps/storage.html' |
| 157 static_txt_path = STATIC_DOCS + 'static.txt' | 178 static_txt_path = STATIC_DOCS + 'static.txt' |
| 158 | 179 |
| 159 def create_file_system(revision=None): | 180 def create_file_system(revision=None): |
| 160 '''Creates a MockFileSystem at |revision| by applying that many |updates| | 181 '''Creates a MockFileSystem at |revision| by applying that many |updates| |
| 161 to it. | 182 to it. |
| 162 ''' | 183 ''' |
| 163 mock_file_system = MockFileSystem( | 184 mock_file_system = MockFileSystem(TestFileSystem(test_data)) |
| 164 TestFileSystem(test_data, relative_to=CHROME_EXTENSIONS)) | |
| 165 updates_for_revision = ( | 185 updates_for_revision = ( |
| 166 updates if revision is None else updates[:int(revision)]) | 186 updates if revision is None else updates[:int(revision)]) |
| 167 for update in updates_for_revision: | 187 for update in updates_for_revision: |
| 168 mock_file_system.Update(update) | 188 mock_file_system.Update(update) |
| 169 return mock_file_system | 189 return mock_file_system |
| 170 | 190 |
| 171 delegate = _TestDelegate(create_file_system) | 191 delegate = _TestDelegate(create_file_system) |
| 172 delegate.SetAppVersion('2-0-8') | 192 delegate.SetAppVersion('2-0-8') |
| 173 | 193 |
| 174 file_systems = delegate.file_systems | 194 file_systems = delegate.file_systems |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 242 self.assertEqual(AppYamlHelper.GenerateAppYaml('2-1-0'), | 262 self.assertEqual(AppYamlHelper.GenerateAppYaml('2-1-0'), |
| 243 file_systems[-1].ReadSingle(APP_YAML).Get()) | 263 file_systems[-1].ReadSingle(APP_YAML).Get()) |
| 244 self.assertEqual('<h1>y</h1> u not update!', | 264 self.assertEqual('<h1>y</h1> u not update!', |
| 245 file_systems[-1].ReadSingle(storage_html_path).Get()) | 265 file_systems[-1].ReadSingle(storage_html_path).Get()) |
| 246 self.assertEqual('important content!', | 266 self.assertEqual('important content!', |
| 247 file_systems[-1].ReadSingle(static_txt_path).Get()) | 267 file_systems[-1].ReadSingle(static_txt_path).Get()) |
| 248 | 268 |
| 249 | 269 |
| 250 if __name__ == '__main__': | 270 if __name__ == '__main__': |
| 251 unittest.main() | 271 unittest.main() |
| OLD | NEW |