def test_no_conflict_recursive_merge(self):
        git = GitCmd()
        git.do_merge('')
        expected = "No branch names provided"
        self.assertEqual(git.output, expected)

        git.do_merge('octupus merge')
        expected = "Git Crystals does not support merging mulitple branches"
        self.assertEqual(git.output, expected)

        git.do_branch('trial')
        git.do_checkout('trial')
        G.change_location_file("Git Crystal")
        git.do_stage('location.json')
        git.do_commit('Player in Git Crystal')
        git.do_checkout('data')
        git.do_merge('trial')

        command = [G.GIT, '-C', G.repodir, 'branch', '-D', 'trial']
        process = cw.run_process(command)

        expected = """Merge made by the 'recursive' strategy.
 location.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
"""
        self.assertEqual(git.output, expected)
    def test_checkout_same_ref(self):
        git = GitCmd()
        git.do_branch('newbranch')

        command = [G.GIT, '-C', G.repodir, 'checkout', 'newbranch']
        process = cw.run_process(command)

        git.do_checkout('newbranch')
        git.do_listbranches('')
        expected = "  data\n* newbranch\n"
        actual = git.output

        command = [G.GIT, '-C', G.repodir, 'checkout', G.current_branch]
        process = cw.run_process(command)
        command = [G.GIT, '-C', G.repodir, 'branch', '-d', 'newbranch']
        process = cw.run_process(command)

        self.assertEqual(actual, expected)
    def test_merge_with_conflicts(self):
        git = GitCmd()

        git.do_branch('trial')
        G.change_location_file("Git Crystal")
        git.do_stage('location.json')
        git.do_commit('Player in Git Crystal')
        git.do_checkout('data')
        G.change_location_file("Stalagmite Central")
        git.do_stage('location.json')
        git.do_merge('trial')
        git.do_resolveleft('location.json')
        git.do_resolveright('location.json')
        git.do_stage('location.json')
        git.do_commit('Merge Branch Trial')
        git.do_status(
            '')  # Get status message after successful merge resolution.

        command = [G.GIT, '-C', G.repodir, 'branch', '-D', 'trial']
        process = cw.run_process(command)

        expected = 'No changes since last commit\n'
        self.assertEqual(git.output, expected)
    def test_loop_exit(self):
        git = GitCmd()
        git.alive.data['alive'] = True
        git.alive.write()

        git_loop_exits1 = git.do_checkoutfile('alive.json')
        git_loop_exits2 = git.do_checkout('data')
        git_loop_exits3 = git.do_checkoutforce('data')
        git_loop_exits4 = git.do_merge('data')
        git_loop_exits5 = git.do_resolveleft('alive.json')
        git_loop_exits6 = git.do_resolveleft('alive.json')

        self.assertTrue(git_loop_exits1)
        self.assertTrue(git_loop_exits2)
        self.assertTrue(git_loop_exits3)
        self.assertTrue(git_loop_exits4)
        self.assertTrue(git_loop_exits5)
        self.assertTrue(git_loop_exits6)