From 29a7a60fafaec422f2fade180fdb353bf1de92f7 Mon Sep 17 00:00:00 2001
From: fuzzyman <fuzzyman@localhost>
Date: Mon, 12 Jul 2010 13:48:08 +0000
Subject: [PATCH] Adding tox config file and moving with tests to not see
 failures under Python 2.4.

---
 docs/changelog.txt |   1 +
 tests/_testwith.py | 127 ++++++++++++++++++++++++++++++++++++++++++
 tests/testwith.py  | 135 ++++-----------------------------------------
 tox.ini            |   4 ++
 4 files changed, 144 insertions(+), 123 deletions(-)
 create mode 100644 tests/_testwith.py
 create mode 100644 tox.ini

diff --git a/docs/changelog.txt b/docs/changelog.txt
index 45b0a28..4a1d3f9 100755
--- a/docs/changelog.txt
+++ b/docs/changelog.txt
@@ -52,6 +52,7 @@ CHANGELOG
   - pickle methods
   - ``__trunc__``, ``__ceil__`` and ``__floor__``
 
+* with statement tests now skipped on Python 2.4
 * Improved several docstrings and documentation
 
 
diff --git a/tests/_testwith.py b/tests/_testwith.py
new file mode 100644
index 0000000..9a723b9
--- /dev/null
+++ b/tests/_testwith.py
@@ -0,0 +1,127 @@
+# Copyright (C) 2007-2010 Michael Foord & the mock team
+# E-mail: fuzzyman AT voidspace DOT org DOT uk
+# http://www.voidspace.org.uk/python/mock/
+
+from __future__ import with_statement
+
+from tests.support import unittest2
+
+from mock import MagicMock, Mock, patch, sentinel
+
+from tests.support_with import catch_warnings, nested
+
+something  = sentinel.Something
+something_else  = sentinel.SomethingElse
+
+
+class WithTest(unittest2.TestCase):
+
+    def testWithStatement(self):
+        with patch('tests._testwith.something', sentinel.Something2):
+            self.assertEqual(something, sentinel.Something2, "unpatched")
+        self.assertEqual(something, sentinel.Something)
+
+    def testWithStatementException(self):
+        try:
+            with patch('tests._testwith.something', sentinel.Something2):
+                self.assertEqual(something, sentinel.Something2, "unpatched")
+                raise Exception('pow')
+        except Exception:
+            pass
+        else:
+            self.fail("patch swallowed exception")
+        self.assertEqual(something, sentinel.Something)
+
+
+    def testWithStatementAs(self):
+        with patch('tests._testwith.something') as mock_something:
+            self.assertEqual(something, mock_something, "unpatched")
+            self.assertTrue(isinstance(mock_something, Mock), "patching wrong type")
+        self.assertEqual(something, sentinel.Something)
+
+
+    def testPatchObjectWithStatementAs(self):
+        mock = Mock()
+        original = mock.something
+        with patch.object(mock, 'something'):
+            self.assertNotEquals(mock.something, original, "unpatched")
+        self.assertEqual(mock.something, original)
+
+
+    def testWithStatementNested(self):
+        with catch_warnings(record=True):
+            # nested is deprecated in Python 2.7
+            with nested(patch('tests._testwith.something'),
+                    patch('tests._testwith.something_else')) as (mock_something, mock_something_else):
+                self.assertEqual(something, mock_something, "unpatched")
+                self.assertEqual(something_else, mock_something_else, "unpatched")
+        self.assertEqual(something, sentinel.Something)
+        self.assertEqual(something_else, sentinel.SomethingElse)
+
+
+    def testWithStatementSpecified(self):
+        with patch('tests._testwith.something', sentinel.Patched) as mock_something:
+            self.assertEqual(something, mock_something, "unpatched")
+            self.assertEqual(mock_something, sentinel.Patched, "wrong patch")
+        self.assertEqual(something, sentinel.Something)
+
+
+    def testContextManagerMocking(self):
+        mock = Mock()
+        mock.__enter__ = Mock()
+        mock.__exit__ = Mock()
+        mock.__exit__.return_value = False
+
+        with mock as m:
+            self.assertEqual(m, mock.__enter__.return_value)
+        mock.__enter__.assert_called_with()
+        mock.__exit__.assert_called_with(None, None, None)
+
+
+    def testContextManagerWithMagicMock(self):
+        mock = MagicMock()
+
+        with self.assertRaises(TypeError):
+            with mock:
+                'foo' + 3
+        mock.__enter__.assert_called_with()
+        self.assertTrue(mock.__exit__.called)
+
+
+    def testWithStatementSameAttribute(self):
+        with patch('tests._testwith.something', sentinel.Patched) as mock_something:
+            self.assertEqual(something, mock_something, "unpatched")
+
+            with patch('tests._testwith.something') as mock_again:
+                self.assertEqual(something, mock_again, "unpatched")
+
+            self.assertEqual(something, mock_something, "restored with wrong instance")
+
+        self.assertEqual(something, sentinel.Something, "not restored")
+
+    def testWithStatementImbricated(self):
+        with patch('tests._testwith.something') as mock_something:
+            self.assertEqual(something, mock_something, "unpatched")
+
+            with patch('tests._testwith.something_else') as mock_something_else:
+                self.assertEqual(something_else, mock_something_else, "unpatched")
+
+        self.assertEqual(something, sentinel.Something)
+        self.assertEqual(something_else, sentinel.SomethingElse)
+
+    def testDictContextManager(self):
+        foo = {}
+        with patch.dict(foo, {'a': 'b'}):
+            self.assertEqual(foo, {'a': 'b'})
+        self.assertEqual(foo, {})
+
+        with self.assertRaises(NameError):
+            with patch.dict(foo, {'a': 'b'}):
+                self.assertEqual(foo, {'a': 'b'})
+                raise NameError('Konrad')
+
+        self.assertEqual(foo, {})
+
+
+if __name__ == '__main__':
+    unittest2.main()
diff --git a/tests/testwith.py b/tests/testwith.py
index 411cdbf..72a7d3c 100644
--- a/tests/testwith.py
+++ b/tests/testwith.py
@@ -1,127 +1,16 @@
-# Copyright (C) 2007-2010 Michael Foord & the mock team
-# E-mail: fuzzyman AT voidspace DOT org DOT uk
-# http://www.voidspace.org.uk/python/mock/
-
-from __future__ import with_statement
-
-from tests.support import unittest2
-
-from mock import MagicMock, Mock, patch, sentinel
-
-from tests.support_with import catch_warnings, nested
-
-something  = sentinel.Something
-something_else  = sentinel.SomethingElse
-
-
-class WithTest(unittest2.TestCase):
-
-    def testWithStatement(self):
-        with patch('tests.testwith.something', sentinel.Something2):
-            self.assertEqual(something, sentinel.Something2, "unpatched")
-        self.assertEqual(something, sentinel.Something)
-
-    def testWithStatementException(self):
-        try:
-            with patch('tests.testwith.something', sentinel.Something2):
-                self.assertEqual(something, sentinel.Something2, "unpatched")
-                raise Exception('pow')
-        except Exception:
+import sys
+
+if sys.version_info[:2] > (2, 5):
+    from tests._testwith import *
+else:
+    from tests.support import unittest2
+    
+    class TestWith(unittest2.TestCase):
+        
+        @unittest2.skip('tests using with statement skipped on Python 2.4')
+        def testWith(self):
             pass
-        else:
-            self.fail("patch swallowed exception")
-        self.assertEqual(something, sentinel.Something)
-
-
-    def testWithStatementAs(self):
-        with patch('tests.testwith.something') as mock_something:
-            self.assertEqual(something, mock_something, "unpatched")
-            self.assertTrue(isinstance(mock_something, Mock), "patching wrong type")
-        self.assertEqual(something, sentinel.Something)
-
-
-    def testPatchObjectWithStatementAs(self):
-        mock = Mock()
-        original = mock.something
-        with patch.object(mock, 'something'):
-            self.assertNotEquals(mock.something, original, "unpatched")
-        self.assertEqual(mock.something, original)
-
-
-    def testWithStatementNested(self):
-        with catch_warnings(record=True):
-            # nested is deprecated in Python 2.7
-            with nested(patch('tests.testwith.something'),
-                    patch('tests.testwith.something_else')) as (mock_something, mock_something_else):
-                self.assertEqual(something, mock_something, "unpatched")
-                self.assertEqual(something_else, mock_something_else, "unpatched")
-        self.assertEqual(something, sentinel.Something)
-        self.assertEqual(something_else, sentinel.SomethingElse)
-
-
-    def testWithStatementSpecified(self):
-        with patch('tests.testwith.something', sentinel.Patched) as mock_something:
-            self.assertEqual(something, mock_something, "unpatched")
-            self.assertEqual(mock_something, sentinel.Patched, "wrong patch")
-        self.assertEqual(something, sentinel.Something)
-
-
-    def testContextManagerMocking(self):
-        mock = Mock()
-        mock.__enter__ = Mock()
-        mock.__exit__ = Mock()
-        mock.__exit__.return_value = False
-
-        with mock as m:
-            self.assertEqual(m, mock.__enter__.return_value)
-        mock.__enter__.assert_called_with()
-        mock.__exit__.assert_called_with(None, None, None)
-
-
-    def testContextManagerWithMagicMock(self):
-        mock = MagicMock()
-
-        with self.assertRaises(TypeError):
-            with mock:
-                'foo' + 3
-        mock.__enter__.assert_called_with()
-        self.assertTrue(mock.__exit__.called)
-
-
-    def testWithStatementSameAttribute(self):
-        with patch('tests.testwith.something', sentinel.Patched) as mock_something:
-            self.assertEqual(something, mock_something, "unpatched")
-
-            with patch('tests.testwith.something') as mock_again:
-                self.assertEqual(something, mock_again, "unpatched")
-
-            self.assertEqual(something, mock_something, "restored with wrong instance")
-
-        self.assertEqual(something, sentinel.Something, "not restored")
-
-    def testWithStatementImbricated(self):
-        with patch('tests.testwith.something') as mock_something:
-            self.assertEqual(something, mock_something, "unpatched")
-
-            with patch('tests.testwith.something_else') as mock_something_else:
-                self.assertEqual(something_else, mock_something_else, "unpatched")
-
-        self.assertEqual(something, sentinel.Something)
-        self.assertEqual(something_else, sentinel.SomethingElse)
-
-    def testDictContextManager(self):
-        foo = {}
-        with patch.dict(foo, {'a': 'b'}):
-            self.assertEqual(foo, {'a': 'b'})
-        self.assertEqual(foo, {})
-
-        with self.assertRaises(NameError):
-            with patch.dict(foo, {'a': 'b'}):
-                self.assertEqual(foo, {'a': 'b'})
-                raise NameError('Konrad')
-
-        self.assertEqual(foo, {})
 
 
 if __name__ == '__main__':
-    unittest2.main()
+    unittest2.main()
\ No newline at end of file
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..0d7a6d2
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,4 @@
+[tox]
+envlist = py25,py24,py26,py27
+[testenv]
+commands=unit2 discover
\ No newline at end of file
-- 
GitLab