From 8b412fcfd6e7a97e4fdf184bf177e2418f2a9705 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Mon, 9 May 2016 11:32:07 +0100 Subject: [PATCH] tests: Enable test running outside of gem5's source tree The learning gem5 scripts currently assumes that the current working directory is the root of gem5's source tree. This isn't necessarily the case when running the tests using gem5's new test runner. Change-Id: Ief569bbe77b1b3e2b0fb0e6c575fb0705bbba9b3 Signed-off-by: Andreas Sandberg Reviewed-by: Curtis Dunham --- tests/configs/learning-gem5-p1-simple.py | 7 ++++++- tests/configs/learning-gem5-p1-two-level.py | 8 +++++++- tests/configs/memcheck.py | 7 ++++++- tests/run.py | 4 ++++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/tests/configs/learning-gem5-p1-simple.py b/tests/configs/learning-gem5-p1-simple.py index 850abccf1..9ad70854e 100644 --- a/tests/configs/learning-gem5-p1-simple.py +++ b/tests/configs/learning-gem5-p1-simple.py @@ -35,5 +35,10 @@ root = None def run_test(root): # Called from tests/run.py + # Set the working directory in case we are executing from + # outside gem5's source tree + import os + os.chdir(os.path.join(os.path.dirname(__file__), "../")) + # Execute the script we are wrapping - execfile('configs/learning_gem5/part1/simple.py') + execfile(srcpath('configs/learning_gem5/part1/simple.py')) diff --git a/tests/configs/learning-gem5-p1-two-level.py b/tests/configs/learning-gem5-p1-two-level.py index 1a1f8a0b9..8101de318 100644 --- a/tests/configs/learning-gem5-p1-two-level.py +++ b/tests/configs/learning-gem5-p1-two-level.py @@ -37,6 +37,12 @@ import m5 def run_test(root): # Called from tests/run.py + + # Set the working directory in case we are executing from + # outside gem5's source tree + import os + os.chdir(os.path.join(os.path.dirname(__file__), "../")) + # Add paths that we need m5.util.addToPath('../configs/learning_gem5/part1') m5.util.addToPath('../configs/common') @@ -49,4 +55,4 @@ def run_test(root): # For instance, sys.argv.append('--l2_size=512kB') # Execute the script we are wrapping - execfile('configs/learning_gem5/part1/two_level.py') + execfile(srcpath('configs/learning_gem5/part1/two_level.py')) diff --git a/tests/configs/memcheck.py b/tests/configs/memcheck.py index 52931a0b3..21c8d7d4c 100644 --- a/tests/configs/memcheck.py +++ b/tests/configs/memcheck.py @@ -47,6 +47,11 @@ root = None def run_test(root): # Called from tests/run.py + # Set the working directory in case we are executing from + # outside gem5's source tree + import os + os.chdir(os.path.join(os.path.dirname(__file__), "../")) + # The path to this script is the only parameter. Delete it so # we can execute the script that we want to execute. import sys @@ -56,4 +61,4 @@ def run_test(root): sys.argv.append('-m %d' % maxtick) # Execute the script we are wrapping - execfile('configs/example/memcheck.py', globals()) + execfile(srcpath('configs/example/memcheck.py'), globals()) diff --git a/tests/run.py b/tests/run.py index 461813559..ff5be230d 100644 --- a/tests/run.py +++ b/tests/run.py @@ -171,6 +171,10 @@ def inputpath(app, file=None): file = app return joinpath(test_progs, app, 'input', file) +def srcpath(path): + """Path to file in gem5's source tree""" + return joinpath(os.path.dirname(__file__), "..", path) + # build configuration sys.path.append(joinpath(tests_root, 'configs')) test_filename = config