def test_merge_fixtures(self): merge_fixtures_path = fixture_path("merge") merge_projects = listpath(merge_fixtures_path) merge_tasks = [listpath(merge_project) for merge_project in merge_projects] for merge_task in chain.from_iterable(merge_tasks): task_files = listpath(merge_task) project_files = load_merge_task(task_files) self.logger.info("merging base %s with my %s and their %s and comparing with %s..." % project_files) projects = [pbxproj.read(project_file) for project_file in project_files] base, mine, theirs, merged = projects merged_buffer = StringIO() merged_buffer = wrap_with_codec(merged_buffer, codec=base.get_encoding()) merged_project = merge_pbxs(base, mine, theirs) pbxproj.write(merged_buffer, merged_project) #now compare the content of the written file with the original file #this should stay the same expected_merged_content = open(project_files[-1]).read() merged_content = merged_buffer.getvalue() merged_buffer.close() #if assert will fail, generate a diff for this failure if not merged_content == expected_merged_content: self.logger.error("failed to generate an exact replica, diff follows:") diff_lines = difflib.unified_diff(expected_merged_content.splitlines(), merged_content.splitlines()) for line in diff_lines: self.logger.error(line) self.assertEquals(merged_content, expected_merged_content, "%s was not correctly merged" % merge_task)
def merge_pbx_files(basef, minef, theirsf, mergedf): base, mine, theirs = read_pbxs((basef, minef, theirsf)) merged_project = merge_pbxs(base, mine, theirs) mergedf = open(mergedf, "w") write_pbx(merged_project, mergedf)
def merge_pbx_files(basef, minef, theirsf, mergedf, clean=False): base, mine, theirs = read_pbxs((basef, minef, theirsf)) if clean: for name, project in zip((basef, minef, theirsf), (base, mine, theirs)): files_removed = project.clean_files() if len(files_removed) > 0: print "WARNING: %d dangling file references removed from %s" % (len(files_removed), name) merged_project = merge_pbxs(base, mine, theirs) pbxproj.write(mergedf, merged_project)
def merge_pbx_files(basef, minef, theirsf): base, mine, theirs = (pbxproj.read(f) for f in (basef, minef, theirsf)) merged_project = merge_pbxs(base, mine, theirs)
def merge_pbx_files(basef, minef, theirsf, mergedf): base, mine, theirs = read_pbxs((basef, minef, theirsf)) merged_project = merge_pbxs(base, mine, theirs) pbxproj.write(mergedf, merged_project)