# Hand the return status to scons and let scons decide what
# to do about it (typically terminate unless run with -k).
return status
+ elif status == 2:
+ # The test was skipped
+ pass
else:
print 'M5 exited with non-zero status', status
# complete but failed execution (call to exit() with non-zero
# Generate status file contents based on exit status of m5 or diff-out
if status == 0:
status_str = "passed."
+ elif status == 2:
+ status_str = "skipped."
else:
status_str = "FAILED!"
f = file(str(target[0]), 'w')
status = termcap.Red + status[:-1] + termcap.Normal + status[-1]
elif status == "passed.":
status = termcap.Green + status[:-1] + termcap.Normal + status[-1]
+ elif status == "skipped.":
+ status = termcap.Yellow + status[:-1] + termcap.Normal + status[-1]
# put it back in the list and join with space
words[-1] = status
+# Copyright (c) 2012 ARM Limited
+# All rights reserved
+#
+# The license below extends only to copyright in the software and shall
+# not be construed as granting a license to any other intellectual
+# property including but not limited to intellectual property relating
+# to a hardware implementation of the functionality of the software
+# licensed hereunder. You may use the software subject to the license
+# terms below provided that you ensure that this notice is replicated
+# unmodified and in its entirety in all distributions of the software,
+# modified or unmodified, in source code or in binary form.
+#
# Copyright (c) 2006-2007 The Regents of The University of Michigan
# All rights reserved.
#
import m5
+def skip_test(reason=""):
+ """Signal that a test should be skipped and optionally print why.
+
+ Keyword arguments:
+ reason -- Reason why the test failed. Output is omitted if empty.
+ """
+
+ if reason:
+ print "Skipping test: %s" % reason
+ sys.exit(2)
+
+def has_sim_object(name):
+ """Test if a SimObject exists in the simulator.
+
+ Arguments:
+ name -- Name of SimObject (string)
+
+ Returns: True if the object exists, False otherwise.
+ """
+
+ try:
+ cls = getattr(m5.objects, name)
+ return issubclass(cls, m5.objects.SimObject)
+ except AttributeError:
+ return False
+
+def require_sim_object(name, fatal=False):
+ """Test if a SimObject exists and abort/skip test if not.
+
+ Arguments:
+ name -- Name of SimObject (string)
+
+ Keyword arguments:
+ fatal -- Set to True to indicate that the test should fail
+ instead of being skipped.
+ """
+
+ if has_sim_object(name):
+ return
+ else:
+ msg = "Test requires the '%s' SimObject." % name
+ if fatal:
+ m5.fatal(msg)
+ else:
+ skip_test(msg)
+
# Since we're in batch mode, dont allow tcp socket connections
m5.disableAllListeners()