diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2011-12-09 17:03:04 +0000 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2011-12-09 17:14:56 +0000 |
commit | d441caf6b9620dbe10eb51d31d6d6055c9161ae0 (patch) | |
tree | df2e78c151ee0404fa467e6755bbe78517cd65e6 /morph | |
parent | c90af8cff7819d40d0fdd14f1ea9c162f7d5d7d2 (diff) | |
download | morph-d441caf6b9620dbe10eb51d31d6d6055c9161ae0.tar.gz |
add a "morph test" command
Diffstat (limited to 'morph')
-rwxr-xr-x | morph | 50 |
1 files changed, 50 insertions, 0 deletions
@@ -55,7 +55,27 @@ class Morph(cliapp.Application): 'DANGEROUS and will install stuff on your ' 'system') + self.settings.boolean(['test-console'], + 'show what the system outputs on the serial ' + 'console during tests') + self.settings.integer(['test-timeout'], + 'abort test if system doesn\'t produce ' + 'expected output in TIMEOUT seconds ' + '(default: %default)', + metavar='TIMEOUT', + default=10) + def cmd_build(self, args): + '''Build a binary from a morphology. + + Command line arguments are the repository, git tree-ish reference, + and morphology filename. The binary gets put into the cache. + + (The triplet of command line arguments may be repeated as many + times as necessary.) + + ''' + tempdir = morphlib.tempdir.Tempdir() builder = morphlib.builder.Builder(tempdir, self) @@ -73,6 +93,36 @@ class Morph(cliapp.Application): if args: raise cliapp.AppException('Extra args on command line: %s' % args) + def cmd_testsysimg(self, args): + '''Run tests for a built system image. + + Command line arguments are the filename of the system image, + and the filenames of the Python modules that contain the test + "stories". Each module must have a variable called "story", + which is a list of tuples. Each tuple is either two strings + (one to send, the other a regular expression for what is expected + in return), or two strings and a timeout in seconds. + + testsysimg runs the image under KVM, and accesses it via a + serial console, and runs the test stories, one by one. + + ''' + + if not args: + raise cliapp.AppException('Missing command line arguments. ' + 'Run with --help to see usage.') + + system = morphlib.tester.KvmSystem(args[0], + verbose=self.settings['test-console'], + timeout=self.settings['test-timeout']) + + for filename in args[1:]: + self.msg('Running %s' % filename) + module = morphlib.tester.load_module(filename) + story_steps = getattr(module, 'story') + story = morphlib.tester.TestStory(system, story_steps, self.msg) + story.run() + self.msg('Finished OK.') def msg(self, msg): '''Show a message to the user about what is going on.''' |