You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
#!/usr/bin/env python |
|
""" |
|
This runs a command and compares output to a known file over |
|
a given line range. |
|
""" |
|
from __future__ import print_function |
|
import subprocess |
|
import argparse |
|
import os |
|
|
|
|
|
#pylint: disable=invalid-name |
|
parser = argparse.ArgumentParser(description='Process some integers.') |
|
parser.add_argument('--command', required=True) |
|
parser.add_argument('--stdin', required=True) |
|
parser.add_argument('--stdout', required=True) |
|
parser.add_argument('--check', required=True) |
|
parser.add_argument('--start', default=0) |
|
parser.add_argument('--stop', default=-1) |
|
args = parser.parse_args() |
|
|
|
d = os.path.dirname(args.stdout) |
|
if not os.path.exists(d): |
|
os.makedirs(d) |
|
|
|
with open(args.stdout, 'w') as outfile: |
|
with open(args.stdin, 'r') as infile: |
|
proc = subprocess.Popen( |
|
args.command, stdout=outfile, stdin=infile) |
|
proc.communicate() |
|
|
|
i_start = int(args.start) |
|
i_stop = int(args.stop) |
|
|
|
with open(args.stdout, 'r') as outfile: |
|
out_contents = file.readlines(outfile) |
|
out_contents = "".join(out_contents[i_start:i_stop]) |
|
|
|
with open(args.check, 'r') as checkfile: |
|
check_contents = file.readlines(checkfile) |
|
check_contents = "".join(check_contents[i_start:i_stop]) |
|
|
|
if (out_contents != check_contents): |
|
print("output:\n", out_contents) |
|
print("check:\n", check_contents) |
|
exit(1) |
|
|
|
exit(0) |
|
|
|
# vim: set et ft=python fenc= ff=unix sts=4 sw=4 ts=4 :
|
|
|