Create unit tests for cd context manager
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Mon, 29 Oct 2018 08:41:47 +0000 (09:41 +0100)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Mon, 5 Nov 2018 11:21:54 +0000 (12:21 +0100)
test/test_sysmisc.py [new file with mode: 0644]

diff --git a/test/test_sysmisc.py b/test/test_sysmisc.py
new file mode 100644 (file)
index 0000000..acdd110
--- /dev/null
@@ -0,0 +1,57 @@
+# The software in this package is distributed under the GNU General
+# Public License version 2 (with a special exception described below).
+#
+# A copy of GNU General Public License (GPL) is included in this distribution,
+# in the file COPYING.GPL.
+#
+# As a special exception, if other files instantiate templates or use macros
+# or inline functions from this file, or you compile this file and link it
+# with other works to produce a work based on this file, this file
+# does not by itself cause the resulting work to be covered
+# by the GNU General Public License.
+#
+# However the source code for this file must still be made available
+# in accordance with section (3) of the GNU General Public License.
+#
+# This exception does not invalidate any other reasons why a work based
+# on this file might be covered by the GNU General Public License.
+#
+# Copyright (c) 2016-2018 Intra2net AG <info@intra2net.com>
+
+"""
+test_sysmisc.py: unit tests for sysmisc
+
+Tests classes and functions in sysmisc
+
+For help see :py:mod:`unittest`
+"""
+
+import unittest
+from os import getcwd
+
+# relative import of tested module ensures we do not test installed version
+from src import sysmisc
+
+
+class SysmiscTester(unittest.TestCase):
+    """only test case in this module, see module doc for more help"""
+
+    def test_cd(self):
+        orig_dir = getcwd()
+        with sysmisc.cd('/tmp'):
+            self.assertEqual(getcwd(), '/tmp')
+        self.assertEqual(getcwd(), orig_dir)
+
+    def test_cd_error(self):
+        try:
+            orig_dir = getcwd()
+            with sysmisc.cd('/tmp'):
+                self.assertEqual(getcwd(), '/tmp')
+                raise RuntimeError('test')
+            self.assertEqual(getcwd(), orig_dir)
+        except RuntimeError as re:
+            self.assertTrue('test' in str(re))
+
+
+if __name__ == '__main__':
+    unittest.main()