2d1c1a596c14c2eb15eb5b5fc572618f8a0f5c76
[mesa.git] / src / intel / tools / tests / run-test.py
1 #!/usr/bin/env python3
2
3 import argparse
4 import difflib
5 import pathlib
6 import subprocess
7 import tempfile
8
9 parser = argparse.ArgumentParser()
10 parser.add_argument('--i965_asm',
11 help='path to i965_asm binary')
12 parser.add_argument('--gen_name',
13 help='name of the hardware generation (as understood by i965_asm)')
14 parser.add_argument('--gen_folder',
15 type=pathlib.Path,
16 help='name of the folder for the generation')
17 args = parser.parse_args()
18
19 success = True
20
21 for asm_file in args.gen_folder.glob('*.asm'):
22 expected_file = asm_file.stem + '.expected'
23 expected_path = args.gen_folder / expected_file
24 out_path = tempfile.NamedTemporaryFile()
25
26 subprocess.run([args.i965_asm,
27 '--type', 'hex',
28 '--gen', args.gen_name,
29 '--output', out_path.name,
30 asm_file],
31 stdout=subprocess.DEVNULL,
32 stderr=subprocess.STDOUT)
33
34 with expected_path.open() as f:
35 lines_before = f.readlines()
36 lines_after = [line.decode('ascii') for line in out_path]
37
38 diff = ''.join(difflib.unified_diff(lines_before, lines_after,
39 expected_file, asm_file.stem + '.out'))
40
41 if diff:
42 print('Output comparison for {}:'.format(asm_file.name))
43 print(diff)
44 success = False
45 else:
46 print('{} : PASS'.format(asm_file.name))
47
48 if not success:
49 exit(1)