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

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

Issue 10871002: Extensions Docs Server: Testing GithubFileSystem and cron jobs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: small changes Created 8 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
« no previous file with comments | « no previous file | chrome/common/extensions/docs/server2/fake_fetchers.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/extensions/docs/server2/appengine_wrappers.py
diff --git a/chrome/common/extensions/docs/server2/appengine_wrappers.py b/chrome/common/extensions/docs/server2/appengine_wrappers.py
index 5366e322aab36e29ee9ef66779b8c08aaf2485a2..e47f7ad3974b9398c35e1f86ca7aa4a56b5de721 100644
--- a/chrome/common/extensions/docs/server2/appengine_wrappers.py
+++ b/chrome/common/extensions/docs/server2/appengine_wrappers.py
@@ -14,6 +14,7 @@ try:
import google.appengine.api.urlfetch as urlfetch
except ImportError:
import re
+ from StringIO import StringIO
FAKE_URL_FETCHER_CONFIGURATION = None
@@ -67,8 +68,56 @@ except ImportError:
def __getattr__(self, attr):
raise NotImplementedError()
- blobstore = NotImplemented()
- files = NotImplemented()
+ _BLOBS = {}
+ class FakeBlobstore(object):
+ class BlobReader(object):
+ def __init__(self, blob_key):
+ self._data = _BLOBS[blob_key].getvalue()
+
+ def read(self):
+ return self._data
+
+ blobstore = FakeBlobstore()
+
+ class FakeFileInterface(object):
+ """This class allows a StringIO object to be used in a with block like a
+ file.
+ """
+ def __init__(self, io):
+ self._io = io
+
+ def __exit__(self, *args):
+ pass
+
+ def write(self, data):
+ self._io.write(data)
+
+ def __enter__(self, *args):
+ return self._io
+
+ class FakeFiles(object):
+ _next_blobstore_key = 0
+ class blobstore(object):
+ @staticmethod
+ def create():
+ FakeFiles._next_blobstore_key += 1
+ return FakeFiles._next_blobstore_key
+
+ @staticmethod
+ def get_blob_key(filename):
+ return filename
+
+ def open(self, filename, mode):
+ _BLOBS[filename] = StringIO()
+ return FakeFileInterface(_BLOBS[filename])
+
+ def GetBlobKeys(self):
+ return _BLOBS.keys()
+
+ def finalize(self, filename):
+ pass
+
+ files = FakeFiles()
class InMemoryMemcache(object):
"""A fake memcache that does nothing.
@@ -88,6 +137,7 @@ except ImportError:
def delete(self, key, namespace):
return
+
memcache = InMemoryMemcache()
class webapp(object):
@@ -102,17 +152,32 @@ except ImportError:
self.request.path = path
class _Db_Result(object):
+ def __init__(self, data):
+ self._data = data
+
+ class _Result(object):
+ def __init__(self, value):
+ self.value = value
+
def get(self):
- return []
+ return self._Result(self._data)
class db(object):
+ _store = {}
class StringProperty(object):
pass
class Model(object):
+ def __init__(self, key_='', value=''):
+ self._key = key_
+ self._value = value
+
@staticmethod
- def gql(*args):
- return _Db_Result()
+ def gql(query, key):
+ return _Db_Result(db._store.get(key, None))
+
+ def put(self):
+ db._store[self._key] = self._value
class BlobReferenceProperty(object):
pass
« no previous file with comments | « no previous file | chrome/common/extensions/docs/server2/fake_fetchers.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698