[Piglit] [PATCH v3 1/4] framework/tests: add helper for checking for 3rd party modules

baker.dylan.c at gmail.com baker.dylan.c at gmail.com
Thu Nov 12 14:52:12 PST 2015


From: Dylan Baker <baker.dylan.c at gmail.com>

This little helper skips a test if a module isn't available.

Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
 framework/tests/junit_backends_tests.py | 3 +--
 framework/tests/utils.py                | 9 +++++++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/framework/tests/junit_backends_tests.py b/framework/tests/junit_backends_tests.py
index 7d5a3fc..d0a6fd7 100644
--- a/framework/tests/junit_backends_tests.py
+++ b/framework/tests/junit_backends_tests.py
@@ -111,8 +111,7 @@ class TestJUnitSingleTest(TestJunitNoTests):
 
     def test_xml_valid(self):
         """backends.junit.JUnitBackend.write_test(): (once) produces valid xml"""
-        if etree.__name__ != 'lxml.etree':
-            raise SkipTest('Test requires lxml features')
+        utils.module_check('lxml')
         schema = etree.XMLSchema(file=JUNIT_SCHEMA)
         with open(self.test_file, 'r') as f:
             nt.ok_(schema.validate(etree.parse(f)), msg='xml is not valid')
diff --git a/framework/tests/utils.py b/framework/tests/utils.py
index 2a9370c..aaf782c 100644
--- a/framework/tests/utils.py
+++ b/framework/tests/utils.py
@@ -34,6 +34,7 @@ import tempfile as tempfile_
 import functools
 import subprocess
 import errno
+import importlib
 from contextlib import contextmanager
 
 try:
@@ -314,6 +315,14 @@ def binary_check(bin_, errno_=None):
                         e.returncode, errno_))
 
 
+def module_check(module):
+    """Check that an external module is available or skip."""
+    try:
+        importlib.import_module(module)
+    except ImportError:
+        raise SkipTest('Required module {} not available.'.format(module))
+
+
 def platform_check(plat):
     """If the platform is not in the list specified skip the test."""
     if not sys.platform.startswith(plat):
-- 
2.6.2



More information about the Piglit mailing list