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.dyla...@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 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit