| Index: chrome/common/extensions/docs/server2/cron_servlet_test.py
|
| diff --git a/chrome/common/extensions/docs/server2/cron_servlet_test.py b/chrome/common/extensions/docs/server2/cron_servlet_test.py
|
| deleted file mode 100755
|
| index dda11cb34869286e616c29b073cbbe09cd37a06d..0000000000000000000000000000000000000000
|
| --- a/chrome/common/extensions/docs/server2/cron_servlet_test.py
|
| +++ /dev/null
|
| @@ -1,268 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright 2013 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 app_yaml_helper import AppYamlHelper
|
| -from content_providers import IgnoreMissingContentProviders
|
| -from cron_servlet import CronServlet
|
| -from empty_dir_file_system import EmptyDirFileSystem
|
| -from environment import GetAppVersion
|
| -from extensions_paths import (
|
| - APP_YAML, CONTENT_PROVIDERS, CHROME_EXTENSIONS, PUBLIC_TEMPLATES, SERVER2,
|
| - STATIC_DOCS)
|
| -from fake_fetchers import ConfigureFakeFetchers
|
| -from gcs_file_system_provider import CloudStorageFileSystemProvider
|
| -from github_file_system_provider import GithubFileSystemProvider
|
| -from host_file_system_provider import HostFileSystemProvider
|
| -from local_file_system import LocalFileSystem
|
| -from mock_file_system import MockFileSystem
|
| -from servlet import Request
|
| -from test_branch_utility import TestBranchUtility
|
| -from test_file_system import MoveTo, TestFileSystem
|
| -from test_util import EnableLogging, ReadFile
|
| -
|
| -
|
| -# NOTE(kalman): The ObjectStore created by the CronServlet is backed onto our
|
| -# fake AppEngine memcache/datastore, so the tests aren't isolated. Of course,
|
| -# if the host file systems have different identities, they will be, sort of.
|
| -class _TestDelegate(CronServlet.Delegate):
|
| - def __init__(self, create_file_system):
|
| - self.file_systems = []
|
| - # A callback taking a commit and returning a file system.
|
| - self._create_file_system = create_file_system
|
| - self._app_version = GetAppVersion()
|
| -
|
| - def CreateBranchUtility(self, object_store_creator):
|
| - return TestBranchUtility.CreateWithCannedData()
|
| -
|
| - def CreateHostFileSystemProvider(self,
|
| - object_store_creator,
|
| - pinned_commit=None):
|
| - def constructor(branch=None, commit=None):
|
| - file_system = self._create_file_system(commit)
|
| - self.file_systems.append(file_system)
|
| - return file_system
|
| - return HostFileSystemProvider(object_store_creator,
|
| - pinned_commit=pinned_commit,
|
| - constructor_for_test=constructor)
|
| -
|
| - def CreateGithubFileSystemProvider(self, object_store_creator):
|
| - return GithubFileSystemProvider.ForEmpty()
|
| -
|
| - def CreateGCSFileSystemProvider(self, object_store_creator):
|
| - return CloudStorageFileSystemProvider.ForEmpty()
|
| -
|
| - def GetAppVersion(self):
|
| - return self._app_version
|
| -
|
| - # (non-Delegate method).
|
| - def SetAppVersion(self, app_version):
|
| - self._app_version = app_version
|
| -
|
| -class CronServletTest(unittest.TestCase):
|
| - @EnableLogging('info')
|
| - def testEverything(self):
|
| - # All these tests are dependent (see above comment) so lump everything in
|
| - # the one test.
|
| - delegate = _TestDelegate(lambda _: MockFileSystem(LocalFileSystem.Create()))
|
| -
|
| - # Test that the cron runs successfully.
|
| - response = CronServlet(Request.ForTest('trunk'),
|
| - delegate_for_test=delegate).Get()
|
| - self.assertEqual(200, response.status)
|
| -
|
| - # Save the file systems created, start with a fresh set for the next run.
|
| - first_run_file_systems = delegate.file_systems[:]
|
| - delegate.file_systems[:] = []
|
| -
|
| - # When re-running, all file systems should be Stat()d the same number of
|
| - # times, but the second round shouldn't have been re-Read() since the
|
| - # Stats haven't changed.
|
| - response = CronServlet(Request.ForTest('trunk'),
|
| - delegate_for_test=delegate).Get()
|
| - self.assertEqual(200, response.status)
|
| -
|
| - self.assertEqual(len(first_run_file_systems), len(delegate.file_systems))
|
| - for i, second_run_file_system in enumerate(delegate.file_systems):
|
| - self.assertTrue(*second_run_file_system.CheckAndReset(
|
| - read_count=0,
|
| - stat_count=first_run_file_systems[i].GetStatCount()))
|
| -
|
| - @IgnoreMissingContentProviders
|
| - def testSafeRevision(self):
|
| - test_data = {
|
| - 'extensions': {
|
| - 'browser': {
|
| - 'api': {}
|
| - }
|
| - },
|
| - 'chrome': {
|
| - 'browser': {
|
| - 'extensions': {
|
| - 'OWNERS': '',
|
| - 'api': {}
|
| - }
|
| - },
|
| - 'common': {
|
| - 'extensions': {
|
| - 'api': {
|
| - '_api_features.json': '{}',
|
| - '_manifest_features.json': '{}',
|
| - '_permission_features.json': '{}',
|
| - },
|
| - 'docs': {
|
| - 'examples': {
|
| - 'examples.txt': 'examples.txt contents'
|
| - },
|
| - 'server2': {
|
| - 'app.yaml': AppYamlHelper.GenerateAppYaml('2-0-8')
|
| - },
|
| - 'static': {
|
| - 'static.txt': 'static.txt contents'
|
| - },
|
| - 'templates': {
|
| - 'articles': {
|
| - 'activeTab.html': 'activeTab.html contents'
|
| - },
|
| - 'intros': {
|
| - 'browserAction.html': 'activeTab.html contents'
|
| - },
|
| - 'private': {
|
| - 'table_of_contents.html': 'table_of_contents.html contents',
|
| - },
|
| - 'public': {
|
| - 'apps': {
|
| - 'storage.html': '<h1>storage.html</h1> contents'
|
| - },
|
| - 'extensions': {
|
| - 'storage.html': '<h1>storage.html</h1> contents'
|
| - },
|
| - },
|
| - 'json': {
|
| - 'chrome_sidenav.json': '{}',
|
| - 'content_providers.json': ReadFile(CONTENT_PROVIDERS),
|
| - 'manifest.json': '{}',
|
| - 'permissions.json': '{}',
|
| - 'strings.json': '{}',
|
| - 'whats_new.json': '{}',
|
| - },
|
| - }
|
| - }
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - updates = []
|
| -
|
| - def app_yaml_update(version):
|
| - return MoveTo(SERVER2, {
|
| - 'app.yaml': AppYamlHelper.GenerateAppYaml(version)
|
| - })
|
| - def storage_html_update(update):
|
| - return MoveTo(PUBLIC_TEMPLATES, {
|
| - 'apps': {'storage.html': update}
|
| - })
|
| - def static_txt_update(update):
|
| - return MoveTo(STATIC_DOCS, {
|
| - 'static.txt': update
|
| - })
|
| -
|
| - storage_html_path = PUBLIC_TEMPLATES + 'apps/storage.html'
|
| - static_txt_path = STATIC_DOCS + 'static.txt'
|
| -
|
| - def create_file_system(commit=None):
|
| - '''Creates a MockFileSystem at |commit| by applying that many |updates|
|
| - to it.
|
| - '''
|
| - mock_file_system = MockFileSystem(TestFileSystem(test_data))
|
| - updates_for_commit = (
|
| - updates if commit is None else updates[:int(commit)])
|
| - for update in updates_for_commit:
|
| - mock_file_system.Update(update)
|
| - return mock_file_system
|
| -
|
| - delegate = _TestDelegate(create_file_system)
|
| - delegate.SetAppVersion('2-0-8')
|
| -
|
| - file_systems = delegate.file_systems
|
| -
|
| - # No updates applied yet.
|
| - CronServlet(Request.ForTest('trunk'), delegate_for_test=delegate).Get()
|
| - self.assertEqual(AppYamlHelper.GenerateAppYaml('2-0-8'),
|
| - file_systems[-1].ReadSingle(APP_YAML).Get())
|
| - self.assertEqual('<h1>storage.html</h1> contents',
|
| - file_systems[-1].ReadSingle(storage_html_path).Get())
|
| -
|
| - # Apply updates to storage.html.
|
| - updates.append(storage_html_update('interim contents'))
|
| - updates.append(storage_html_update('<h1>new</h1> contents'))
|
| -
|
| - CronServlet(Request.ForTest('trunk'), delegate_for_test=delegate).Get()
|
| - self.assertEqual(AppYamlHelper.GenerateAppYaml('2-0-8'),
|
| - file_systems[-1].ReadSingle(APP_YAML).Get())
|
| - self.assertEqual('<h1>new</h1> contents',
|
| - file_systems[-1].ReadSingle(storage_html_path).Get())
|
| -
|
| - # Apply several updates to storage.html and app.yaml. The file system
|
| - # should be pinned at the version before app.yaml changed.
|
| - updates.append(storage_html_update('<h1>stuck here</h1> contents'))
|
| -
|
| - double_update = storage_html_update('<h1>newer</h1> contents')
|
| - double_update.update(app_yaml_update('2-0-10'))
|
| - updates.append(double_update)
|
| -
|
| - updates.append(storage_html_update('never gonna reach here'))
|
| -
|
| - CronServlet(Request.ForTest('trunk'), delegate_for_test=delegate).Get()
|
| - self.assertEqual(AppYamlHelper.GenerateAppYaml('2-0-8'),
|
| - file_systems[-1].ReadSingle(APP_YAML).Get())
|
| - self.assertEqual('<h1>stuck here</h1> contents',
|
| - file_systems[-1].ReadSingle(storage_html_path).Get())
|
| -
|
| - # Further pushes to storage.html will keep it pinned.
|
| - updates.append(storage_html_update('<h1>y</h1> u not update!'))
|
| -
|
| - CronServlet(Request.ForTest('trunk'), delegate_for_test=delegate).Get()
|
| - self.assertEqual(AppYamlHelper.GenerateAppYaml('2-0-8'),
|
| - file_systems[-1].ReadSingle(APP_YAML).Get())
|
| - self.assertEqual('<h1>stuck here</h1> contents',
|
| - file_systems[-1].ReadSingle(storage_html_path).Get())
|
| -
|
| - # Likewise app.yaml.
|
| - updates.append(app_yaml_update('2-1-0'))
|
| -
|
| - CronServlet(Request.ForTest('trunk'), delegate_for_test=delegate).Get()
|
| - self.assertEqual(AppYamlHelper.GenerateAppYaml('2-0-8'),
|
| - file_systems[-1].ReadSingle(APP_YAML).Get())
|
| - self.assertEqual('<h1>stuck here</h1> contents',
|
| - file_systems[-1].ReadSingle(storage_html_path).Get())
|
| -
|
| - # And updates to other content won't happen either.
|
| - updates.append(static_txt_update('important content!'))
|
| -
|
| - CronServlet(Request.ForTest('trunk'), delegate_for_test=delegate).Get()
|
| - self.assertEqual(AppYamlHelper.GenerateAppYaml('2-0-8'),
|
| - file_systems[-1].ReadSingle(APP_YAML).Get())
|
| - self.assertEqual('<h1>stuck here</h1> contents',
|
| - file_systems[-1].ReadSingle(storage_html_path).Get())
|
| - self.assertEqual('static.txt contents',
|
| - file_systems[-1].ReadSingle(static_txt_path).Get())
|
| -
|
| - # Lastly - when the app version changes, everything should no longer be
|
| - # pinned.
|
| - delegate.SetAppVersion('2-1-0')
|
| - CronServlet(Request.ForTest('trunk'), delegate_for_test=delegate).Get()
|
| - self.assertEqual(AppYamlHelper.GenerateAppYaml('2-1-0'),
|
| - file_systems[-1].ReadSingle(APP_YAML).Get())
|
| - self.assertEqual('<h1>y</h1> u not update!',
|
| - file_systems[-1].ReadSingle(storage_html_path).Get())
|
| - self.assertEqual('important content!',
|
| - file_systems[-1].ReadSingle(static_txt_path).Get())
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - unittest.main()
|
|
|