| #!/usr/bin/env python3 |
| import argparse |
| import difflib |
| import re |
| import subprocess |
| import sys |
| |
| |
| def stdout_cmp(f1, f2): |
| def lines_run(xs): |
| out = subprocess.run(xs, stdout=subprocess.PIPE, check=True).stdout.decode() |
| lines = out.splitlines(keepends=True) |
| return out, [re.sub(r'([\t ])', '', ln) for ln in lines] |
| |
| out1, lns1 = lines_run(f1) |
| out2, lns2 = lines_run(f2) |
| dif = list(difflib.unified_diff(lns1, lns2)) |
| return len(dif) == 0, dif |
| |
| |
| if __name__ == '__main__': |
| parser = argparse.ArgumentParser(description='Comparing the standard output of two threads') |
| parser.add_argument("-f1", nargs='+') |
| parser.add_argument("-f2", nargs='+') |
| argv = parser.parse_args(sys.argv[1:]) |
| res, dif = stdout_cmp(argv.f1, argv.f2) |
| if not res: |
| print('\n'.join(dif)) |
| exit(1) |
| exit(0) |