def test_git_apply(self):
     patch_object = PatchObject(os.path.join(self.WORKING_DIR, self.PATCH_1), 1, None)
     GitPatchTool.apply_patch(self.git_helper, patch_object)
     GitPatchTool.commit_patch(self.git_helper, os.path.join(self.WORKING_DIR, self.PATCH_1))
     # Try catch is workaroung for Travis CI
     try:
         commit_message = self._parse_commit_log()
     except TypeError:
         commit_message = ['Patch: project-ChangeLog.patch', 'Initial Commit']
     assert commit_message == ['Patch: project-ChangeLog.patch', 'Initial Commit']
 def test__git_rebase(self, rebased_sources, old_sources, new_sources,
                      old_repo, new_repo, favor_on_conflict):
     GitPatchTool.cont = False
     GitPatchTool.non_interactive = True
     GitPatchTool.kwargs = dict(rebased_sources_dir=rebased_sources)
     GitPatchTool.old_sources = old_sources
     GitPatchTool.new_sources = new_sources
     GitPatchTool.old_repo = old_repo
     GitPatchTool.new_repo = new_repo
     GitPatchTool.favor_on_conflict = favor_on_conflict
     GitPatchTool.patches = [
         PatchObject(os.path.basename(getattr(self, 'PATCH{0}'.format(n))),
                     n, 1) for n in range(1, 5)
     ]
     patches = GitPatchTool._git_rebase()  # pylint: disable=protected-access
     assert patches['untouched'] == [os.path.basename(self.PATCH1)]
     if favor_on_conflict == 'upstream':
         assert patches['modified'] == [os.path.basename(self.PATCH2)]
         assert patches['deleted'] == [
             os.path.basename(self.PATCH3),
             os.path.basename(self.PATCH4)
         ]
         assert 'inapplicable' not in patches
     elif favor_on_conflict == 'downstream':
         assert patches['modified'] == [
             os.path.basename(self.PATCH2),
             os.path.basename(self.PATCH3)
         ]
         assert patches['deleted'] == [os.path.basename(self.PATCH4)]
         assert 'inapplicable' not in patches
     else:
         assert patches['modified'] == [os.path.basename(self.PATCH2)]
         assert patches['deleted'] == [os.path.basename(self.PATCH4)]
         assert patches['inapplicable'] == [os.path.basename(self.PATCH3)]
     with open(os.path.join(rebased_sources,
                            os.path.basename(self.PATCH2))) as f:
         content = f.read()
         assert 'From: {0} <{1}>\n'.format(self.USER, self.EMAIL) in content
         assert 'Subject: [PATCH] P2\n' in content
         assert GitPatchTool.decorate_patch_name(
             os.path.basename(self.PATCH2)) not in content
 def old_repo(self, old_sources):
     repo = git.Repo.init(old_sources)
     repo.git.config('user.name', self.USER, local=True)
     repo.git.config('user.email', self.EMAIL, local=True)
     shutil.copy(os.path.basename(self.LIPSUM_OLD),
                 os.path.join(old_sources, 'lipsum.txt'))
     repo.git.add(all=True)
     repo.index.commit('Initial commit', skip_hooks=True)
     for n in range(1, 5):
         patch_name = os.path.basename(getattr(self, 'PATCH{0}'.format(n)))
         repo.git.apply(os.path.join(os.getcwd(), patch_name))
         repo.git.add(all=True)
         repo.index.commit(GitPatchTool.insert_patch_name(
             'P{0}'.format(n), patch_name),
                           skip_hooks=True)
     return repo
 def _init_git_repo(self, dirname):
     GitPatchTool.init_git(dirname)
 def test_git_apply(self):
     GitPatchTool.apply_patch(self.git_helper, os.path.join(self.WORKING_DIR, self.PATCH_1))
     GitPatchTool.commit_patch(self.git_helper, os.path.join(self.WORKING_DIR, self.PATCH_1))
     commit_message = self._parse_commit_log()
     assert commit_message == ['Patch: project-ChangeLog.patch', 'Initial Commit']