From: Bert Vermeulen Date: Mon, 23 Jun 2014 17:49:47 +0000 (+0200) Subject: pdtest/runtc: Support for output type 'exception'. X-Git-Tag: libsigrokdecode-0.4.0~224 X-Git-Url: http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commitdiff_plain;h=d510f7b3d5d03c6fca5b6af4e184dc2f46da9a1a pdtest/runtc: Support for output type 'exception'. The match value should be the name of the exception thrown, e.g. AttributeError, IndexError or even a custom exception defined in the protocol decoder, such as SamplerateError. --- diff --git a/tests/pdtest b/tests/pdtest index 57a8b54..088ad91 100755 --- a/tests/pdtest +++ b/tests/pdtest @@ -20,6 +20,7 @@ import os import sys +import re from getopt import getopt from tempfile import mkstemp from subprocess import Popen, PIPE @@ -376,6 +377,12 @@ def run_tests(tests, fix=False): if coverage: results[-1]['coverage_report'] = coverage os.unlink(outfile) + if op['type'] == 'exception' and 'error' in results[-1]: + # filter out the exception we were looking for + reg = "^Error: srd: Protocol decoder instance %s: %s:" % (op['pd'], op['match']) + if re.match(reg, results[-1]['error']): + # found it, not an error + results[-1].pop('error') if VERBOSE: if 'diff' in results[-1]: INFO("Output mismatch") diff --git a/tests/runtc.c b/tests/runtc.c index 059262d..e376070 100644 --- a/tests/runtc.c +++ b/tests/runtc.c @@ -759,6 +759,9 @@ int main(int argc, char **argv) op->type = SRD_OUTPUT_BINARY; else if (!strcmp(opstr[1], "python")) op->type = SRD_OUTPUT_PYTHON; + else if (!strcmp(opstr[1], "exception")) + /* Doesn't matter, we just need it to bomb out. */ + op->type = SRD_OUTPUT_PYTHON; else { ERR("Unknown output type '%s'", opstr[1]); g_strfreev(opstr);