[Piglit] [PATCH 01/15] framework tests: fix timeout tests
Dylan Baker
baker.dylan.c at gmail.com
Fri Oct 3 17:57:42 PDT 2014
Currently the timeout tests rely on /usr/bin/sleep and /usr/bin/true.
This is very fragile, since on my (Gentoo) system true is in /bin. The
better solution is to rely on either a shell built-in or to just find
the binary in path.
This of course still has some fragility, so this patch also introduces a
new utility function, binary_check. This function looks for a command
using which (not window safe of course, but most of the unit tests
aren't) or it raises a SkipTest.
Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
framework/tests/exectest_test.py | 8 ++++++--
framework/tests/utils.py | 11 +++++++++++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/framework/tests/exectest_test.py b/framework/tests/exectest_test.py
index 3610093..831e29b 100644
--- a/framework/tests/exectest_test.py
+++ b/framework/tests/exectest_test.py
@@ -22,6 +22,7 @@
import nose.tools as nt
from framework.exectest import PiglitTest, Test
+import framework.tests.utils as utils
# Helpers
@@ -58,25 +59,28 @@ def test_run_return_early():
def test_timeout():
""" Test that Test.timeout works correctly """
+ utils.binary_check('sleep')
def helper():
if (test.result['returncode'] == 0):
test.result['result'] = "pass"
- test = TestTest("/usr/bin/sleep 60")
+ test = TestTest("sleep 60")
test.test_interpret_result = helper
test.timeout = 1
test.run()
assert test.result['result'] == 'timeout'
+
def test_timeout_pass():
""" Test that the correct result is returned if a test does not timeout """
+ utils.binary_check('true')
def helper():
if (test.result['returncode'] == 0):
test.result['result'] = "pass"
- test = TestTest("/usr/bin/true")
+ test = TestTest("true")
test.test_interpret_result = helper
test.timeout = 1
test.run()
diff --git a/framework/tests/utils.py b/framework/tests/utils.py
index 2694fab..3b13a1f 100644
--- a/framework/tests/utils.py
+++ b/framework/tests/utils.py
@@ -29,11 +29,13 @@ import os
import shutil
import tempfile
import functools
+import subprocess
from contextlib import contextmanager
try:
import simplejson as json
except ImportError:
import json
+from nose.plugins.skip import SkipTest
import nose.tools as nt
import framework.results
@@ -252,3 +254,12 @@ class StaticDirectory(object):
def teardown_class(cls):
""" Remove the temporary directory """
shutil.rmtree(cls.tdir)
+
+
+def binary_check(bin_):
+ """Check for the existance of a binary or raise SkipTest."""
+ with open(os.devnull, 'w') as null:
+ try:
+ subprocess.check_call(['which', bin_], stdout=null, stderr=null)
+ except subprocess.CalledProcessError:
+ raise SkipTest('Binary {} not available'.format(bin_))
--
2.1.2
More information about the Piglit
mailing list