Path: blob/21.2-virgl/src/intel/tools/tests/run-test.py
4547 views
#!/usr/bin/env python312import argparse3import difflib4import errno5import os6import pathlib7import subprocess8import sys910# The meson version handles windows paths better, but if it's not available11# fall back to shlex12try:13from meson.mesonlib import split_args14except ImportError:15from shlex import split as split_args1617parser = argparse.ArgumentParser()18parser.add_argument('--i965_asm',19help='path to i965_asm binary')20parser.add_argument('--gen_name',21help='name of the hardware generation (as understood by i965_asm)')22parser.add_argument('--gen_folder',23type=pathlib.Path,24help='name of the folder for the generation')25args = parser.parse_args()2627wrapper = os.environ.get('MESON_EXE_WRAPPER')28if wrapper is not None:29i965_asm = split_args(wrapper) + [args.i965_asm]30else:31i965_asm = [args.i965_asm]3233success = True3435for asm_file in args.gen_folder.glob('*.asm'):36expected_file = asm_file.stem + '.expected'37expected_path = args.gen_folder / expected_file3839try:40command = i965_asm + [41'--type', 'hex',42'--gen', args.gen_name,43asm_file44]45with subprocess.Popen(command,46stdout=subprocess.PIPE,47stderr=subprocess.DEVNULL) as cmd:48lines_after = [line.decode('ascii') for line in cmd.stdout.readlines()]49except OSError as e:50if e.errno == errno.ENOEXEC:51print('Skipping due to inability to run host binaries.',52file=sys.stderr)53exit(77)54raise5556with expected_path.open() as f:57lines_before = f.readlines()5859diff = ''.join(difflib.unified_diff(lines_before, lines_after,60expected_file, asm_file.stem + '.out'))6162if diff:63print('Output comparison for {}:'.format(asm_file.name))64print(diff)65success = False66else:67print('{} : PASS'.format(asm_file.name))6869if not success:70exit(1)717273