aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/__init__.py1
-rw-r--r--tests/compat.py5
-rw-r--r--tests/test_helpers.py76
3 files changed, 82 insertions, 0 deletions
diff --git a/tests/__init__.py b/tests/__init__.py
index d823a87..5b6fc55 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -6,6 +6,7 @@ from .test_containers import *
from .test_declarations import *
from .test_django import *
from .test_fuzzy import *
+from .test_helpers import *
from .test_using import *
from .test_utils import *
from .test_alchemy import *
diff --git a/tests/compat.py b/tests/compat.py
index f11076c..ff96f13 100644
--- a/tests/compat.py
+++ b/tests/compat.py
@@ -30,6 +30,11 @@ if sys.version_info[0:2] < (2, 7): # pragma: no cover
else: # pragma: no cover
import unittest
+if sys.version_info[0] == 2: # pragma: no cover
+ import StringIO as io
+else: # pragma: no cover
+ import io
+
if sys.version_info[0:2] < (3, 3): # pragma: no cover
import mock
else: # pragma: no cover
diff --git a/tests/test_helpers.py b/tests/test_helpers.py
new file mode 100644
index 0000000..f5a66e5
--- /dev/null
+++ b/tests/test_helpers.py
@@ -0,0 +1,76 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2010 Mark Sandstrom
+# Copyright (c) 2011-2013 Raphaƫl Barrois
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+
+import logging
+
+from factory import helpers
+
+from .compat import io, unittest
+
+
+class DebugTest(unittest.TestCase):
+ """Tests for the 'factory.debug()' helper."""
+
+ def test_default_logger(self):
+ stream1 = io.StringIO()
+ stream2 = io.StringIO()
+
+ l = logging.getLogger('factory.test')
+ h = logging.StreamHandler(stream1)
+ h.setLevel(logging.INFO)
+ l.addHandler(h)
+
+ # Non-debug: no text gets out
+ l.debug("Test")
+ self.assertEqual('', stream1.getvalue())
+
+ with helpers.debug(stream=stream2):
+ # Debug: text goes to new stream only
+ l.debug("Test2")
+
+ self.assertEqual('', stream1.getvalue())
+ self.assertEqual("Test2\n", stream2.getvalue())
+
+ def test_alternate_logger(self):
+ stream1 = io.StringIO()
+ stream2 = io.StringIO()
+
+ l1 = logging.getLogger('factory.test')
+ l2 = logging.getLogger('factory.foo')
+ h = logging.StreamHandler(stream1)
+ h.setLevel(logging.DEBUG)
+ l2.addHandler(h)
+
+ # Non-debug: no text gets out
+ l1.debug("Test")
+ self.assertEqual('', stream1.getvalue())
+ l2.debug("Test")
+ self.assertEqual('', stream1.getvalue())
+
+ with helpers.debug('factory.test', stream=stream2):
+ # Debug: text goes to new stream only
+ l1.debug("Test2")
+ l2.debug("Test3")
+
+ self.assertEqual("", stream1.getvalue())
+ self.assertEqual("Test2\n", stream2.getvalue())
+