# HG changeset patch # User Windel Bouwman # Date 1392985889 -3600 # Node ID 8eb4a6fe8fc8b053caa88d69d3f965e131caa068 # Parent b00219172a4222acd1aa7cf0c05bbd9e9b7ba881 Added testcase with emulator diff -r b00219172a42 -r 8eb4a6fe8fc8 test/testemulation.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/testemulation.py Fri Feb 21 13:31:29 2014 +0100 @@ -0,0 +1,67 @@ +import unittest +import os +import sys +import subprocess +import socket +import time + +from testzcc import ZccBaseTestCase + +# Store testdir for safe switch back to directory: +testdir = os.path.dirname(os.path.abspath(__file__)) + + +class EmulationTestCase(ZccBaseTestCase): + """ Tests the compiler driver """ + def setUp(self): + os.chdir(testdir) + if 'TESTEMU' not in os.environ: + self.skipTest('Not running emulation tests') + + def tearDown(self): + os.chdir(testdir) + + def runQemu(self, kernel, timespan=2): + args = ['qemu-system-arm', '-M', 'lm3s811evb', '-m', '16M', + '-nographic', '-kernel', kernel, '-monitor', + 'unix:qemucontrol.sock,server', + '-serial', 'unix:qemuserial.sock,server'] + p = subprocess.Popen(args) + + # Give process some time to boot: + time.sleep(0.5) + + # Connect to the control socket: + qemu_control = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + qemu_control.connect('qemucontrol.sock') + + time.sleep(0.5) + + # Now connect to the serial output: + qemu_serial = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + qemu_serial.connect('qemuserial.sock') + + + data = qemu_serial.recv(11).decode('ascii') + print(data) + + # Send quit command: + qemu_control.send("quit\n".encode('ascii')) + + p.wait(timeout=timespan) + + qemu_control.close() + qemu_serial.close() + + # Check that output was correct: + self.assertEqual('Hello worle', data) + + def testM3Bare(self): + """ Build bare m3 binary and emulate it """ + recipe = os.path.join(testdir, 'm3_bare', 'recipe.yaml') + self.buildRecipe(recipe) + self.runQemu('m3_bare/bare.bin') + + +if __name__ == '__main__': + unittest.main() diff -r b00219172a42 -r 8eb4a6fe8fc8 test/testzcc.py --- a/test/testzcc.py Thu Feb 20 20:04:52 2014 +0100 +++ b/test/testzcc.py Fri Feb 21 13:31:29 2014 +0100 @@ -12,7 +12,19 @@ testdir = os.path.dirname(os.path.abspath(__file__)) -class ZccTestCase(unittest.TestCase): +class ZccBaseTestCase(unittest.TestCase): + def callZcc(self, arg_list): + parser = zcc.make_parser() + arg_list = ['--log', 'warn'] + arg_list + args = parser.parse_args(arg_list) + self.assertEqual(0, zcc.main(args)) + + def buildRecipe(self, recipe): + arg_list = ['recipe', recipe] + self.callZcc(arg_list) + + +class ZccTestCase(ZccBaseTestCase): """ Tests the compiler driver """ def setUp(self): os.chdir(testdir) @@ -32,15 +44,6 @@ arg_list += extra_args self.callZcc(arg_list) - def callZcc(self, arg_list): - parser = zcc.make_parser() - arg_list = ['--log', 'warn'] + arg_list - args = parser.parse_args(arg_list) - self.assertEqual(0, zcc.main(args)) - - def buildRecipe(self, recipe): - arg_list = ['recipe', recipe] - self.callZcc(arg_list) def testDumpIr(self): basedir = os.path.join('..', 'examples', 'c3', 'comments.c3')