import os from P4 import P4, P4Exception class P4ForTest(object): def __init__(self): self._init_p4() def _init_p4(self): self.p4 = P4() def create_client(self, client_name, client_workdir): self.p4client_name = client_name self.client_workdir = client_workdir self.p4.client = client_name self.p4.cwd = client_workdir try: self.p4.connect() client = self.p4.fetch_client(self.p4client_name) client['Root'] = self.client_workdir client['Host'] = '' client['Options'] = client['Options'].replace('normdir', 'rmdir') self.p4.save_client(client) finally: self.p4.disconnect() def destroy_client(self): try: self.p4.connect() self.p4.delete_client('-f', self.p4client_name) finally: self.p4.disconnect() def get_user(self): return self.p4.user def sync(self): orig_dir = os.getcwdu() os.chdir(self.client_workdir) try: self.p4.run_sync() except P4Exception, e: if self.p4.warnings != ['No such file(s).']: raise finally: os.chdir(orig_dir) def add_file(self, file_path, file_contents): orig_dir = os.getcwdu() os.chdir(self.client_workdir) # Adds a file to Perforce. try: f = open(file_path, 'w') f.write(file_contents) f.flush() self.p4.run_add(file_path) finally: f.close() os.chdir(orig_dir) def submit(self, change_description): orig_dir = os.getcwdu() os.chdir(self.client_workdir) try: self.p4.run_submit('-d', change_description, '...') finally: os.chdir(orig_dir)