[Piglit] [Patch v2 04/13] framework: put GleanTest class in exectest module

Dylan Baker baker.dylan.c at gmail.com
Tue May 13 11:38:37 PDT 2014


This is the first step to merging the builtin test classes into a single
module. It also fixes some problems with GleanTest.interpret_result()

This also merges the unit tests for glean into the exectest_tests.py
module.

Signed-off-by: Dylan Baker <baker.dylan.c at gmail.com>
---
 framework/exectest.py              | 21 +++++++++++
 framework/gleantest.py             | 46 ------------------------
 framework/tests/dmesg_tests.py     |  3 +-
 framework/tests/exectest_test.py   | 50 ++++++++++++++++++++++++++-
 framework/tests/gleantest_tests.py | 71 --------------------------------------
 tests/all.py                       |  3 +-
 tests/quick.py                     |  2 +-
 tests/sanity.py                    |  2 +-
 8 files changed, 74 insertions(+), 124 deletions(-)
 delete mode 100644 framework/gleantest.py
 delete mode 100644 framework/tests/gleantest_tests.py

diff --git a/framework/exectest.py b/framework/exectest.py
index c863d20..9131d08 100644
--- a/framework/exectest.py
+++ b/framework/exectest.py
@@ -33,6 +33,7 @@ from .core import TestResult, Environment
 
 __all__ = ['Test',
            'PiglitTest',
+           'GleanTest',
            'TEST_BIN_DIR']
 
 # Platform global variables
@@ -47,6 +48,8 @@ else:
     TEST_BIN_DIR = os.path.normpath(os.path.join(os.path.dirname(__file__),
                                                  '../bin'))
 
+glean_executable = os.path.join(TEST_BIN_DIR, "glean")
+
 
 class Test(object):
     ENV = Environment()
@@ -288,3 +291,21 @@ class PiglitTest(Test):
                 self.result.update(eval(piglit))
         self.result['out'] = '\n'.join(
             s for s in outlines if not s.startswith('PIGLIT:'))
+
+
+class GleanTest(Test):
+    globalParams = []
+
+    def __init__(self, name, **kwargs):
+        super(GleanTest, self).__init__([glean_executable, "-o", "-v", "-v",
+                                         "-v", "-t", "+" + name])
+
+    @Test.command.getter
+    def command(self):
+        return super(GleanTest, self).command + self.globalParams
+
+    def interpret_result(self):
+        if 'FAIL' in self.result['out'] or self.result['returncode'] != 0:
+            self.result['result'] = 'fail'
+        else:
+            self.result['result'] = 'pass'
diff --git a/framework/gleantest.py b/framework/gleantest.py
deleted file mode 100644
index 5229cf5..0000000
--- a/framework/gleantest.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# Permission is hereby granted, free of charge, to any person
-
-# obtaining a copy of this software and associated documentation
-# files (the "Software"), to deal in the Software without
-# restriction, including without limitation the rights to use,
-# copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following
-# conditions:
-#
-# This permission notice shall be included in all copies or
-# substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-# PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHOR(S) BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-# OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-
-import os
-
-from .exectest import Test, TEST_BIN_DIR
-
-glean_executable = os.path.join(TEST_BIN_DIR, "glean")
-
-# GleanTest: Execute a sub-test of Glean
-class GleanTest(Test):
-    globalParams = []
-
-    def __init__(self, name, **kwargs):
-        super(GleanTest, self).__init__([glean_executable, "-o", "-v", "-v",
-                                       "-v", "-t", "+" + name])
-
-    @Test.command.getter
-    def command(self):
-        return super(GleanTest, self).command + self.globalParams
-
-    def interpret_result(self):
-        if self.result['returncode'] != 0 or 'FAIL' in self.result['out']:
-            self.result['result'] = 'fail'
-        else:
-            self.result['result'] = 'pass'
diff --git a/framework/tests/dmesg_tests.py b/framework/tests/dmesg_tests.py
index ccc3144..8c2b20b 100644
--- a/framework/tests/dmesg_tests.py
+++ b/framework/tests/dmesg_tests.py
@@ -28,8 +28,7 @@ import nose.tools as nt
 from nose.plugins.skip import SkipTest
 from framework.dmesg import DummyDmesg, LinuxDmesg, get_dmesg
 from framework.core import TestResult, PiglitJSONEncoder
-from framework.exectest import PiglitTest
-from framework.gleantest import GleanTest
+from framework.exectest import PiglitTest, GleanTest
 from framework.shader_test import ShaderTest
 from framework.glsl_parser_test import GLSLParserTest
 
diff --git a/framework/tests/exectest_test.py b/framework/tests/exectest_test.py
index 2f0569f..5875b00 100644
--- a/framework/tests/exectest_test.py
+++ b/framework/tests/exectest_test.py
@@ -20,7 +20,10 @@
 
 """ Tests for the exectest module """
 
-from framework.exectest import PiglitTest, Test
+from __future__ import print_function
+import os
+from nose.plugins.skip import SkipTest
+from framework.exectest import PiglitTest, Test, GleanTest
 
 
 def test_initialize_test():
@@ -31,3 +34,48 @@ def test_initialize_test():
 def test_initialize_piglittest():
     """ Test that PiglitTest initializes correctly """
     PiglitTest('/bin/true')
+
+
+def test_initialize_gleantest():
+    """ Test that GleanTest initilizes """
+    test = GleanTest('name')
+    assert test
+
+
+def test_globalParams_assignment():
+    """ Test to ensure that GleanTest.globalParams are correctly assigned
+
+    Specifically this tests for a bug where globalParams only affected
+    instances of GleanTest created after globalParams were set, so changing the
+    globalParams value had unexpected results.
+
+    If this test passes the GleanTest.command attributes will be the same in
+    the instance created before the globalParams assignment and the one created
+    after. A failure means the that globalParams are not being added to tests
+    initialized before it is set.
+
+    """
+    test1 = GleanTest('basic')
+    GleanTest.globalParams = ['--quick']
+    test2 = GleanTest('basic')
+    assert test1.command == test2.command
+
+
+def test_bad_returncode():
+    """ If glean doesn't return zero it should be a fail
+
+    Currently clean returns 127 if piglit can't find it's libs (LD_LIBRARY_PATH
+    isn't set properly), and then marks such tests as pass, when they obviously
+    are not.
+
+    """
+    if not os.path.exists('bin'):
+        raise SkipTest("This test requires a working, built version of piglit")
+
+    # Clearing the environment should remove the piglit/lib from
+    # LD_LIBRARY_PATH
+    os.environ = {}
+
+    test = GleanTest('basic')
+    test.run()
+    assert test.result['result'] == 'fail', "Result should have been fail"
diff --git a/framework/tests/gleantest_tests.py b/framework/tests/gleantest_tests.py
deleted file mode 100644
index 20aa647..0000000
--- a/framework/tests/gleantest_tests.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (c) 2014 Intel Corporation
-
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-""" Tests for the glean class. Requires Nose """
-
-from __future__ import print_function
-import os
-from nose.plugins.skip import SkipTest
-from framework.gleantest import GleanTest
-
-
-def test_initialize_gleantest():
-    """ Test that GleanTest initilizes """
-    test = GleanTest('name')
-    assert test
-
-
-def test_globalParams_assignment():
-    """ Test to ensure that GleanTest.globalParams are correctly assigned
-
-    Specifically this tests for a bug where globalParams only affected
-    instances of GleanTest created after globalParams were set, so changing the
-    globalParams value had unexpected results.
-
-    If this test passes the GleanTest.command attributes will be the same in
-    the instance created before the globalParams assignment and the one created
-    after. A failure means the that globalParams are not being added to tests
-    initialized before it is set.
-
-    """
-    test1 = GleanTest('basic')
-    GleanTest.globalParams = ['--quick']
-    test2 = GleanTest('basic')
-    assert test1.command == test2.command
-
-
-def test_bad_returncode():
-    """ If glean doesn't return zero it should be a fail
-
-    Currently clean returns 127 if piglit can't find it's libs (LD_LIBRARY_PATH
-    isn't set properly), and then marks such tests as pass, when they obviously
-    are not.
-
-    """
-    if not os.path.exists('bin'):
-        raise SkipTest("This test requires a working, built version of piglit")
-
-    # Clearing the environment should remove the piglit/lib from
-    # LD_LIBRARY_PATH
-    os.environ = {}
-
-    test = GleanTest('basic')
-    test.run()
-    assert test.result['result'] == 'fail', "Result should have been fail"
diff --git a/tests/all.py b/tests/all.py
index a67e725..23bf702 100644
--- a/tests/all.py
+++ b/tests/all.py
@@ -10,8 +10,7 @@ import platform
 import shlex
 
 from framework.profile import TestProfile
-from framework.exectest import PiglitTest
-from framework.gleantest import GleanTest
+from framework.exectest import PiglitTest, GleanTest
 from framework.glsl_parser_test import GLSLParserTest, add_glsl_parser_test, import_glsl_parser_tests
 from framework.shader_test import add_shader_test_dir
 
diff --git a/tests/quick.py b/tests/quick.py
index 939aded..53b4eb3 100644
--- a/tests/quick.py
+++ b/tests/quick.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-from framework.gleantest import GleanTest
+from framework.exectest import GleanTest
 from tests.all import profile
 
 __all__ = ['profile']
diff --git a/tests/sanity.py b/tests/sanity.py
index 0e0e038..8e5c81f 100644
--- a/tests/sanity.py
+++ b/tests/sanity.py
@@ -3,7 +3,7 @@
 #
 
 from framework.profile import TestProfile
-from framework.gleantest import GleanTest
+from framework.exectest import GleanTest
 
 __all__ = ['profile']
 
-- 
2.0.0.rc2



More information about the Piglit mailing list