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

Unified Diff: tests/super_mox.py

Issue 392006: Cleanup the unit tests by mocking more system functions. (Closed)
Patch Set: Created 11 years, 1 month 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 | « tests/revert_unittest.py ('k') | tests/trychange_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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')
« no previous file with comments | « tests/revert_unittest.py ('k') | tests/trychange_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698