forked from Archive/PX4-Autopilot
53 lines
1.2 KiB
Python
Executable File
53 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python
|
|
"""
|
|
The module facilitates testing in cmake.
|
|
It takes a command and a regex for failure ok passing.
|
|
It passes if:
|
|
* No stderr output.
|
|
* Stdout doesn't match failure regex.
|
|
* Stdout matches ok regex if given.
|
|
"""
|
|
from __future__ import print_function
|
|
import argparse
|
|
import subprocess
|
|
import re
|
|
import sys
|
|
|
|
#pylint: disable=invalid-name
|
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
parser.add_argument('cmd')
|
|
parser.add_argument('--re-fail')
|
|
parser.add_argument('--re-ok')
|
|
parser.add_argument('--verbose', '-v', dest='verbose', action='store_true')
|
|
|
|
parser.set_defaults(verbose=False)
|
|
args = parser.parse_args()
|
|
|
|
proc = subprocess.Popen(args.cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
stdout, stderr = proc.communicate()
|
|
|
|
if stderr != "":
|
|
print(stderr)
|
|
sys.exit(1)
|
|
|
|
if args.re_fail is not None:
|
|
fail_match = re.search(args.re_fail, stdout)
|
|
if fail_match is not None:
|
|
print(stdout)
|
|
sys.exit(1)
|
|
|
|
if args.re_ok is not None:
|
|
ok_match = re.search(args.re_ok, stdout)
|
|
if re.match(args.re_ok, stdout) is None:
|
|
print(stdout)
|
|
sys.exit(1)
|
|
|
|
if args.verbose:
|
|
print(stdout)
|
|
|
|
sys.exit(0)
|
|
|
|
# vim: set et ft=python fenc=utf-8 ff=unix sts=4 sw=4 ts=4 :
|