From 49450e0bbbfd9a039c8a93da7e685f1a944a7492 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Thu, 16 Oct 2014 18:18:16 -0400 Subject: [PATCH] DRY definition of _Monkey class used for testing. Move to a non-testcase module, to avoid dependencies between testcases. --- gcloud/_testing.py | 18 ++++++++++++++++++ gcloud/datastore/test___init__.py | 4 ++-- gcloud/datastore/test_connection.py | 18 +----------------- gcloud/storage/test___init__.py | 4 ++-- gcloud/storage/test_bucket.py | 10 +++++----- gcloud/storage/test_key.py | 6 +++--- gcloud/test_credentials.py | 19 ++----------------- 7 files changed, 33 insertions(+), 46 deletions(-) create mode 100644 gcloud/_testing.py diff --git a/gcloud/_testing.py b/gcloud/_testing.py new file mode 100644 index 000000000000..5f56ece97bbc --- /dev/null +++ b/gcloud/_testing.py @@ -0,0 +1,18 @@ +"""Shared testing utilities.""" + + +class _Monkey(object): + # context-manager for replacing module names in the scope of a test. + + def __init__(self, module, **kw): + self.module = module + self.to_restore = dict([(key, getattr(module, key)) for key in kw]) + for key, value in kw.items(): + setattr(module, key, value) + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + for key, value in self.to_restore.items(): + setattr(self.module, key, value) diff --git a/gcloud/datastore/test___init__.py b/gcloud/datastore/test___init__.py index cb36622dc42d..bfe7bd5c3ec2 100644 --- a/gcloud/datastore/test___init__.py +++ b/gcloud/datastore/test___init__.py @@ -13,7 +13,7 @@ def test_it(self): from gcloud.datastore import SCOPE from gcloud.datastore.connection import Connection from gcloud.test_credentials import _Client - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey CLIENT_EMAIL = 'phred@example.com' PRIVATE_KEY = 'SEEkR1t' @@ -45,7 +45,7 @@ def test_it(self): from gcloud.datastore.connection import Connection from gcloud.datastore.dataset import Dataset from gcloud.test_credentials import _Client - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey CLIENT_EMAIL = 'phred@example.com' PRIVATE_KEY = 'SEEkR1t' diff --git a/gcloud/datastore/test_connection.py b/gcloud/datastore/test_connection.py index 2a2af9209cfb..8471e4cb1c81 100644 --- a/gcloud/datastore/test_connection.py +++ b/gcloud/datastore/test_connection.py @@ -161,6 +161,7 @@ def test_transaction_setter(self): self.assertTrue(conn.transaction() is xact) def test_mutation_wo_transaction(self): + from gcloud._testing import _Monkey from gcloud.datastore.connection import datastore_pb class Mutation(object): @@ -866,20 +867,3 @@ def __init__(self, headers, content): def request(self, **kw): self._called_with = kw return self._headers, self._content - - -class _Monkey(object): - - # context-manager for replacing module names in the scope of a test. - def __init__(self, module, **kw): - self.module = module - self.to_restore = dict([(key, getattr(module, key)) for key in kw]) - for key, value in kw.items(): - setattr(module, key, value) - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - for key, value in self.to_restore.items(): - setattr(self.module, key, value) diff --git a/gcloud/storage/test___init__.py b/gcloud/storage/test___init__.py index fe640bdfea4d..bc5e237497a1 100644 --- a/gcloud/storage/test___init__.py +++ b/gcloud/storage/test___init__.py @@ -13,7 +13,7 @@ def test_it(self): from gcloud.storage import SCOPE from gcloud.storage.connection import Connection from gcloud.test_credentials import _Client - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey PROJECT = 'project' CLIENT_EMAIL = 'phred@example.com' PRIVATE_KEY = 'SEEkR1t' @@ -43,7 +43,7 @@ def _callFUT(self, *args, **kw): def test_it(self): from tempfile import NamedTemporaryFile from gcloud import storage - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey bucket = object() diff --git a/gcloud/storage/test_bucket.py b/gcloud/storage/test_bucket.py index 673369a7313b..2d57f7778ace 100644 --- a/gcloud/storage/test_bucket.py +++ b/gcloud/storage/test_bucket.py @@ -292,7 +292,7 @@ class _Key(object): self.assertEqual(kw['path'], COPY_PATH) def test_upload_file_default_key(self): - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey from gcloud.storage import bucket as MUT BASENAME = 'file.ext' FILENAME = '/path/to/%s' % BASENAME @@ -312,7 +312,7 @@ def set_contents_from_filename(self, filename): self.assertEqual(_uploaded, [(bucket, BASENAME, FILENAME)]) def test_upload_file_explicit_key(self): - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey from gcloud.storage import bucket as MUT FILENAME = '/path/to/file' KEY = 'key' @@ -332,7 +332,7 @@ def set_contents_from_filename(self, filename): self.assertEqual(_uploaded, [(bucket, KEY, FILENAME)]) def test_upload_file_object_no_key(self): - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey from gcloud.storage import bucket as MUT FILENAME = 'file.txt' FILEOBJECT = MockFile(FILENAME) @@ -352,7 +352,7 @@ def set_contents_from_file(self, fh): self.assertEqual(_uploaded, [(bucket, FILENAME, FILEOBJECT)]) def test_upload_file_object_explicit_key(self): - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey from gcloud.storage import bucket as MUT FILENAME = 'file.txt' FILEOBJECT = MockFile(FILENAME) @@ -839,7 +839,7 @@ def test_make_public_w_future(self): def test_make_public_recursive(self): from gcloud.storage.acl import ACL - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey from gcloud.storage import iterator from gcloud.storage import bucket as MUT _saved = [] diff --git a/gcloud/storage/test_key.py b/gcloud/storage/test_key.py index 053c30883322..538dd056ede6 100644 --- a/gcloud/storage/test_key.py +++ b/gcloud/storage/test_key.py @@ -121,7 +121,7 @@ def test_delete(self): def test_get_contents_to_file(self): from StringIO import StringIO - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey from gcloud.storage import key as MUT _CHUNKS = ['abc', 'def'] KEY = 'key' @@ -135,7 +135,7 @@ def test_get_contents_to_file(self): def test_get_contents_to_filename(self): from tempfile import NamedTemporaryFile - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey from gcloud.storage import key as MUT _CHUNKS = ['abc', 'def'] KEY = 'key' @@ -151,7 +151,7 @@ def test_get_contents_to_filename(self): self.assertEqual(wrote, ''.join(_CHUNKS)) def test_get_contents_as_string(self): - from gcloud.test_credentials import _Monkey + from gcloud._testing import _Monkey from gcloud.storage import key as MUT _CHUNKS = ['abc', 'def'] KEY = 'key' diff --git a/gcloud/test_credentials.py b/gcloud/test_credentials.py index 51d83e5d0b03..ce5cdeea4fbd 100644 --- a/gcloud/test_credentials.py +++ b/gcloud/test_credentials.py @@ -6,6 +6,7 @@ class TestCredentials(unittest2.TestCase): def test_get_for_service_account_wo_scope(self): from tempfile import NamedTemporaryFile from gcloud import credentials + from gcloud._testing import _Monkey CLIENT_EMAIL = 'phred@example.com' PRIVATE_KEY = 'SEEkR1t' client = _Client() @@ -25,6 +26,7 @@ def test_get_for_service_account_wo_scope(self): def test_get_for_service_account_w_scope(self): from tempfile import NamedTemporaryFile from gcloud import credentials + from gcloud._testing import _Monkey CLIENT_EMAIL = 'phred@example.com' PRIVATE_KEY = 'SEEkR1t' SCOPE = 'SCOPE' @@ -51,20 +53,3 @@ def __init__(self): def SignedJwtAssertionCredentials(self, **kw): self._called_with = kw return self._signed - - -class _Monkey(object): - # context-manager for replacing module names in the scope of a test. - - def __init__(self, module, **kw): - self.module = module - self.to_restore = dict([(key, getattr(module, key)) for key in kw]) - for key, value in kw.items(): - setattr(module, key, value) - - def __enter__(self): - return self - - def __exit__(self, exc_type, exc_val, exc_tb): - for key, value in self.to_restore.items(): - setattr(self.module, key, value)