[Piglit] [PATCH 03/13] exectest: Don't pass env to Test.run()

Ilia Mirkin imirkin at alum.mit.edu
Tue Apr 15 16:32:13 PDT 2014


On Tue, Apr 15, 2014 at 7:12 PM, Dylan Baker <baker.dylan.c at gmail.com> wrote:
> This makes env a Test class attribute. This allows Test and all of it's

Pretty sure that should be "all of its children" (not "it's")

> children to use env without passing it around, which saves a lot of
> passing, and allows some more code cleanups and re-factors.
>
> Signed-off-by: Dylan Baker <baker.dylan.c at gmail.com>
> ---
>  framework/exectest.py              | 18 ++++++++++--------
>  framework/profile.py               |  7 ++++---
>  framework/tests/dmesg_tests.py     | 10 ++++------
>  framework/tests/gleantest_tests.py |  3 +--
>  tests/igt.py                       |  4 ++--
>  5 files changed, 21 insertions(+), 21 deletions(-)
>
> diff --git a/framework/exectest.py b/framework/exectest.py
> index 4e73fe4..acc4daa 100644
> --- a/framework/exectest.py
> +++ b/framework/exectest.py
> @@ -28,7 +28,7 @@ import time
>  import sys
>  import traceback
>
> -from .core import TestResult
> +from .core import TestResult, Environment
>
>
>  __all__ = ['Test',
> @@ -49,6 +49,8 @@ else:
>
>
>  class Test(object):
> +    ENV = Environment()
> +
>      def __init__(self, command, run_concurrent=False):
>          '''
>                  'run_concurrent' controls whether this test will
> @@ -63,7 +65,7 @@ class Test(object):
>          # self.run is called.
>          self._test_hook_execute_run = lambda: None
>
> -    def execute(self, env, path, log, json_writer, dmesg):
> +    def execute(self, path, log, json_writer, dmesg):
>          '''
>          Run the test.
>
> @@ -71,15 +73,15 @@ class Test(object):
>              Fully qualified test name as a string.  For example,
>              ``spec/glsl-1.30/preprocessor/compiler/keywords/void.frag``.
>          '''
> -        log_current = log.pre_log(path if env.verbose else None)
> +        log_current = log.pre_log(path if self.ENV.verbose else None)
>
>          # Run the test
> -        if env.execute:
> +        if self.ENV.execute:
>              try:
>                  time_start = time.time()
>                  dmesg.update_dmesg()
>                  self._test_hook_execute_run()
> -                result = self.run(env)
> +                result = self.run()
>                  result = dmesg.update_result(result)
>                  time_end = time.time()
>                  if 'time' not in result:
> @@ -126,7 +128,7 @@ class Test(object):
>          raise NotImplementedError
>          return out
>
> -    def run(self, env):
> +    def run(self):
>          """
>          Run a test.  The return value will be a dictionary with keys
>          including 'result', 'info', 'returncode' and 'command'.
> @@ -143,7 +145,7 @@ class Test(object):
>          if self.command is not None:
>              command = self.command
>
> -            if env.valgrind:
> +            if self.ENV.valgrind:
>                  command[:0] = ['valgrind', '--quiet', '--error-exitcode=1',
>                                 '--tool=memcheck']
>
> @@ -195,7 +197,7 @@ class Test(object):
>              elif returncode != 0:
>                  results['note'] = 'Returncode was {0}'.format(returncode)
>
> -            if env.valgrind:
> +            if self.ENV.valgrind:
>                  # If the underlying test failed, simply report
>                  # 'skip' for this valgrind test.
>                  if results['result'] != 'pass':
> diff --git a/framework/profile.py b/framework/profile.py
> index b76907c..2e160e3 100644
> --- a/framework/profile.py
> +++ b/framework/profile.py
> @@ -35,8 +35,7 @@ import importlib
>
>  from framework.dmesg import get_dmesg
>  from framework.log import Log
> -
> -
> +import framework.exectest
>
>  class TestProfile(object):
>      def __init__(self):
> @@ -115,6 +114,8 @@ class TestProfile(object):
>          See ``Test.schedule`` and ``Test.run``.
>          '''
>
> +        framework.exectest.Test.ENV = env
> +
>          self.prepare_test_list(env)
>          log = Log(len(self.test_list), env.verbose)
>
> @@ -125,7 +126,7 @@ class TestProfile(object):
>
>              """
>              name, test = pair
> -            test.execute(env, name, log, json_writer, self.dmesg)
> +            test.execute(name, log, json_writer, self.dmesg)
>
>          # Multiprocessing.dummy is a wrapper around Threading that provides a
>          # multiprocessing compatible API
> diff --git a/framework/tests/dmesg_tests.py b/framework/tests/dmesg_tests.py
> index f87bdd5..f713320 100644
> --- a/framework/tests/dmesg_tests.py
> +++ b/framework/tests/dmesg_tests.py
> @@ -26,7 +26,7 @@ import subprocess
>  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, Environment
> +from framework.core import TestResult, PiglitJSONEncoder
>  from framework.exectest import PiglitTest
>  from framework.gleantest import GleanTest
>  from framework.shader_test import ShaderTest
> @@ -229,8 +229,6 @@ def test_json_serialize_updated_result():
>
>  def test_testclasses_dmesg():
>      """ Generator that creates tests for """
> -    env = Environment()
> -
>      lists = [(PiglitTest, ['attribs', '-auto', '-fbo'], 'PiglitTest'),
>               (GleanTest, 'basic', "GleanTest"),
>               (ShaderTest, 'tests/shaders/loopfunc.shader_test',
> @@ -242,10 +240,10 @@ def test_testclasses_dmesg():
>
>      for tclass, tfile, desc in lists:
>          yieldable.description = "Test dmesg in {}".format(desc)
> -        yield yieldable, tclass, tfile, env
> +        yield yieldable, tclass, tfile
>
>
> -def check_classes_dmesg(test_class, test_args, env):
> +def check_classes_dmesg(test_class, test_args):
>      """ Do the actual check on the provided test class for dmesg """
>      if not os.path.exists('bin'):
>          raise SkipTest("This tests requires a working, built version of "
> @@ -284,7 +282,7 @@ def check_classes_dmesg(test_class, test_args, env):
>
>      json = DummyJsonWriter()
>
> -    test.execute(env, None, DummyLog(), json, dmesg)
> +    test.execute(None, DummyLog(), json, dmesg)
>
>      nt.assert_in(json.result['result'], ['dmesg-warn', 'dmesg-fail'],
>                   msg="{0} did not update status with dmesg".format(type(test)))
> diff --git a/framework/tests/gleantest_tests.py b/framework/tests/gleantest_tests.py
> index 784a7b1..848b835 100644
> --- a/framework/tests/gleantest_tests.py
> +++ b/framework/tests/gleantest_tests.py
> @@ -23,7 +23,6 @@
>  from __future__ import print_function
>  import os
>  from nose.plugins.skip import SkipTest
> -from framework.core import Environment
>  from framework.gleantest import GleanTest
>
>
> @@ -68,6 +67,6 @@ def test_bad_returncode():
>      os.environ = {}
>
>      test = GleanTest('basic')
> -    result = test.run(Environment())
> +    result = test.run()
>      print("result: {result}\nreturncode: {returncode}".format(**result))
>      assert result['result'] == 'fail', "Result should have been fail"
> diff --git a/tests/igt.py b/tests/igt.py
> index 1051ec8..1053791 100644
> --- a/tests/igt.py
> +++ b/tests/igt.py
> @@ -88,7 +88,7 @@ class IGTTest(Test):
>              results['result'] = 'fail'
>          return out
>
> -    def run(self, env):
> +    def run(self):
>          if not igtEnvironmentOk:
>              results = TestResult()
>              results['result'] = 'fail'
> @@ -96,7 +96,7 @@ class IGTTest(Test):
>
>              return results
>
> -        return super(IGTTest, self).run(env)
> +        return super(IGTTest, self).run()
>
>  def listTests(listname):
>      oldDir = os.getcwd()
> --
> 1.9.2
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list