From 62400207b65644c5238e4e2aa895d78bb844f3a0 Mon Sep 17 00:00:00 2001 From: kali Date: Thu, 23 Aug 2012 03:20:39 +0900 Subject: base leap testcase that creates a tempdir and changes path there --- src/leap/testing/__init__.py | 0 src/leap/testing/basetest.py | 37 ++++++++++++++++ src/leap/testing/test_basetest.py | 89 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+) create mode 100644 src/leap/testing/__init__.py create mode 100644 src/leap/testing/basetest.py create mode 100644 src/leap/testing/test_basetest.py diff --git a/src/leap/testing/__init__.py b/src/leap/testing/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/leap/testing/basetest.py b/src/leap/testing/basetest.py new file mode 100644 index 00000000..ccf1a76f --- /dev/null +++ b/src/leap/testing/basetest.py @@ -0,0 +1,37 @@ +import os +import shutil +import tempfile + +try: + import unittest2 as unittest +except ImportError: + import unittest + + +class BaseLeapTest(unittest.TestCase): + + __name__ = "leap_test" + + @classmethod + def setUpClass(cls): + cls.old_path = os.environ['PATH'] + cls.tempdir = tempfile.mkdtemp() + bin_tdir = os.path.join( + cls.tempdir, + 'bin') + os.environ["PATH"] = bin_tdir + + @classmethod + def tearDownClass(cls): + os.environ["PATH"] = cls.old_path + shutil.rmtree(cls.tempdir) + + def setUp(self): + raise NotImplementedError("abstract base class") + + def tearDown(self): + raise NotImplementedError("abstract base class") + + +if __name__ == "__main__": + unittest.main() diff --git a/src/leap/testing/test_basetest.py b/src/leap/testing/test_basetest.py new file mode 100644 index 00000000..4d98cd43 --- /dev/null +++ b/src/leap/testing/test_basetest.py @@ -0,0 +1,89 @@ +"""becase it's oh so meta""" +try: + import unittest2 as unittest +except ImportError: + import unittest + +import os +import StringIO + +from leap.testing.basetest import BaseLeapTest + +# global for tempdir checking +_tempdir = None + + +class TestCaseRunner(object): + def run_testcase(self, testcase): + loader = unittest.TestLoader() + suite = loader.loadTestsFromTestCase(testcase) + + # Create runner, and run testcase + io = StringIO.StringIO() + runner = unittest.TextTestRunner(stream=io) + results = runner.run(suite) + return results + + +class TestAbstractBaseLeapTest(unittest.TestCase, TestCaseRunner): + + def test_abstract_base_class(self): + class _BaseTest(BaseLeapTest): + def test_dummy_method(self): + pass + + def test_tautology(self): + assert True + + results = self.run_testcase(_BaseTest) + + # should be 2 errors: NotImplemented + # raised for setUp/tearDown + self.assertEquals(results.testsRun, 2) + self.assertEquals(len(results.failures), 0) + self.assertEquals(len(results.errors), 2) + + +class TestInitBaseLeapTest(BaseLeapTest): + + def setUp(self): + pass + + def tearDown(self): + pass + + def test_path_is_changed(self): + os_path = os.environ['PATH'] + self.assertTrue(os_path.startswith(self.tempdir)) + + def test_old_path_is_saved(self): + self.assertTrue(len(self.old_path) > 1) + + +class TestCleanedBaseLeapTest(unittest.TestCase, TestCaseRunner): + + def test_tempdir_is_cleaned_after_tests(self): + class _BaseTest(BaseLeapTest): + def setUp(self): + global _tempdir + _tempdir = self.tempdir + + def tearDown(self): + pass + + def test_tempdir_created(self): + self.assertTrue(os.path.isdir(self.tempdir)) + + def test_tempdir_created_on_setupclass(self): + self.assertEqual(_tempdir, self.tempdir) + + results = self.run_testcase(_BaseTest) + self.assertEquals(results.testsRun, 2) + self.assertEquals(len(results.failures), 0) + self.assertEquals(len(results.errors), 0) + + # did we cleaned the tempdir? + self.assertFalse(os.path.isdir(_tempdir)) + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3 From 5636f50cfa36bfa439651b4917b0beb3f9624ea6 Mon Sep 17 00:00:00 2001 From: kali Date: Thu, 23 Aug 2012 03:21:39 +0900 Subject: test_config uses the new leap base testcase --- src/leap/eip/tests/test_config.py | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/src/leap/eip/tests/test_config.py b/src/leap/eip/tests/test_config.py index 051faa29..b4ad66e5 100644 --- a/src/leap/eip/tests/test_config.py +++ b/src/leap/eip/tests/test_config.py @@ -10,35 +10,22 @@ try: except ImportError: import unittest +from leap.testing.basetest import BaseLeapTest from leap.eip import config _system = platform.system() -class NotImplementedError(Exception): - pass - -# XXX use mock_open here? - - -class EIPConfigTest(unittest.TestCase): +class EIPConfigTest(BaseLeapTest): __name__ = "eip_config_tests" def setUp(self): - self.old_path = os.environ['PATH'] - - self.tdir = tempfile.mkdtemp() - - bin_tdir = os.path.join( - self.tdir, - 'bin') - os.mkdir(bin_tdir) - os.environ['PATH'] = bin_tdir + pass def tearDown(self): - os.environ['PATH'] = self.old_path - shutil.rmtree(self.tdir) + pass + # # helpers # @@ -58,7 +45,7 @@ class EIPConfigTest(unittest.TestCase): def touch_exec(self): tfile = os.path.join( - self.tdir, + self.tempfile, 'bin', 'openvpn') open(tfile, 'bw').close() -- cgit v1.2.3 From 1da2cf6bbc64bfc624ea6fed9beb83d301f308d1 Mon Sep 17 00:00:00 2001 From: kali Date: Thu, 23 Aug 2012 03:33:06 +0900 Subject: fix ad0hoc testsuite runner --- src/leap/testing/test_basetest.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/leap/testing/test_basetest.py b/src/leap/testing/test_basetest.py index 4d98cd43..14d8f8a3 100644 --- a/src/leap/testing/test_basetest.py +++ b/src/leap/testing/test_basetest.py @@ -13,8 +13,10 @@ from leap.testing.basetest import BaseLeapTest _tempdir = None -class TestCaseRunner(object): - def run_testcase(self, testcase): +class _TestCaseRunner(object): + def run_testcase(self, testcase=None): + if not testcase: + return None loader = unittest.TestLoader() suite = loader.loadTestsFromTestCase(testcase) @@ -25,7 +27,7 @@ class TestCaseRunner(object): return results -class TestAbstractBaseLeapTest(unittest.TestCase, TestCaseRunner): +class TestAbstractBaseLeapTest(unittest.TestCase, _TestCaseRunner): def test_abstract_base_class(self): class _BaseTest(BaseLeapTest): @@ -60,7 +62,7 @@ class TestInitBaseLeapTest(BaseLeapTest): self.assertTrue(len(self.old_path) > 1) -class TestCleanedBaseLeapTest(unittest.TestCase, TestCaseRunner): +class TestCleanedBaseLeapTest(unittest.TestCase, _TestCaseRunner): def test_tempdir_is_cleaned_after_tests(self): class _BaseTest(BaseLeapTest): -- cgit v1.2.3