From: Jason Lowe-Power Date: Wed, 17 Jul 2019 00:16:16 +0000 (-0700) Subject: tests: Update tests to save output on failure X-Git-Tag: v20.0.0.0~66 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7de8ac1b93fded6b5a9c64061dc6130711ad1808;p=gem5.git 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 --- 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(''))