diff --git a/libcxx/utils/run.py b/libcxx/utils/run.py --- a/libcxx/utils/run.py +++ b/libcxx/utils/run.py @@ -29,13 +29,18 @@ args = parser.parse_args() commandLine = args.command - # Do any necessary codesigning. + # HACK: + # If an argument is a file that ends in `.tmp.exe`, assume it is the name + # of an executable generated by a test file. We call these test-executables + # below. This allows us to do custom processing like codesigning test-executables. + # It's also possible for there to be no such executable, for example in the case + # of a .sh.cpp test. + isTestExe = lambda exe: exe.endswith('.tmp.exe') and os.path.exists(exe) + + # Do any necessary codesigning of test-executables found in the command line. if args.codesign_identity: - exe = commandLine[0] - rc = subprocess.call(['xcrun', 'codesign', '-f', '-s', args.codesign_identity, exe], env={}) - if rc != 0: - sys.stderr.write('Failed to codesign: ' + exe) - return rc + for exe in filter(isTestExe, commandLine): + subprocess.check_call(['xcrun', 'codesign', '-f', '-s', args.codesign_identity, exe], env={}) # Extract environment variables into a dictionary env = {k : v for (k, v) in map(lambda s: s.split('=', 1), args.env)}