Arve Knudsen avatar Arve Knudsen committed 32f0393 Merge

Merge with arve.knudsen

Comments (0)

Files changed (3)

nose2/tests/__init__.py

-import os
-import subprocess
-import unittest2
-
-HERE = os.path.dirname(__file__)
-ROOT = os.path.join(HERE, '..', '..')
-SUPPORT = os.path.join(ROOT, 'support')
-
-
-class FunctionalTestCase(unittest2.TestCase):
-
-    tags = ['functional']
-
-    def assertTestRunOutputMatches(self, proc, stdout=None, stderr=None):
-        cmd_stdout, cmd_stderr = proc.communicate()
-        if stdout:
-            self.assertRegexpMatches(cmd_stdout, stdout)
-        if stderr:
-            self.assertRegexpMatches(cmd_stderr, stderr)
-
-    def runIn(self, testdir, *args):
-        cmd = ['nose2'] + list(args)
-        proc = subprocess.Popen(cmd, 
-                                cwd=os.path.join(SUPPORT, testdir),
-                                stdout=subprocess.PIPE,
-                                stderr=subprocess.PIPE)
-        return proc
+"""Unit and functional tests."""

nose2/tests/_common.py

-"""Common functionality for tests."""
+"""Common functionality."""
+import os.path
+import tempfile
+import shutil
+import sys
+import subprocess
+import unittest2
+
+HERE = os.path.dirname(__file__)
+ROOT = os.path.join(HERE, '..', '..')
+SUPPORT = os.path.join(ROOT, 'support')
+
+
+class TestCase(unittest2.TestCase):
+    """TestCase extension.
+    
+    If the class variable _RUN_IN_TEMP is True (default: False), tests will be
+    performed in a temporary directory, which is deleted afterwards.
+    """
+    _RUN_IN_TEMP = False
+
+    def setUp(self):
+        super(TestCase, self).setUp()
+        
+        if self._RUN_IN_TEMP:
+            self._orig_dir = os.getcwd()
+            work_dir = self._work_dir = tempfile.mkdtemp()
+            os.chdir(self._work_dir)
+            # Make sure it's possible to import modules from current directory
+            sys.path.insert(0, work_dir)
+
+    def tearDown(self):
+        super(TestCase, self).tearDown()
+
+        if self._RUN_IN_TEMP:
+            os.chdir(self._orig_dir)
+            shutil.rmtree(self._work_dir, ignore_errors=True)
+
+
+class FunctionalTestCase(unittest2.TestCase):
+
+    tags = ['functional']
+
+    def assertTestRunOutputMatches(self, proc, stdout=None, stderr=None):
+        cmd_stdout, cmd_stderr = proc.communicate()
+        if stdout:
+            self.assertRegexpMatches(cmd_stdout, stdout)
+        if stderr:
+            self.assertRegexpMatches(cmd_stderr, stderr)
+
+    def runIn(self, testdir, *args):
+        cmd = ['nose2'] + list(args)
+        proc = subprocess.Popen(cmd, 
+                                cwd=os.path.join(SUPPORT, testdir),
+                                stdout=subprocess.PIPE,
+                                stderr=subprocess.PIPE)
+        return proc
+
+        
 class _FakeEventBase(object):
     """Baseclass for fake Events."""
     def __init__(self):

nose2/tests/test_logcapture_plugin.py

 import re
 import unittest2
 
-from . import FunctionalTestCase
+from ._common import FunctionalTestCase
 from ..plugins.logcapture import LogCapture
 
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.