def setup(self, context): before_dirs = [ _d(os.path.join(context.output_directory, 'before', self._local_dir(d))) for d in self.paths ] after_dirs = [ _d(os.path.join(context.output_directory, 'after', self._local_dir(d))) for d in self.paths ] diff_dirs = [ _d(os.path.join(context.output_directory, 'diff', self._local_dir(d))) for d in self.paths ] self.device_and_host_paths = list(zip(self.paths, before_dirs, after_dirs, diff_dirs)) if self.use_tmpfs: for d in self.paths: before_dir = self.target.path.join(self.on_device_before, self.target.path.dirname(as_relative(d))) after_dir = self.target.path.join(self.on_device_after, self.target.path.dirname(as_relative(d))) if self.target.file_exists(before_dir): self.target.execute('rm -rf {}'.format(before_dir), as_root=True) self.target.execute('mkdir -p {}'.format(before_dir), as_root=True) if self.target.file_exists(after_dir): self.target.execute('rm -rf {}'.format(after_dir), as_root=True) self.target.execute('mkdir -p {}'.format(after_dir), as_root=True)
def stop(self, context): if self.use_tmpfs: for d in self.paths: dest_dir = self.target.path.join(self.on_device_after, as_relative(d)) if '*' in dest_dir: dest_dir = self.target.path.dirname(dest_dir) self.target.execute('{} cp -Hr {} {}'.format(self.target.busybox, d, dest_dir), as_root=True, check_exit_code=False) else: # not using tmpfs for dev_dir, _, after_dir, _ in self.device_and_host_paths: self.target.pull(dev_dir, after_dir)
def _local_dir(self, directory): return os.path.dirname( as_relative(directory).replace(self.target.path.sep, os.sep))