Merge branch 'develop' of github-kali.github.com:kalikaneko/leap_common into develop
authorKali Kaneko <kali@leap.se>
Wed, 20 Mar 2013 15:27:20 +0000 (00:27 +0900)
committerKali Kaneko <kali@leap.se>
Wed, 20 Mar 2013 15:27:20 +0000 (00:27 +0900)
setup.py
src/leap/common/check.py
src/leap/common/files.py
src/leap/common/testing/basetest.py
src/leap/common/testing/test_basetest.py

index 21c34f1..b29c352 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -36,7 +36,7 @@ setup(
         "Common files used by the LEAP Client project."
     ),
     namespace_packages=["leap"],
-    package_dir = {'': 'src'},
+    package_dir={'': 'src'},
     packages=find_packages('src'),
     #test_suite='leap.common.tests',
     #install_requires=requirements,
index 9787341..359673b 100644 (file)
 #
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
 """
 Set of functions to help checking situations
 """
-import logging
+
 import inspect
+import logging
 import traceback
 
 
index e3c8423..4c443dd 100644 (file)
 #
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
 """
 Implements file helper methods
 """
 
+import errno
+import logging
 import os
 import stat
-import logging
 import time
-import errno
 
 logger = logging.getLogger(__name__)
 
index 2359754..65e23a9 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# leap.common.testing.basetest.py
+# basetest.py
 # Copyright (C) 2013 LEAP
 #
 # This program is free software: you can redistribute it and/or modify
@@ -27,20 +27,25 @@ try:
 except ImportError:
     import unittest
 
+from leap.common.check import leap_assert
 from leap.common.files import mkdir_p, check_and_fix_urw_only
 
-_system = platform.system()
-
 
 class BaseLeapTest(unittest.TestCase):
     """
     Base Leap TestCase
     """
-
     __name__ = "leap_test"
+    _system = platform.system()
 
     @classmethod
     def setUpClass(cls):
+        """
+        Sets up common facilities for testing this TestCase:
+        - custom PATH and HOME environmental variables
+        - creates a temporal folder to which those point.
+        It saves the old path and home vars so they can be restored later.
+        """
         cls.old_path = os.environ['PATH']
         cls.old_home = os.environ['HOME']
         cls.tempdir = tempfile.mkdtemp(prefix="leap_tests-")
@@ -53,10 +58,19 @@ class BaseLeapTest(unittest.TestCase):
 
     @classmethod
     def tearDownClass(cls):
+        """
+        Cleanup common facilities used for testing this TestCase:
+        - restores the default PATH and HOME variables
+        - removes the temporal folder
+        """
         os.environ["PATH"] = cls.old_path
         os.environ["HOME"] = cls.old_home
-        # safety check
-        assert cls.tempdir.startswith('/tmp/leap_tests-')
+        # safety check! please do not wipe my home...
+        # XXX needs to adapt to non-linuces
+        leap_assert(
+            cls.tempdir.startswith('/tmp/leap_tests-'),
+            "beware! tried to remove a dir which does not "
+            "live in temporal folder!")
         shutil.rmtree(cls.tempdir)
 
     # you have to override these methods
@@ -64,37 +78,63 @@ class BaseLeapTest(unittest.TestCase):
     # here that you can forget to call.
 
     def setUp(self):
+        """not implemented"""
         raise NotImplementedError("abstract base class")
 
     def tearDown(self):
+        """not implemented"""
         raise NotImplementedError("abstract base class")
 
     #
     # helper methods
     #
 
-    def get_tempfile(self, filename):
-        return os.path.join(self.tempdir, filename)
-
     def _missing_test_for_plat(self, do_raise=False):
+        """
+        Raises NotImplementedError for this platform
+        if do_raise is True
+
+        @param do_raise: flag to actually raise exception
+        @type do_raise: bool
+        """
         if do_raise:
             raise NotImplementedError(
                 "This test is not implemented "
                 "for the running platform: %s" %
-                _system)
+                self._system)
+
+    def get_tempfile(self, filename):
+        """
+        Returns the path of a given filename
+        prepending the temporal dir associated with this
+        TestCase
+
+        @param filename: the filename
+        @type filename: str
+        """
+        return os.path.join(self.tempdir, filename)
 
     def touch(self, filepath):
+        """
+        Touches a filepath, creating folders along
+        the way if needed.
+
+        @param filepath: path to be touched
+        @type filepath: str
+        """
         folder, filename = os.path.split(filepath)
         if not os.path.isdir(folder):
             mkdir_p(folder)
-        # XXX should move to test_basetest
         self.assertTrue(os.path.isdir(folder))
-
         with open(filepath, 'w') as fp:
             fp.write(' ')
-
-        # XXX should move to test_basetest
         self.assertTrue(os.path.isfile(filepath))
 
     def chmod600(self, filepath):
+        """
+        Chmods 600 a file
+
+        @param filepath: filepath to be chmodded
+        @type filepath: str
+        """
         check_and_fix_urw_only(filepath)
index 3674185..c4636df 100644 (file)
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# leap.common.testing.test_basetest
+# test_basetest.py
 # Copyright (C) 2013 LEAP
 #
 # This program is free software: you can redistribute it and/or modify
@@ -15,8 +15,8 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 """
-Unittests for base test
-...becase it's oh so meta"""
+Unittests for BaseLeapTest ...becase it's oh so meta
+"""
 try:
     import unittest2 as unittest
 except ImportError:
@@ -27,12 +27,20 @@ import StringIO
 
 from leap.testing.basetest import BaseLeapTest
 
-# global for tempdir checking
-_tempdir = None
+_tempdir = None  # global for tempdir checking
 
 
 class _TestCaseRunner(object):
+    """
+    TestCaseRunner used to run BaseLeapTest
+    """
     def run_testcase(self, testcase=None):
+        """
+        Runs a given TestCase
+
+        @param testcase: the testcase
+        @type testcase: unittest.TestCase
+        """
         if not testcase:
             return None
         loader = unittest.TestLoader()
@@ -46,8 +54,13 @@ class _TestCaseRunner(object):
 
 
 class TestAbstractBaseLeapTest(unittest.TestCase, _TestCaseRunner):
-
+    """
+    TestCase for BaseLeapTest abs
+    """
     def test_abstract_base_class(self):
+        """
+        Test errors raised when setup/teardown not overloaded
+        """
         class _BaseTest(BaseLeapTest):
             def test_dummy_method(self):
                 pass
@@ -65,36 +78,54 @@ class TestAbstractBaseLeapTest(unittest.TestCase, _TestCaseRunner):
 
 
 class TestInitBaseLeapTest(BaseLeapTest):
+    """
+    TestCase for testing initialization of BaseLeapTest
+    """
 
     def setUp(self):
+        """nuke it"""
         pass
 
     def tearDown(self):
+        """nuke it"""
         pass
 
     def test_path_is_changed(self):
+        """tests whether we have changed the PATH env var"""
         os_path = os.environ['PATH']
         self.assertTrue(os_path.startswith(self.tempdir))
 
     def test_old_path_is_saved(self):
+        """tests whether we restore the PATH env var"""
         self.assertTrue(len(self.old_path) > 1)
 
 
 class TestCleanedBaseLeapTest(unittest.TestCase, _TestCaseRunner):
+    """
+    TestCase for testing tempdir creation and cleanup
+    """
 
     def test_tempdir_is_cleaned_after_tests(self):
+        """
+        test if a TestCase derived from BaseLeapTest creates and cleans the
+        temporal dir
+        """
         class _BaseTest(BaseLeapTest):
             def setUp(self):
+                """set global _tempdir to this instance tempdir"""
                 global _tempdir
                 _tempdir = self.tempdir
 
             def tearDown(self):
+                """nothing"""
                 pass
 
             def test_tempdir_created(self):
+                """test if tempdir was created"""
                 self.assertTrue(os.path.isdir(self.tempdir))
 
             def test_tempdir_created_on_setupclass(self):
+                """test if tempdir is the one created by setupclass"""
                 self.assertEqual(_tempdir, self.tempdir)
 
         results = self.run_testcase(_BaseTest)