Index: test/libcxx/test/executor.py =================================================================== --- test/libcxx/test/executor.py +++ test/libcxx/test/executor.py @@ -6,7 +6,7 @@ class Executor(object): - def run(self, exe_path, cmd, local_cwd, env=None): + def run(self, exe_path, cmd, local_cwd, file_deps=None, env=None): """Execute a command. Be very careful not to change shared state in this function. Executor objects are shared between python processes in `lit -jN`. @@ -25,7 +25,7 @@ def __init__(self): super(LocalExecutor, self).__init__() - def run(self, exe_path, cmd=None, work_dir='.', env=None): + def run(self, exe_path, cmd=None, work_dir='.', file_deps=None, env=None): cmd = cmd or [exe_path] env_cmd = [] if env: @@ -48,10 +48,10 @@ self.commandPrefix = commandPrefix self.chain = chain - def run(self, exe_path, cmd=None, work_dir='.', env=None): + def run(self, exe_path, cmd=None, work_dir='.', file_deps=None, env=None): cmd = cmd or [exe_path] return self.chain.run(exe_path, self.commandPrefix + cmd, work_dir, - env=env) + file_deps, env=env) class PostfixExecutor(Executor): @@ -62,9 +62,10 @@ self.commandPostfix = commandPostfix self.chain = chain - def run(self, exe_path, cmd=None, work_dir='.', env=None): + def run(self, exe_path, cmd=None, work_dir='.', file_deps=None, env=None): cmd = cmd or [exe_path] - return self.chain.run(cmd + self.commandPostfix, work_dir, env=env) + return self.chain.run(cmd + self.commandPostfix, work_dir, file_deps, + env=env) @@ -107,24 +108,25 @@ # TODO: Log failure to delete? pass - def run(self, exe_path, cmd=None, work_dir='.', env=None): + def run(self, exe_path, cmd=None, work_dir='.', file_deps=None, env=None): target_exe_path = None target_cwd = None try: - target_exe_path = self.remote_temp_file() target_cwd = self.remote_temp_dir() + target_exe_path = os.path.join(target_cwd, 'libcxx_test') if cmd: # Replace exe_path with target_exe_path. cmd = [c if c != exe_path else target_exe_path for c in cmd] else: cmd = [target_exe_path] + self.copy_in([exe_path], [target_exe_path]) + for file_dep in file_deps: + file_basename = os.path.basename(file_dep) + dev_path = os.path.join(target_cwd, file_basename) + self._copy_in_file(file_dep, dev_path) return self._execute_command_remote(cmd, target_cwd, env) - except: - raise finally: - if target_exe_path: - self.delete_remote(target_exe_path) if target_cwd: self.delete_remote(target_cwd) Index: test/libcxx/test/format.py =================================================================== --- test/libcxx/test/format.py +++ test/libcxx/test/format.py @@ -115,8 +115,10 @@ env = None if self.exec_env: env = self.exec_env + data_files = [os.path.join(local_cwd, f) + for f in os.listdir(local_cwd) if f.endswith('.dat')] out, err, rc = self.executor.run(exec_path, [exec_path], - local_cwd, env) + local_cwd, data_files, env) if rc != 0: report = libcxx.util.makeReport(cmd, out, err, rc) report = "Compiled With: %s\n%s" % (compile_cmd, report)