From 8571c8791ab141c70f7208acaa1a3edb1ce45a75 Mon Sep 17 00:00:00 2001 From: Tim Newsome Date: Wed, 23 Mar 2016 16:14:50 -0700 Subject: [PATCH] Test ebreak without gdb. Currently this test fails. --- tests/ebreak.py | 21 +++++++++++++++++++++ tests/ebreak.s | 5 +++++ tests/testlib.py | 22 ++++++++++++++++------ 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100755 tests/ebreak.py create mode 100644 tests/ebreak.s diff --git a/tests/ebreak.py b/tests/ebreak.py new file mode 100755 index 0000000..6c3ffdb --- /dev/null +++ b/tests/ebreak.py @@ -0,0 +1,21 @@ +#!/usr/bin/python + +import os +import testlib +import unittest +import tempfile +import time + +class EbreakTest(unittest.TestCase): + def setUp(self): + self.binary = testlib.compile("ebreak.s") + + def test_ebreak(self): + """Make sure that we can run past ebreak without halting when a + debugger isn't attached.""" + spike = testlib.spike(self.binary, with_gdb=False, timeout=10) + result = spike.wait() + self.assertEqual(result, 0) + +if __name__ == '__main__': + unittest.main() diff --git a/tests/ebreak.s b/tests/ebreak.s new file mode 100644 index 0000000..99f3e07 --- /dev/null +++ b/tests/ebreak.s @@ -0,0 +1,5 @@ + .global main +main: + li a0, 0 + ebreak + ret diff --git a/tests/testlib.py b/tests/testlib.py index 2db2549..4e05616 100644 --- a/tests/testlib.py +++ b/tests/testlib.py @@ -34,16 +34,26 @@ def unused_port(): s.close() return port -def spike(binary, halted=False): +def spike(binary, halted=False, with_gdb=True, timeout=None): """Launch spike. Return tuple of its process and the port it's running on.""" - cmd = [find_file("spike")] + cmd = [] + if timeout: + cmd += ["timeout", str(timeout)] + + cmd += [find_file("spike")] if halted: cmd.append('-H') - port = unused_port() - cmd += ['--gdb-port', str(port), 'pk', binary] + if with_gdb: + port = unused_port() + cmd += ['--gdb-port', str(port)] + cmd += ['pk', binary] logfile = open("spike.log", "w") - return subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=logfile, - stderr=logfile), port + process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=logfile, + stderr=logfile) + if with_gdb: + return process, port + else: + return process class Gdb(object): def __init__(self): -- 2.30.2