[Piglit] [PATCH 03/12] framework: put GleanTest class in exectest module
Dylan Baker
baker.dylan.c at gmail.com
Fri Apr 25 09:58:51 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()
Signed-off-by: Dylan Baker <baker.dylan.c at gmail.com>
---
framework/exectest.py | 21 +++++++++++
framework/gleantest.py | 49 --------------------------
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(+), 127 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 599ea7c..6c23cd3 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 2f22c87..0000000
--- a/framework/gleantest.py
+++ /dev/null
@@ -1,49 +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 "{'result': 'skip'}" in self.result['out']:
- self.result['result'] = 'skip'
- elif (self.result['out'].find('FAIL') >= 0 or
- self.result['returncode'] != 0):
- self.result['result'] = 'fail'
- else:
- self.result['result'] = 'pass'
diff --git a/framework/tests/dmesg_tests.py b/framework/tests/dmesg_tests.py
index f713320..7a35718 100644
--- a/framework/tests/dmesg_tests.py
+++ b/framework/tests/dmesg_tests.py
@@ -27,8 +27,7 @@ import nose.tools as nt
from nose.plugins.skip import SkipTest
from framework.dmesg import DummyDmesg, LinuxDmesg, get_dmesg, DmesgError
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 49c801a..d492023 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.rc0
More information about the Piglit
mailing list