[Piglit] [PATCH 06/16] tests/igt.py: Use new piglit error handling

Dylan Baker baker.dylan.c at gmail.com
Tue Apr 21 15:44:23 PDT 2015

This makes use of PiglitConfig.required_get for getting information from

It also uses piglit exceptions extensively to raise errors, rather than
printing and exiting. This has the added benefit of printing errors to
stderr instead of stdout.

Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>

Unfortunately I run KMSCon, so I can't get past the 'no other consumers'
check, but with -d works.

 tests/igt.py | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/tests/igt.py b/tests/igt.py
index 8ffac8d..076b179 100644
--- a/tests/igt.py
+++ b/tests/igt.py
@@ -35,11 +35,9 @@ drm. Even if you have rendernode support enabled.
 from __future__ import print_function, division, absolute_import
 import os
 import re
-import sys
 import subprocess
-import framework.grouptools as grouptools
-import framework.core
+from framework import grouptools, exceptions, core
 from framework.profile import TestProfile, Test
 __all__ = ['profile']
@@ -53,30 +51,30 @@ def check_environment():
     debugfs_path = "/sys/kernel/debug/dri"
     if os.getuid() != 0:
-        print("Test Environment check: not root!")
-        return False
+        raise exceptions.PiglitInternalError(
+            "Test Environment check: not root!")
     if not os.path.isdir(debugfs_path):
-        print("Test Environment check: debugfs not mounted properly!")
-        return False
+        raise exceptions.PiglitInternalError(
+            "Test Environment check: debugfs not mounted properly!")
     for subdir in os.listdir(debugfs_path):
         if not os.path.isdir(os.path.join(debugfs_path, subdir)):
         clients = open(os.path.join(debugfs_path, subdir, "clients"), 'r')
         lines = clients.readlines()
         if len(lines) > 2:
-            print("Test Environment check: other drm clients running!")
-            return False
-    print("Test Environment check: Succeeded.")
-    return True
+            raise exceptions.PiglitInternalError(
+                "Test Environment check: other drm clients running!")
 if 'IGT_TEST_ROOT' in os.environ:
     IGT_TEST_ROOT = os.environ['IGT_TEST_ROOT']
     IGT_TEST_ROOT = os.path.join(
-        framework.core.PIGLIT_CONFIG.get('igt', 'path'), 'tests')
-    assert os.path.exists(IGT_TEST_ROOT)
+        core.PIGLIT_CONFIG.required_get('igt', 'path'), 'tests')
+if not os.path.exists(IGT_TEST_ROOT):
+    raise exceptions.PiglitFatalError(
+        'IGT directory does not exist. Missing: {}'.format(IGT_TEST_ROOT))
 # check for the test lists
 if os.path.exists(os.path.join(IGT_TEST_ROOT, 'test-list.txt')):
@@ -85,15 +83,17 @@ elif (os.path.exists(os.path.join(IGT_TEST_ROOT, 'single-tests.txt')) and
       os.path.exists(os.path.join(IGT_TEST_ROOT, 'multi-tests.txt'))):
     TEST_LISTS = ['single-tests.txt', 'multi-tests.txt']
-    print("intel-gpu-tools test lists not found.")
-    sys.exit(0)
+    raise exceptions.PiglitFatalError("intel-gpu-tools test lists not found.")
 class IGTTestProfile(TestProfile):
     """Test profile for intel-gpu-tools tests."""
     def _pre_run_hook(self, opts):
-        if opts.execute and not check_environment():
-            sys.exit(1)
+        if opts.execute:
+            try:
+                check_environment()
+            except exceptions.PiglitInternalError as e:
+                raise exceptions.PiglitFatalError(e.message)
 profile = IGTTestProfile()  # pylint: disable=invalid-name

More information about the Piglit mailing list