bzip2/tests/runtest.py
Dylan Baker f6f3326c69 Move tests into a tests/ directory
I've updated autotools, meson, and the makefile.msc, though I haven't
verified tat the nmake file works.
2019-06-06 14:18:47 -07:00

60 lines
1.4 KiB
Python

#!/usr/bin/env python3
import argparse
import subprocess
import sys
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument('--mode', choices={'compress', 'decompress'})
parser.add_argument('bzip2')
parser.add_argument('bzip_arg')
parser.add_argument('input')
parser.add_argument('reference', nargs='?')
args = parser.parse_args()
if args.mode == 'compress':
test_compress(args)
else:
test_decompress(args)
def test_compress(args: argparse.Namespace) -> None:
with open(args.reference, 'rb') as f:
expected = f.read()
with open(args.input, 'rb') as f:
input_ = f.read()
p = subprocess.run(
[args.bzip2, args.bzip_arg],
stdout=subprocess.PIPE,
input=input_)
if p.returncode != 0:
sys.exit(1)
def test_decompress(args: argparse.Namespace) -> None:
with open(args.input, 'rb') as f:
input_ = f.read()
p = subprocess.run(
[args.bzip2, args.bzip_arg],
stdout=subprocess.PIPE,
input=input_)
if p.returncode != 0:
sys.exit(2)
compressed = p.stdout
dargs = '-d' if args.bzip_arg != '-3' else '-ds'
p = subprocess.run(
[args.bzip2, dargs],
stdout=subprocess.PIPE,
input=compressed,
)
if p.returncode != 0:
sys.exit(1)
if __name__ == "__main__":
main()