[Piglit] [PATCH 10/12] framework/exectest.py: Use abc metaclass for Test

Dylan Baker baker.dylan.c at gmail.com
Fri Apr 25 09:58:58 PDT 2014


Using the abc (Abstract Base Class) module is nice for a couple of
reasons. First, you cant initialize a class marked as an abc period,
second; decorators are used to define methods and properties that
children must implement, but super() can be used to call the code in the
base class (unlike raising NotImplementedError).

Signed-off-by: Dylan Baker <baker.dylan.c at gmail.com>
---
 framework/exectest.py            | 5 ++++-
 framework/tests/exectest_test.py | 5 -----
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/framework/exectest.py b/framework/exectest.py
index ec4f724..71b6a37 100644
--- a/framework/exectest.py
+++ b/framework/exectest.py
@@ -30,6 +30,7 @@ import sys
 import traceback
 import ConfigParser
 import re
+import abc
 from cStringIO import StringIO
 from .core import TestResult, Environment
 
@@ -66,6 +67,7 @@ class Test(object):
     ENV = Environment()
     __slots__ = ['ENV', 'run_concurrent', 'env', 'result', '_command',
                  '_test_hook_execute_run']
+    __metaclass__ = abc.ABCMeta
 
     def __init__(self, command, run_concurrent=False):
         '''
@@ -141,8 +143,9 @@ class Test(object):
             return
         self._command = value
 
+    @abc.abstractmethod
     def interpret_result(self):
-        raise NotImplementedError
+        pass
 
     def run(self):
         """
diff --git a/framework/tests/exectest_test.py b/framework/tests/exectest_test.py
index 0543f5b..3e0ccd4 100644
--- a/framework/tests/exectest_test.py
+++ b/framework/tests/exectest_test.py
@@ -28,11 +28,6 @@ import framework.tests.utils as utils
 import framework.exectest as exectest
 
 
-def test_initialize_test():
-    """ Test initializes """
-    exectest.Test('/bin/true')
-
-
 def test_initialize_piglittest():
     """ Test that PiglitTest initializes correctly """
     exectest.PiglitTest('/bin/true')
-- 
2.0.0.rc0



More information about the Piglit mailing list