[Piglit] [PATCH 6/6] framework/tests: cleanup pep8/pylint/pyflakes warnings
Dylan Baker
baker.dylan.c at gmail.com
Tue Sep 30 11:31:39 PDT 2014
This patch gets the tests down to 0 warnings and errors, in some cases
by simply disabling warnings. Many of these warnings are good warnings
and valuable, but not for a test suite were we want to do odd things to
prod at the internals of functions and classes.
Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
framework/tests/core_tests.py | 3 ++
framework/tests/dmesg_tests.py | 34 +++++++++++---------
framework/tests/exectest_test.py | 9 ++++--
framework/tests/gleantest_tests.py | 12 ++++---
framework/tests/glsl_parser_test_tests.py | 52 ++++++++++++++++++++-----------
framework/tests/integration_tests.py | 3 +-
framework/tests/log_tests.py | 6 ++--
framework/tests/profile_tests.py | 2 ++
framework/tests/results_tests.py | 7 ++++-
framework/tests/results_v0_tests.py | 6 ++--
framework/tests/run_parser_tests.py | 2 ++
framework/tests/status_tests.py | 21 +++++++------
framework/tests/summary_tests.py | 5 ++-
framework/tests/utils.py | 2 +-
14 files changed, 106 insertions(+), 58 deletions(-)
diff --git a/framework/tests/core_tests.py b/framework/tests/core_tests.py
index b44bb83..359396a 100644
--- a/framework/tests/core_tests.py
+++ b/framework/tests/core_tests.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=no-self-use
+
""" Module providing tests for the core module """
@@ -109,6 +111,7 @@ def test_parse_listfile_tilde():
class TestGetConfig(utils.TestWithEnvClean):
+ """ Tests for core.get_config() """
CONF_FILE = textwrap.dedent("""
[nose-test]
; a section for testing behavior
diff --git a/framework/tests/dmesg_tests.py b/framework/tests/dmesg_tests.py
index 4bd1bcf..b2df01d 100644
--- a/framework/tests/dmesg_tests.py
+++ b/framework/tests/dmesg_tests.py
@@ -18,6 +18,9 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=too-few-public-methods,no-self-use,invalid-name,
+# pylint: disable=protected-access
+
""" Provides tests for the dmesg class
Tests that require sudo have sudo in their name, if you don't have sudo or
@@ -83,7 +86,7 @@ class DummyLog(object):
def __init__(self):
pass
- def pre_log(self, *args):
+ def pre_log(self, *args): # pylint: disable=unused-argument
return None
def log(self, *args):
@@ -95,6 +98,9 @@ class DummyLog(object):
class TestDmesg(dmesg.BaseDmesg):
""" A special implementation of Dmesg that is easy to test with """
+ def __init__(self):
+ super(TestDmesg, self).__init__()
+
def update_dmesg(self):
pass
@@ -229,12 +235,12 @@ def test_update_result_replace():
result['subtest']['test'] = res
return result
- dmesg = TestDmesg()
+ dmesg_ = TestDmesg()
for res in ['pass', 'fail', 'crash', 'warn', 'skip', 'notrun']:
- dmesg.regex = None
- dmesg._new_messages = ['add', 'some', 'stuff']
- new_result = dmesg.update_result(create_test_result(res))
+ dmesg_.regex = None
+ dmesg_._new_messages = ['add', 'some', 'stuff']
+ new_result = dmesg_.update_result(create_test_result(res))
check_update_result.description = "Test update_result: {0}".format(res)
yield check_update_result, new_result['result'], res
@@ -245,9 +251,9 @@ def test_update_result_replace():
# check that the status is not updated when Dmesg.regex is set and does
# not match the dmesg output
- dmesg.regex = re.compile("(?!)")
- dmesg._new_messages = ['more', 'new', 'stuff']
- new_result = dmesg.update_result(create_test_result(res))
+ dmesg_.regex = re.compile("(?!)")
+ dmesg_._new_messages = ['more', 'new', 'stuff']
+ new_result = dmesg_.update_result(create_test_result(res))
check_equal_result.description = \
"Test update_result with non-matching regex: {0}".format(res)
@@ -255,9 +261,9 @@ def test_update_result_replace():
# check that the status is updated when Dmesg.regex is set and matches
# the dmesg output
- dmesg.regex = re.compile("piglit.*test")
- dmesg._new_messages = ['piglit.awesome.test', 'and', 'stuff']
- new_result = dmesg.update_result(create_test_result(res))
+ dmesg_.regex = re.compile("piglit.*test")
+ dmesg_._new_messages = ['piglit.awesome.test', 'and', 'stuff']
+ new_result = dmesg_.update_result(create_test_result(res))
check_update_result.description = \
"Test update_result with matching regex: {0} ".format(res)
@@ -355,9 +361,9 @@ def check_classes_dmesg(test_class, test_args):
test = test_class(test_args)
test._test_hook_execute_run = _write_dev_kmesg
- json = DummyJsonWriter()
+ json_ = DummyJsonWriter()
- test.execute(None, DummyLog(), json, test)
+ test.execute(None, DummyLog(), json_, test)
- nt.assert_in(json.result['result'], ['dmesg-warn', 'dmesg-fail'],
+ 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/exectest_test.py b/framework/tests/exectest_test.py
index 3a639d2..dfbef79 100644
--- a/framework/tests/exectest_test.py
+++ b/framework/tests/exectest_test.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=invalid-name
+
""" Tests for the exectest module """
import nose.tools as nt
@@ -61,7 +63,7 @@ def test_timeout():
""" Test that Test.timeout works correctly """
def helper():
- if (test.result['returncode'] == 0):
+ if test.result['returncode'] == 0:
test.result['result'] = "pass"
test = TestTest("/usr/bin/sleep 60")
@@ -70,11 +72,12 @@ def test_timeout():
test.run()
assert test.result['result'] == 'timeout'
+
def test_timeout_pass():
""" Test that the correct result is returned if a test does not timeout """
def helper():
- if (test.result['returncode'] == 0):
+ if test.result['returncode'] == 0:
test.result['result'] = "pass"
test = TestTest("/usr/bin/true")
@@ -98,7 +101,7 @@ def test_piglittest_interpret_result_subtest():
test.result['out'] = ('PIGLIT: {"result": "pass"}\n'
'PIGLIT: {"subtest": {"subtest": "pass"}}\n')
test.interpret_result()
- nt.assert_equal(test.result['subtest']['subtest'],'pass')
+ nt.assert_equal(test.result['subtest']['subtest'], 'pass')
def test_piglitest_no_clobber():
diff --git a/framework/tests/gleantest_tests.py b/framework/tests/gleantest_tests.py
index d157b09..7dbe0f1 100644
--- a/framework/tests/gleantest_tests.py
+++ b/framework/tests/gleantest_tests.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=invalid-name
+
""" Tests for the glean class. Requires Nose """
from __future__ import print_function
@@ -36,13 +38,13 @@ def test_GLOBAL_PARAMS_assignment():
""" Test to ensure that GleanTest.GLOBAL_PARAMS are correctly assigned
Specifically this tests for a bug where GLOBAL_PARAMS only affected
- instances of GleanTest created after GLOBAL_PARAMS were set, so changing the
- GLOBAL_PARAMS value had unexpected results.
+ instances of GleanTest created after GLOBAL_PARAMS were set, so changing
+ the GLOBAL_PARAMS value had unexpected results.
If this test passes the GleanTest.command attributes will be the same in
- the instance created before the GLOBAL_PARAMS assignment and the one created
- after. A failure means the that GLOBAL_PARAMS are not being added to tests
- initialized before it is set.
+ the instance created before the GLOBAL_PARAMS assignment and the one
+ created after. A failure means the that GLOBAL_PARAMS are not being added
+ to tests initialized before it is set.
"""
test1 = GleanTest('basic')
diff --git a/framework/tests/glsl_parser_test_tests.py b/framework/tests/glsl_parser_test_tests.py
index cfaeaa3..7409e5c 100644
--- a/framework/tests/glsl_parser_test_tests.py
+++ b/framework/tests/glsl_parser_test_tests.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=invalid-name
+
""" Provides tests for the shader_test module """
import sys
@@ -111,8 +113,9 @@ def test_cpp_comments():
'// [end config]\n')
test, name = _check_config(content)
- nt.assert_equal(test.command, [os.path.join(TEST_BIN_DIR, 'glslparsertest'),
- name, 'pass', '1.00'],
+ nt.assert_equal(test.command,
+ [os.path.join(TEST_BIN_DIR, 'glslparsertest'), name,
+ 'pass', '1.00'],
msg="C++ style comments were not properly parsed")
@@ -126,8 +129,9 @@ def test_c_comments():
' */\n')
test, name = _check_config(content)
- nt.assert_equal(test.command, [os.path.join(TEST_BIN_DIR, 'glslparsertest'),
- name, 'pass', '1.00'],
+ nt.assert_equal(test.command,
+ [os.path.join(TEST_BIN_DIR, 'glslparsertest'), name,
+ 'pass', '1.00'],
msg="C style comments were not properly parsed")
@@ -141,8 +145,9 @@ def test_blank_in_config():
test, name = _check_config(content)
- nt.assert_equal(test.command, [os.path.join(TEST_BIN_DIR, 'glslparsertest'),
- name, 'pass', '1.00'],
+ nt.assert_equal(test.command,
+ [os.path.join(TEST_BIN_DIR, 'glslparsertest'), name,
+ 'pass', '1.00'],
msg="A newline in a C++ style comment was not properly "
"parsed.")
@@ -157,8 +162,9 @@ def test_empty_in_config():
test, name = _check_config(content)
- nt.assert_equal(test.command, [os.path.join(TEST_BIN_DIR, 'glslparsertest'),
- name, 'pass', '1.00'],
+ nt.assert_equal(test.command,
+ [os.path.join(TEST_BIN_DIR, 'glslparsertest'), name,
+ 'pass', '1.00'],
msg="A blank commented line in a C++ style comment was not"
" properly parsed.")
@@ -182,20 +188,28 @@ def check_config_to_command(config, result):
def test_config_to_command():
""" Generate tests that confirm the config file is correctly parsed """
content = [
- ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n// [end config]\n',
+ ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n'
+ '// [end config]\n',
[os.path.join(TEST_BIN_DIR, 'glslparsertest'), 'pass', '1.00'],
'all required options'),
- ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n//check_link: true\n// [end config]\n',
- [os.path.join(TEST_BIN_DIR, 'glslparsertest'), 'pass', '1.00', '--check-link'],
+ ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n'
+ '//check_link: true\n// [end config]\n',
+ [os.path.join(TEST_BIN_DIR, 'glslparsertest'), 'pass', '1.00',
+ '--check-link'],
'check_link true'),
- ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n//check_link: false\n// [end config]\n',
+ ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n'
+ '//check_link: false\n// [end config]\n',
[os.path.join(TEST_BIN_DIR, 'glslparsertest'), 'pass', '1.00'],
'check_link false'),
- ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n//require_extensions: ARB_foo\n// [end config]\n',
- [os.path.join(TEST_BIN_DIR, 'glslparsertest'), 'pass', '1.00', 'ARB_foo'],
+ ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n'
+ '// require_extensions: ARB_foo\n// [end config]\n',
+ [os.path.join(TEST_BIN_DIR, 'glslparsertest'), 'pass', '1.00',
+ 'ARB_foo'],
'one required_extension'),
- ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n//require_extensions: ARB_foo ARB_bar\n// [end config]\n',
- [os.path.join(TEST_BIN_DIR, 'glslparsertest'), 'pass', '1.00', 'ARB_foo', 'ARB_bar'],
+ ('// [config]\n// expect_result: pass\n// glsl_version: 1.00\n'
+ '//require_extensions: ARB_foo ARB_bar\n// [end config]\n',
+ [os.path.join(TEST_BIN_DIR, 'glslparsertest'), 'pass', '1.00',
+ 'ARB_foo', 'ARB_bar'],
'multiple required_extensions'),
]
@@ -217,7 +231,7 @@ def test_bad_section_name():
_, name = _check_config(content)
nt.eq_(e.exception.message,
- 'Key new_awesome_key in file {0 is not a valid key for a '
+ 'Key new_awesome_key in file {0} is not a valid key for a '
'glslparser test config block'.format(name))
@@ -286,8 +300,8 @@ def glslparser_exetensions_seperators():
"""
problems = [
('comma seperator', '// require_extensions: ARB_ham, ARB_turkey\n'),
- ('semi-colon seperator', '// require_extensions: ARB_ham; ARB_turkey\n'),
- ('trailing semi-colon', '// require_extensions: ARB_ham ARB_turkey\n;'),
+ ('semi-colon seperator', '// require_extensions: ARB_ham; ARB_pbj\n'),
+ ('trailing semi-colon', '// require_extensions: ARB_ham ARB_pbj\n;'),
('Non-alpha character', '// require_extensions: ARB_$$$\n'),
]
diff --git a/framework/tests/integration_tests.py b/framework/tests/integration_tests.py
index ca154c0..91c3d68 100644
--- a/framework/tests/integration_tests.py
+++ b/framework/tests/integration_tests.py
@@ -40,7 +40,8 @@ def _import(name):
""" Helper for importing modules """
try:
return importlib.import_module(name)
- except (ConfigParser.NoOptionError, ConfigParser.NoSectionError, SystemExit):
+ except (ConfigParser.NoOptionError, ConfigParser.NoSectionError,
+ SystemExit):
raise SkipTest('No config section for {}'.format(name))
diff --git a/framework/tests/log_tests.py b/framework/tests/log_tests.py
index d66a1a4..587915a 100644
--- a/framework/tests/log_tests.py
+++ b/framework/tests/log_tests.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=protected-access
+
""" Module provides tests for log.py module """
from __future__ import print_function
@@ -58,12 +60,12 @@ def test_quietlog_log_state_update():
log_inst.log('pass')
# This lambda is necissary, without it description cannot be set
+ # pylint: disable=unnecessary-lambda
check = lambda x, y: nt.assert_equal(x, y)
for name, value in [('total', 100), ('summary', {'pass': 1}),
('complete', 1)]:
check.description = \
- 'State value {0} is incremented by QuiteLog.log()'.format(
- name, value)
+ 'State value {0} is incremented by QuiteLog.log()'.format(name)
yield check, logger._state[name], value
diff --git a/framework/tests/profile_tests.py b/framework/tests/profile_tests.py
index 73593ad..cff2dc9 100644
--- a/framework/tests/profile_tests.py
+++ b/framework/tests/profile_tests.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=protected-access,invalid-name
+
""" Provides test for the framework.profile modules """
import copy
diff --git a/framework/tests/results_tests.py b/framework/tests/results_tests.py
index 449ccb2..36814de 100644
--- a/framework/tests/results_tests.py
+++ b/framework/tests/results_tests.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=invalid-name
+
""" Module providing tests for the core module """
@@ -73,7 +75,7 @@ def test_load_results_folder_as_main():
def test_load_results_folder():
- """ Test that load_results takes a folder with a file named results.json """
+ """Test that load_results takes a folder with a file named results.json"""
with utils.tempdir() as tdir:
with open(os.path.join(tdir, 'results.json'), 'w') as tfile:
tfile.write(json.dumps(utils.JSON_DATA))
@@ -175,6 +177,7 @@ def test_get_backend():
class TestJunitNoTests(utils.StaticDirectory):
+ """ Test Junit backend with no tests """
@classmethod
def setup_class(cls):
super(TestJunitNoTests, cls).setup_class()
@@ -196,6 +199,7 @@ class TestJunitNoTests(utils.StaticDirectory):
class TestJUnitSingleTest(TestJunitNoTests):
+ """ Test Junit backend with one test """
@classmethod
def setup_class(cls):
super(TestJUnitSingleTest, cls).setup_class()
@@ -224,6 +228,7 @@ class TestJUnitSingleTest(TestJunitNoTests):
class TestJUnitMultiTest(TestJUnitSingleTest):
+ """ Test Junit backend with more than one test """
@classmethod
def setup_class(cls):
super(TestJUnitMultiTest, cls).setup_class()
diff --git a/framework/tests/results_v0_tests.py b/framework/tests/results_v0_tests.py
index 2f465d9..c09ed82 100644
--- a/framework/tests/results_v0_tests.py
+++ b/framework/tests/results_v0_tests.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=protected-access,invalid-name
+
""" Module provides tests for converting version zero results to version 1 """
import json
@@ -100,8 +102,8 @@ DATA['tests'].update({
},
})
-with utils.with_tempfile(json.dumps(DATA)) as f:
- RESULT = results._update_zero_to_one(results.load_results(f))
+with utils.with_tempfile(json.dumps(DATA)) as _f:
+ RESULT = results._update_zero_to_one(results.load_results(_f))
def test_dmesg():
diff --git a/framework/tests/run_parser_tests.py b/framework/tests/run_parser_tests.py
index d355bb2..36ad45d 100644
--- a/framework/tests/run_parser_tests.py
+++ b/framework/tests/run_parser_tests.py
@@ -18,6 +18,8 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
+# pylint: disable=no-self-use,protected-access
+
""" Module of tests for the run commandline parser """
import sys
diff --git a/framework/tests/status_tests.py b/framework/tests/status_tests.py
index 81423b1..65d14eb 100644
--- a/framework/tests/status_tests.py
+++ b/framework/tests/status_tests.py
@@ -41,9 +41,9 @@ PROBLEMS = STATUSES[1:]
# Create lists of fixes and regressions programmatically based on the STATUSES
# list. This means less code, and easier expansion changes.
REGRESSIONS = list(itertools.combinations(STATUSES, 2)) + \
- list(itertools.combinations(["skip"] + PROBLEMS, 2))
+ list(itertools.combinations(["skip"] + PROBLEMS, 2))
FIXES = list(itertools.combinations(reversed(STATUSES), 2)) + \
- list(itertools.combinations(list(reversed(PROBLEMS)) + ["skip"], 2))
+ list(itertools.combinations(list(reversed(PROBLEMS)) + ["skip"], 2))
# The statuses that don't cause changes when transitioning from one another
NO_OPS = ('skip', 'notrun')
@@ -61,7 +61,7 @@ def initialize_nochangestatus():
def compare_status_nochangestatus():
""" Status and NoChangeStatus can be compared with < """
- status.CRASH < status.PASS
+ nt.assert_less(status.CRASH, status.PASS)
def check_lookup(stat):
@@ -137,7 +137,7 @@ def test_is_change():
def check_not_change(new, old):
- """ Check that a status doesn't count as a change
+ """ Check that a status doesn't count as a change
This checks that new < old and old < new do not return true. This is meant
for checking skip and notrun, which we don't want to show up as regressions
@@ -191,7 +191,7 @@ def _max_stat_nochange(nochange, stat):
msg="max({stat}, {nochange}) = {stat}".format(**locals()))
-def check_operator(obj, op, result):
+def check_operator(obj, op, result): # pylint: disable=invalid-name
""" Test that the result of running an operator on an object is expected
Arguments:
@@ -203,6 +203,7 @@ def check_operator(obj, op, result):
nt.assert_equal(op(obj), result)
+# pylint: disable=invalid-name
def check_operator_equal(obj, comp, op, result):
""" Test that the result of running an operator on an object is expected
@@ -215,6 +216,7 @@ def check_operator_equal(obj, comp, op, result):
nt.assert_equal(op(obj, comp), result)
+# pylint: disable=invalid-name
def check_operator_not_equal(obj, comp, op, result):
""" Test that the result of running an operator on an object is expected
@@ -248,7 +250,8 @@ def test_nochangestatus_magic():
'Operator ne works with type: {0} on class '
'status.NoChangeStatus'.format(type_)
)
- yield check_operator_not_equal, obj, comp, lambda x, y: x.__ne__(y), True
+ yield (check_operator_not_equal, obj, comp, lambda x, y: x.__ne__(y),
+ True)
@utils.nose_generator
@@ -292,16 +295,16 @@ def test_status_magic():
@nt.raises(TypeError)
def test_status_eq_raises():
""" Comparing Status and an unlike object with eq raises a TypeError """
- status.PASS == dict()
+ status.PASS == dict() # pylint: disable=expression-not-assigned
@nt.raises(TypeError)
def test_nochangestatus_eq_raises():
""" NoChangeStatus == !(str, unicode, Status) raises TypeError """
- status.NOTRUN == dict()
+ status.NOTRUN == dict() # pylint: disable=expression-not-assigned
@nt.raises(TypeError)
def test_nochangestatus_ne_raises():
""" NoChangeStatus != (str, unicode, Status) raises TypeError """
- status.NOTRUN != dict()
+ status.NOTRUN != dict() # pylint: disable=expression-not-assigned
diff --git a/framework/tests/summary_tests.py b/framework/tests/summary_tests.py
index 9152866..986ebdd 100644
--- a/framework/tests/summary_tests.py
+++ b/framework/tests/summary_tests.py
@@ -57,7 +57,7 @@ def test_summary_add_to_set():
('pass', 'timeout', 'regressions'),
('pass', 'timeout', 'problems')]:
check_sets.description = "{0} -> {1} should be added to {2}".format(
- ostat, nstat, set_)
+ ostat, nstat, set_)
yield check_sets, old, ostat, new, nstat, set_
@@ -77,8 +77,10 @@ def check_sets(old, ostat, new, nstat, set_):
class TestSubtestHandling(object):
+ """ test subtest handling in summary """
@classmethod
def setup_class(cls):
+ """ Create a summary object to be shared """
data = copy.deepcopy(utils.JSON_DATA)
data['tests']['with_subtests'] = {}
data['tests']['with_subtests']['result'] = 'pass'
@@ -100,6 +102,7 @@ class TestSubtestHandling(object):
msg="Summary.fraction['fake-tests']['with_subtests'] should "
"be (0, 3), but isn't")
+ # pylint: disable=invalid-name
def test_tests_w_subtests_are_groups(self):
""" summary.Summary: Tests with subtests should be a group
diff --git a/framework/tests/utils.py b/framework/tests/utils.py
index 9ea44e3..b4bcccf 100644
--- a/framework/tests/utils.py
+++ b/framework/tests/utils.py
@@ -112,7 +112,7 @@ def tempdir():
shutil.rmtree(tdir)
- at nt.nottest
+ at nt.nottest # pylint: disable=too-few-public-methods
class GeneratedTestWrapper(object):
""" An object proxy for nose test instances
--
2.1.1
More information about the Piglit
mailing list