summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/leap/common/check.py4
-rw-r--r--src/leap/common/files.py5
-rw-r--r--src/leap/common/testing/basetest.py68
-rw-r--r--src/leap/common/testing/test_basetest.py43
4 files changed, 95 insertions, 25 deletions
diff --git a/src/leap/common/check.py b/src/leap/common/check.py
index 9787341..359673b 100644
--- a/src/leap/common/check.py
+++ b/src/leap/common/check.py
@@ -14,12 +14,12 @@
#
# 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
diff --git a/src/leap/common/files.py b/src/leap/common/files.py
index e3c8423..4c443dd 100644
--- a/src/leap/common/files.py
+++ b/src/leap/common/files.py
@@ -14,16 +14,15 @@
#
# 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__)
diff --git a/src/leap/common/testing/basetest.py b/src/leap/common/testing/basetest.py
index 2359754..65e23a9 100644
--- a/src/leap/common/testing/basetest.py
+++ b/src/leap/common/testing/basetest.py
@@ -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)
diff --git a/src/leap/common/testing/test_basetest.py b/src/leap/common/testing/test_basetest.py
index 3674185..c4636df 100644
--- a/src/leap/common/testing/test_basetest.py
+++ b/src/leap/common/testing/test_basetest.py
@@ -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)