From 7de8ac1b93fded6b5a9c64061dc6130711ad1808 Mon Sep 17 00:00:00 2001 From: Jason Lowe-Power Date: Tue, 16 Jul 2019 17:16:16 -0700 Subject: [PATCH] tests: Update tests to save output on failure The previous commit which tried to do this, did not work with parallel execution. In this case, the fixtures that were modified were in the child process and the parent process's fixtures were never updated. Instead of modifying the object, use the information passed in from the testlib. See 4c28149ffa5d09e6fe14952dcaf8df5d0cd8f328 Previous review: https://gem5-review.googlesource.com/c/public/gem5/+/17451 Change-Id: Ib4c06c5e3f82994199d6f0c1fa69452e93444d75 Signed-off-by: Jason Lowe-Power Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19529 Reviewed-by: Bobby R. Bruce Reviewed-by: Nikos Nikoleris Maintainer: Jason Lowe-Power Tested-by: kokoro --- tests/gem5/fixture.py | 7 ++----- tests/gem5/verifier.py | 12 ------------ 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/tests/gem5/fixture.py b/tests/gem5/fixture.py index aa316e706..fc31b30c6 100644 --- a/tests/gem5/fixture.py +++ b/tests/gem5/fixture.py @@ -49,6 +49,7 @@ from testlib.fixture import Fixture from testlib.config import config, constants from testlib.helper import log_call, cacheresult, joinpath, absdirpath import testlib.log as log +from testlib.state import Result class VariableFixture(Fixture): @@ -67,13 +68,9 @@ class TempdirFixture(Fixture): self.path = tempfile.mkdtemp(prefix='gem5out') def teardown(self, testitem): - if self.path is not None: + if testitem.result == Result.Passed: shutil.rmtree(self.path) - def skip_cleanup(self): - # Set path to none so it's not deleted - self.path = None - class UniqueFixture(Fixture): ''' Base class for fixtures that generate a target in the diff --git a/tests/gem5/verifier.py b/tests/gem5/verifier.py index 73a7499c7..c955c407d 100644 --- a/tests/gem5/verifier.py +++ b/tests/gem5/verifier.py @@ -47,16 +47,6 @@ class Verifier(object): return test.TestFunction(self._test, name=name, fixtures=self.fixtures) - def failed(self, fixtures): - ''' - Called if this verifier fails to cleanup (or not) as needed. - ''' - try: - fixtures[constants.tempdir_fixture_name].skip_cleanup() - except KeyError: - pass # No need to do anything if the tempdir fixture doesn't exist - - class MatchGoldStandard(Verifier): ''' Compares a standard output to the test output and passes if they match, @@ -90,7 +80,6 @@ class MatchGoldStandard(Verifier): ignore_regexes=self.ignore_regex, logger=params.log) if diff is not None: - self.failed(fixtures) test.fail('Stdout did not match:\n%s\nSee %s for full results' % (diff, tempdir)) @@ -195,7 +184,6 @@ class MatchRegex(Verifier): if parse_file(joinpath(tempdir, constants.gem5_simulation_stderr)): return # Success - self.failed(fixtures) test.fail('Could not match regex.') _re_type = type(re.compile('')) -- 2.30.2