aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/python/platform/default/_googletest.py
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/python/platform/default/_googletest.py')
-rw-r--r--tensorflow/python/platform/default/_googletest.py248
1 files changed, 0 insertions, 248 deletions
diff --git a/tensorflow/python/platform/default/_googletest.py b/tensorflow/python/platform/default/_googletest.py
deleted file mode 100644
index ed77f818e8..0000000000
--- a/tensorflow/python/platform/default/_googletest.py
+++ /dev/null
@@ -1,248 +0,0 @@
-# Copyright 2015 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# ==============================================================================
-
-"""Imports unittest as a replacement for testing.pybase.googletest."""
-from __future__ import absolute_import
-from __future__ import division
-from __future__ import print_function
-
-import inspect
-import itertools
-import os
-import sys
-import tempfile
-
-# pylint: disable=wildcard-import
-from unittest import *
-# pylint: enable=wildcard-import
-
-
-unittest_main = main
-
-
-# pylint: disable=invalid-name
-# pylint: disable=undefined-variable
-def main(*args, **kwargs):
- """Delegate to unittest.main after redefining testLoader."""
- if 'TEST_SHARD_STATUS_FILE' in os.environ:
- try:
- f = None
- try:
- f = open(os.environ['TEST_SHARD_STATUS_FILE'], 'w')
- f.write('')
- except IOError:
- sys.stderr.write('Error opening TEST_SHARD_STATUS_FILE (%s). Exiting.'
- % os.environ['TEST_SHARD_STATUS_FILE'])
- sys.exit(1)
- finally:
- if f is not None: f.close()
-
- if ('TEST_TOTAL_SHARDS' not in os.environ or
- 'TEST_SHARD_INDEX' not in os.environ):
- return unittest_main(*args, **kwargs)
-
- total_shards = int(os.environ['TEST_TOTAL_SHARDS'])
- shard_index = int(os.environ['TEST_SHARD_INDEX'])
- base_loader = TestLoader()
-
- delegate_get_names = base_loader.getTestCaseNames
- bucket_iterator = itertools.cycle(range(total_shards))
-
- def getShardedTestCaseNames(testCaseClass):
- filtered_names = []
- for testcase in sorted(delegate_get_names(testCaseClass)):
- bucket = next(bucket_iterator)
- if bucket == shard_index:
- filtered_names.append(testcase)
- return filtered_names
-
- # Override getTestCaseNames
- base_loader.getTestCaseNames = getShardedTestCaseNames
-
- kwargs['testLoader'] = base_loader
- unittest_main(*args, **kwargs)
-
-
-def GetTempDir():
- first_frame = inspect.stack()[-1][0]
- temp_dir = os.path.join(
- tempfile.gettempdir(), os.path.basename(inspect.getfile(first_frame)))
- temp_dir = temp_dir.rstrip('.py')
- if not os.path.isdir(temp_dir):
- os.mkdir(temp_dir, 0o755)
- return temp_dir
-
-
-def StatefulSessionAvailable():
- return False
-
-
-class StubOutForTesting(object):
- """Support class for stubbing methods out for unit testing.
-
- Sample Usage:
-
- You want os.path.exists() to always return true during testing.
-
- stubs = StubOutForTesting()
- stubs.Set(os.path, 'exists', lambda x: 1)
- ...
- stubs.CleanUp()
-
- The above changes os.path.exists into a lambda that returns 1. Once
- the ... part of the code finishes, the CleanUp() looks up the old
- value of os.path.exists and restores it.
- """
-
- def __init__(self):
- self.cache = []
- self.stubs = []
-
- def __del__(self):
- """Do not rely on the destructor to undo your stubs.
-
- You cannot guarantee exactly when the destructor will get called without
- relying on implementation details of a Python VM that may change.
- """
- self.CleanUp()
-
- # __enter__ and __exit__ allow use as a context manager.
- def __enter__(self):
- return self
-
- def __exit__(self, unused_exc_type, unused_exc_value, unused_tb):
- self.CleanUp()
-
- def CleanUp(self):
- """Undoes all SmartSet() & Set() calls, restoring original definitions."""
- self.SmartUnsetAll()
- self.UnsetAll()
-
- def SmartSet(self, obj, attr_name, new_attr):
- """Replace obj.attr_name with new_attr.
-
- This method is smart and works at the module, class, and instance level
- while preserving proper inheritance. It will not stub out C types however
- unless that has been explicitly allowed by the type.
-
- This method supports the case where attr_name is a staticmethod or a
- classmethod of obj.
-
- Notes:
- - If obj is an instance, then it is its class that will actually be
- stubbed. Note that the method Set() does not do that: if obj is
- an instance, it (and not its class) will be stubbed.
- - The stubbing is using the builtin getattr and setattr. So, the __get__
- and __set__ will be called when stubbing (TODO: A better idea would
- probably be to manipulate obj.__dict__ instead of getattr() and
- setattr()).
-
- Args:
- obj: The object whose attributes we want to modify.
- attr_name: The name of the attribute to modify.
- new_attr: The new value for the attribute.
-
- Raises:
- AttributeError: If the attribute cannot be found.
- """
- if (inspect.ismodule(obj) or
- (not inspect.isclass(obj) and attr_name in obj.__dict__)):
- orig_obj = obj
- orig_attr = getattr(obj, attr_name)
- else:
- if not inspect.isclass(obj):
- mro = list(inspect.getmro(obj.__class__))
- else:
- mro = list(inspect.getmro(obj))
-
- mro.reverse()
-
- orig_attr = None
- found_attr = False
-
- for cls in mro:
- try:
- orig_obj = cls
- orig_attr = getattr(obj, attr_name)
- found_attr = True
- except AttributeError:
- continue
-
- if not found_attr:
- raise AttributeError('Attribute not found.')
-
- # Calling getattr() on a staticmethod transforms it to a 'normal' function.
- # We need to ensure that we put it back as a staticmethod.
- old_attribute = obj.__dict__.get(attr_name)
- if old_attribute is not None and isinstance(old_attribute, staticmethod):
- orig_attr = staticmethod(orig_attr)
-
- self.stubs.append((orig_obj, attr_name, orig_attr))
- setattr(orig_obj, attr_name, new_attr)
-
- def SmartUnsetAll(self):
- """Reverses SmartSet() calls, restoring things to original definitions.
-
- This method is automatically called when the StubOutForTesting()
- object is deleted; there is no need to call it explicitly.
-
- It is okay to call SmartUnsetAll() repeatedly, as later calls have
- no effect if no SmartSet() calls have been made.
- """
- for args in reversed(self.stubs):
- setattr(*args)
-
- self.stubs = []
-
- def Set(self, parent, child_name, new_child):
- """In parent, replace child_name's old definition with new_child.
-
- The parent could be a module when the child is a function at
- module scope. Or the parent could be a class when a class' method
- is being replaced. The named child is set to new_child, while the
- prior definition is saved away for later, when UnsetAll() is
- called.
-
- This method supports the case where child_name is a staticmethod or a
- classmethod of parent.
-
- Args:
- parent: The context in which the attribute child_name is to be changed.
- child_name: The name of the attribute to change.
- new_child: The new value of the attribute.
- """
- old_child = getattr(parent, child_name)
-
- old_attribute = parent.__dict__.get(child_name)
- if old_attribute is not None and isinstance(old_attribute, staticmethod):
- old_child = staticmethod(old_child)
-
- self.cache.append((parent, old_child, child_name))
- setattr(parent, child_name, new_child)
-
- def UnsetAll(self):
- """Reverses Set() calls, restoring things to their original definitions.
-
- This method is automatically called when the StubOutForTesting()
- object is deleted; there is no need to call it explicitly.
-
- It is okay to call UnsetAll() repeatedly, as later calls have no
- effect if no Set() calls have been made.
- """
- # Undo calls to Set() in reverse order, in case Set() was called on the
- # same arguments repeatedly (want the original call to be last one undone)
- for (parent, old_child, child_name) in reversed(self.cache):
- setattr(parent, child_name, old_child)
- self.cache = []