| Index: tests/super_mox.py
|
| diff --git a/tests/super_mox.py b/tests/super_mox.py
|
| index fdd123c92f621c742c780a8f1f8c89741edbc5d3..3da065394a2d7be2db9e9c76a3b868dc5b29753c 100644
|
| --- a/tests/super_mox.py
|
| +++ b/tests/super_mox.py
|
| @@ -5,13 +5,29 @@
|
|
|
| """Simplify unit tests based on pymox."""
|
|
|
| +import __builtin__
|
| import os
|
| import random
|
| import string
|
| -from pymox import mox
|
| +import subprocess
|
| +import sys
|
| +from pymox import mox
|
|
|
|
|
| -class SuperMoxTestBase(mox.MoxTestBase):
|
| +class IsOneOf(mox.Comparator):
|
| + def __init__(self, keys):
|
| + self._keys = keys
|
| +
|
| + def equals(self, rhs):
|
| + return rhs in self._keys
|
| +
|
| + def __repr__(self):
|
| + return '<sequence or map containing \'%s\'>' % str(self._keys)
|
| +
|
| +
|
| +class SuperMoxBaseTestBase(mox.MoxTestBase):
|
| + """Base class with some additional functionalities. People will usually want
|
| + to use SuperMoxTestBase instead."""
|
| # Backup the separator in case it gets mocked
|
| _OS_SEP = os.sep
|
| _RANDOM_CHOICE = random.choice
|
| @@ -57,3 +73,64 @@ class SuperMoxTestBase(mox.MoxTestBase):
|
| [i for i in expected_members if i not in actual_members])
|
| print diff
|
| self.assertEqual(actual_members, expected_members)
|
| +
|
| + def UnMock(self, object, name):
|
| + """Restore an object inside a test."""
|
| + for (parent, old_child, child_name) in self.mox.stubs.cache:
|
| + if parent == object and child_name == name:
|
| + setattr(parent, child_name, old_child)
|
| + break
|
| +
|
| +
|
| +class SuperMoxTestBase(SuperMoxBaseTestBase):
|
| + def setUp(self):
|
| + """Patch a few functions with know side-effects."""
|
| + SuperMoxBaseTestBase.setUp(self)
|
| + #self.mox.StubOutWithMock(__builtin__, 'open')
|
| + self.mox.StubOutWithMock(os, 'chdir')
|
| + self.mox.StubOutWithMock(os, 'chown')
|
| + self.mox.StubOutWithMock(os, 'close')
|
| + #self.mox.StubOutWithMock(os, 'closerange')
|
| + self.mox.StubOutWithMock(os, 'dup')
|
| + self.mox.StubOutWithMock(os, 'dup2')
|
| + self.mox.StubOutWithMock(os, 'fchdir')
|
| + #self.mox.StubOutWithMock(os, 'fchmod')
|
| + #self.mox.StubOutWithMock(os, 'fchown')
|
| + self.mox.StubOutWithMock(os, 'fdopen')
|
| + self.mox.StubOutWithMock(os, 'getcwd')
|
| + self.mox.StubOutWithMock(os, 'getpid')
|
| + self.mox.StubOutWithMock(os, 'lseek')
|
| + self.mox.StubOutWithMock(os, 'makedirs')
|
| + self.mox.StubOutWithMock(os, 'mkdir')
|
| + self.mox.StubOutWithMock(os, 'open')
|
| + self.mox.StubOutWithMock(os, 'popen')
|
| + self.mox.StubOutWithMock(os, 'popen2')
|
| + self.mox.StubOutWithMock(os, 'popen3')
|
| + self.mox.StubOutWithMock(os, 'popen4')
|
| + self.mox.StubOutWithMock(os, 'read')
|
| + self.mox.StubOutWithMock(os, 'remove')
|
| + self.mox.StubOutWithMock(os, 'removedirs')
|
| + self.mox.StubOutWithMock(os, 'rename')
|
| + self.mox.StubOutWithMock(os, 'renames')
|
| + self.mox.StubOutWithMock(os, 'rmdir')
|
| + self.mox.StubOutWithMock(os, 'symlink')
|
| + self.mox.StubOutWithMock(os, 'system')
|
| + self.mox.StubOutWithMock(os, 'tmpfile')
|
| + self.mox.StubOutWithMock(os, 'walk')
|
| + self.mox.StubOutWithMock(os, 'write')
|
| + self.mox.StubOutWithMock(os.path, 'abspath')
|
| + self.mox.StubOutWithMock(os.path, 'exists')
|
| + self.mox.StubOutWithMock(os.path, 'getsize')
|
| + self.mox.StubOutWithMock(os.path, 'isdir')
|
| + self.mox.StubOutWithMock(os.path, 'isfile')
|
| + self.mox.StubOutWithMock(os.path, 'islink')
|
| + self.mox.StubOutWithMock(os.path, 'ismount')
|
| + self.mox.StubOutWithMock(os.path, 'lexists')
|
| + self.mox.StubOutWithMock(os.path, 'realpath')
|
| + self.mox.StubOutWithMock(os.path, 'samefile')
|
| + self.mox.StubOutWithMock(os.path, 'walk')
|
| + self.mox.StubOutWithMock(subprocess, 'call')
|
| + self.mox.StubOutWithMock(subprocess, 'Popen')
|
| + #self.mox.StubOutWithMock(sys, 'stderr')
|
| + self.mox.StubOutWithMock(sys, 'stdin')
|
| + self.mox.StubOutWithMock(sys, 'stdout')
|
|
|