1e01aa904Sopenharmony_ci#!/bin/python 2e01aa904Sopenharmony_ci# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 3e01aa904Sopenharmony_ci 4e01aa904Sopenharmony_ci# This program generates the copy commands you should use to update 5e01aa904Sopenharmony_ci# the reference data for tests <build-dir>/tests/runtest* that emit an 6e01aa904Sopenharmony_ci# output that is compared against a reference output. 7e01aa904Sopenharmony_ci# 8e01aa904Sopenharmony_ci# It takes in argument the diff result emitted by 9e01aa904Sopenharmony_ci# <build-dir>/tests/runtest*, and emits on standard output a series of 10e01aa904Sopenharmony_ci# 'cp <src> <dest>' commands to execute to update reference data of 11e01aa904Sopenharmony_ci# the test. 12e01aa904Sopenharmony_ci 13e01aa904Sopenharmony_ciimport fileinput 14e01aa904Sopenharmony_ciimport re 15e01aa904Sopenharmony_ciimport sys 16e01aa904Sopenharmony_ciimport getopt 17e01aa904Sopenharmony_ci 18e01aa904Sopenharmony_ci 19e01aa904Sopenharmony_cidef display_usage(): 20e01aa904Sopenharmony_ci sys.stderr.write("usage: prog-name [options] <file-name|-->\n"); 21e01aa904Sopenharmony_ci sys.stderr.write(" options:\n"); 22e01aa904Sopenharmony_ci sys.stderr.write(" -h display this help\n"); 23e01aa904Sopenharmony_ci sys.stderr.write(" argument:\n"); 24e01aa904Sopenharmony_ci sys.stderr.write(" <file-name> the file to read from\n"); 25e01aa904Sopenharmony_ci sys.stderr.write(" if no argument, then reads from stdin\n"); 26e01aa904Sopenharmony_ci 27e01aa904Sopenharmony_ci sys.exit(2) 28e01aa904Sopenharmony_ci 29e01aa904Sopenharmony_cidef main(): 30e01aa904Sopenharmony_ci input_file = None 31e01aa904Sopenharmony_ci 32e01aa904Sopenharmony_ci try: 33e01aa904Sopenharmony_ci opts, args = getopt.getopt(sys.argv[1:], "hi", ["help"]) 34e01aa904Sopenharmony_ci except getopt.GetoptError as err: 35e01aa904Sopenharmony_ci print(str(err)) 36e01aa904Sopenharmony_ci display_usage() 37e01aa904Sopenharmony_ci 38e01aa904Sopenharmony_ci for opt, arg in opts: 39e01aa904Sopenharmony_ci if opt in ("-h", "--help"): 40e01aa904Sopenharmony_ci display_usage() 41e01aa904Sopenharmony_ci else: 42e01aa904Sopenharmony_ci # unknown option. 43e01aa904Sopenharmony_ci display_usage() 44e01aa904Sopenharmony_ci 45e01aa904Sopenharmony_ci if input_file == None and len(args) and args[0] != None: 46e01aa904Sopenharmony_ci input_file = open(args[0], 'r') 47e01aa904Sopenharmony_ci elif input_file == None: 48e01aa904Sopenharmony_ci input_file = sys.stdin 49e01aa904Sopenharmony_ci 50e01aa904Sopenharmony_ci if input_file != None: 51e01aa904Sopenharmony_ci process(input_file) 52e01aa904Sopenharmony_ci else: 53e01aa904Sopenharmony_ci display_usage() 54e01aa904Sopenharmony_ci 55e01aa904Sopenharmony_ci 56e01aa904Sopenharmony_cidef process(input_file): 57e01aa904Sopenharmony_ci source = "" 58e01aa904Sopenharmony_ci dest = "" 59e01aa904Sopenharmony_ci for line in input_file: 60e01aa904Sopenharmony_ci m = re.match(r'^--- (.*?)\t', line) 61e01aa904Sopenharmony_ci if m: 62e01aa904Sopenharmony_ci dest = m.group(1) 63e01aa904Sopenharmony_ci else: 64e01aa904Sopenharmony_ci m = re.match(r'^\+\+\+ (.*?)\t', line) 65e01aa904Sopenharmony_ci if m: 66e01aa904Sopenharmony_ci source = m.group(1) 67e01aa904Sopenharmony_ci sys.stdout.write("cp " + source + " " + dest + "\n"); 68e01aa904Sopenharmony_ci 69e01aa904Sopenharmony_ciif __name__ == "__main__": 70e01aa904Sopenharmony_ci main() 71