[Piglit] [PATCH 03/18] python tests: Move helper from program_tests.py to utils.py
Dylan Baker
baker.dylan.c at gmail.com
Tue Aug 19 13:24:57 PDT 2014
This class is useful in more than one module, so moving it to utils,
which is shared, is useful.
Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
framework/tests/programs_tests.py | 61 +++------------------------------------
framework/tests/utils.py | 51 ++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 57 deletions(-)
diff --git a/framework/tests/programs_tests.py b/framework/tests/programs_tests.py
index 23195e9..3d61460 100644
--- a/framework/tests/programs_tests.py
+++ b/framework/tests/programs_tests.py
@@ -41,60 +41,7 @@ dir = foo
"""
-# Helpers
-class _TestWithEnvClean(object):
- """ Class that does cleanup with saved state
-
- This could be done with test fixtures, but this should be cleaner in the
- specific case of cleaning up environment variables
-
- Nose will run a method (bound or unbound) at the start of the test called
- setup() and one at the end called teardown(), we have added a teardown
- method.
-
- Using this gives us the assurance that we're not relying on settings from
- other tests, making ours pass or fail, and that os.enviorn is the same
- going in as it is going out.
-
- This is modeled after Go's defer keyword.
-
- """
- def __init__(self):
- self._saved = set()
- self._teardown_calls = []
-
- def add_teardown(self, var, restore=True):
- """ Add os.environ values to remove in teardown """
- if var in os.environ:
- self._saved.add((var, os.environ.get(var), restore))
- del os.environ[var]
-
- def defer(self, func, *args):
- """ Add a function (with arguments) to be run durring cleanup """
- self._teardown_calls.append((func, args))
-
- def teardown(self):
- """ Teardown the test
-
- Restore any variables that were unset at the begining of the test, and
- run any differed methods.
-
- """
- for key, value, restore in self._saved:
- # If value is None the value was unset previously, put it back
- if value is None:
- del os.environ[key]
- elif restore:
- os.environ[key] = value
-
- # Teardown calls is a FIFO stack, the defered calls must be run in
- # reversed order to make any sense
- for call, args in reversed(self._teardown_calls):
- call(*args)
-
-
-# Tests
-class TestGetConfigEnv(_TestWithEnvClean):
+class TestGetConfigEnv(utils.TestWithEnvClean):
def test(self):
""" get_config() finds $XDG_CONFIG_HOME/piglit.conf """
self.defer(lambda: core.PIGLIT_CONFIG == ConfigParser.SafeConfigParser)
@@ -113,7 +60,7 @@ class TestGetConfigEnv(_TestWithEnvClean):
msg='$XDG_CONFIG_HOME not found')
-class TestGetConfigHomeFallback(_TestWithEnvClean):
+class TestGetConfigHomeFallback(utils.TestWithEnvClean):
def test(self):
""" get_config() finds $HOME/.config/piglit.conf """
self.defer(lambda: core.PIGLIT_CONFIG == ConfigParser.SafeConfigParser)
@@ -133,7 +80,7 @@ class TestGetConfigHomeFallback(_TestWithEnvClean):
msg='$HOME/.config not found')
-class TestGetConfigLocal(_TestWithEnvClean):
+class TestGetConfigLocal(utils.TestWithEnvClean):
# These need to be empty to force '.' to be used
def test(self):
""" get_config() finds ./piglit.conf """
@@ -157,7 +104,7 @@ class TestGetConfigLocal(_TestWithEnvClean):
msg='./piglit.conf not found')
-class TestGetConfigRoot(_TestWithEnvClean):
+class TestGetConfigRoot(utils.TestWithEnvClean):
def test(self):
""" get_config() finds "piglit root"/piglit.conf """
self.defer(lambda: core.PIGLIT_CONFIG == ConfigParser.SafeConfigParser)
diff --git a/framework/tests/utils.py b/framework/tests/utils.py
index d36a253..b2fe86e 100644
--- a/framework/tests/utils.py
+++ b/framework/tests/utils.py
@@ -179,3 +179,54 @@ def privileged_test(func):
func(*args, **kwargs)
return sudo_test_wrapper
+
+
+class TestWithEnvClean(object):
+ """ Class that does cleanup with saved state
+
+ This could be done with test fixtures, but this should be cleaner in the
+ specific case of cleaning up environment variables
+
+ Nose will run a method (bound or unbound) at the start of the test called
+ setup() and one at the end called teardown(), we have added a teardown
+ method.
+
+ Using this gives us the assurance that we're not relying on settings from
+ other tests, making ours pass or fail, and that os.enviorn is the same
+ going in as it is going out.
+
+ This is modeled after Go's defer keyword.
+
+ """
+ def __init__(self):
+ self._saved = set()
+ self._teardown_calls = []
+
+ def add_teardown(self, var, restore=True):
+ """ Add os.environ values to remove in teardown """
+ if var in os.environ:
+ self._saved.add((var, os.environ.get(var), restore))
+ del os.environ[var]
+
+ def defer(self, func, *args):
+ """ Add a function (with arguments) to be run durring cleanup """
+ self._teardown_calls.append((func, args))
+
+ def teardown(self):
+ """ Teardown the test
+
+ Restore any variables that were unset at the begining of the test, and
+ run any differed methods.
+
+ """
+ for key, value, restore in self._saved:
+ # If value is None the value was unset previously, put it back
+ if value is None:
+ del os.environ[key]
+ elif restore:
+ os.environ[key] = value
+
+ # Teardown calls is a FIFO stack, the defered calls must be run in
+ # reversed order to make any sense
+ for call, args in reversed(self._teardown_calls):
+ call(*args)
--
2.0.4
More information about the Piglit
mailing list