Example #1
0
 def __assert_checkout_not_head(self, *fps):
   root = self.repo.root
   for fp in fps:
     utils_lib.write_file(fp, contents='contents')
     self.curr_b.checkout_file(
         os.path.relpath(fp, root), self.repo.revparse_single('HEAD^'))
     self.assertEqual(TRACKED_FP_CONTENTS_1, utils_lib.read_file(fp))
Example #2
0
  def test_diff_non_ascii(self):
    if sys.platform == 'win32':
      # Skip this test on Windows until we fix Unicode support
      return
    fp = 'new'
    new_fp_contents = '’◕‿◕’©Ä☺’ಠ_ಠ’\n'
    utils_lib.write_file(fp, contents=new_fp_contents)
    self.curr_b.track_file(fp)
    patch = self.curr_b.diff_file(fp)

    self.assertEqual(1, patch.line_stats[1])
    self.assertEqual(0, patch.line_stats[2])

    self.assertEqual(1, len(patch.hunks))
    hunk = list(patch.hunks)[0]

    self.assertEqual(1, len(hunk.lines))
    self.assertEqual('+', hunk.lines[0].origin)
    self.assertEqual(new_fp_contents, hunk.lines[0].content)

    utils_lib.append_to_file(fp, contents='new line')
    patch = self.curr_b.diff_file(fp)

    self.assertEqual(2, patch.line_stats[1])
    self.assertEqual(0, patch.line_stats[2])

    self.assertEqual(1, len(patch.hunks))
    hunk = list(patch.hunks)[0]

    self.assertEqual(3, len(hunk.lines))
    self.assertEqual('+', hunk.lines[0].origin)
    self.assertEqual(new_fp_contents, hunk.lines[0].content)

    self.assertEqual('+', hunk.lines[1].origin)
    self.assertEqual('new line', hunk.lines[1].content)
Example #3
0
 def test_status_modify(self):
   utils_lib.write_file(TRACKED_FP, contents='contents')
   st = self.curr_b.status_file(TRACKED_FP)
   self.assertTrue(st.modified)
   utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_2)
   st = self.curr_b.status_file(TRACKED_FP)
   self.assertFalse(st.modified)
Example #4
0
    def test_diff_non_ascii(self):
        fp = 'new'
        new_fp_contents = '’◕‿◕’©Ä☺’ಠ_ಠ’\n'
        utils_lib.write_file(fp, contents=new_fp_contents)
        self.curr_b.track_file(fp)
        patch = self.curr_b.diff_file(fp)

        self.assertEqual(1, patch.line_stats[1])
        self.assertEqual(0, patch.line_stats[2])

        self.assertEqual(1, len(patch.hunks))
        hunk = list(patch.hunks)[0]

        self.assertEqual(1, len(hunk.lines))
        self.assertEqual('+', hunk.lines[0].origin)
        self.assertEqual(new_fp_contents, hunk.lines[0].content)

        utils_lib.append_to_file(fp, contents='new line')
        patch = self.curr_b.diff_file(fp)

        self.assertEqual(2, patch.line_stats[1])
        self.assertEqual(0, patch.line_stats[2])

        self.assertEqual(1, len(patch.hunks))
        hunk = list(patch.hunks)[0]

        self.assertEqual(3, len(hunk.lines))
        self.assertEqual('+', hunk.lines[0].origin)
        self.assertEqual(new_fp_contents, hunk.lines[0].content)

        self.assertEqual('+', hunk.lines[1].origin)
        self.assertEqual('new line', hunk.lines[1].content)
Example #5
0
  def test_diff_non_ascii(self):
    fp = 'new'
    new_fp_contents = '’◕‿◕’©Ä☺’ಠ_ಠ’\n'
    utils_lib.write_file(fp, contents=new_fp_contents)
    self.curr_b.track_file(fp)
    patch = self.curr_b.diff_file(fp)

    self.assertEqual(1, patch.line_stats[1])
    self.assertEqual(0, patch.line_stats[2])

    self.assertEqual(1, len(patch.hunks))
    hunk = list(patch.hunks)[0]

    self.assertEqual(1, len(hunk.lines))
    self.assertEqual('+', hunk.lines[0].origin)
    self.assertEqual(new_fp_contents, hunk.lines[0].content)

    utils_lib.append_to_file(fp, contents='new line')
    patch = self.curr_b.diff_file(fp)

    self.assertEqual(2, patch.line_stats[1])
    self.assertEqual(0, patch.line_stats[2])

    self.assertEqual(1, len(patch.hunks))
    hunk = list(patch.hunks)[0]

    self.assertEqual(3, len(hunk.lines))
    self.assertEqual('+', hunk.lines[0].origin)
    self.assertEqual(new_fp_contents, hunk.lines[0].content)

    self.assertEqual('+', hunk.lines[1].origin)
    self.assertEqual('new line', hunk.lines[1].content)
Example #6
0
  def test_conflicts_switch(self):
    gl.switch('other')
    utils.write_file(self.OTHER_FILE, contents='uncommitted')
    gl.switch('master')
    try:
      gl.fuse(self.OTHER, e=self.commits[self.OTHER][0])
      self.fail()
    except ErrorReturnCode:
      pass

    # Switch
    gl.switch('other')
    self.__assert_history(self.__build('other'))
    st_out = utils.stdout(gl.status())
    self.assertTrue('fuse' not in st_out)
    self.assertTrue('conflict' not in st_out)

    gl.switch('master')
    st_out = utils.stdout(gl.status())
    self.assertTrue('fuse' in st_out)
    self.assertTrue('conflict' in st_out)

    # Check that we are able to complete the fuse after switch
    gl.resolve(self.OTHER_FILE)
    gl.commit(m='ci 1 in other')
    self.__assert_history(
        self.__build(self.OTHER, range(1, self.COMMITS_NUMBER)) +
        self.__build('master'))

    gl.switch('other')
    self.assertEqual('uncommitted', utils.read_file(self.OTHER_FILE))
Example #7
0
    def test_conflicts_switch(self):
        gl.switch('other')
        utils.write_file(self.OTHER_FILE, contents='uncommitted')
        gl.switch('master')
        try:
            gl.fuse(self.OTHER, e=self.commits[self.OTHER][0])
            self.fail()
        except ErrorReturnCode:
            pass

        # Switch
        gl.switch('other')
        self.__assert_history(self.__build('other'))
        st_out = utils.stdout(gl.status())
        self.assertTrue('fuse' not in st_out)
        self.assertTrue('conflict' not in st_out)

        gl.switch('master')
        st_out = utils.stdout(gl.status())
        self.assertTrue('fuse' in st_out)
        self.assertTrue('conflict' in st_out)

        # Check that we are able to complete the fuse after switch
        gl.resolve(self.OTHER_FILE)
        gl.commit(m='ci 1 in other')
        self.__assert_history(
            self.__build(self.OTHER, range(1, self.COMMITS_NUMBER)) +
            self.__build('master'))

        gl.switch('other')
        self.assertEqual('uncommitted', utils.read_file(self.OTHER_FILE))
Example #8
0
    def test_diff_non_ascii(self):
        if sys.platform == 'win32':
            # Skip this test on Windows until we fix Unicode support
            return
        fp = 'new'
        new_fp_contents = '’◕‿◕’©Ä☺’ಠ_ಠ’\n'
        utils_lib.write_file(fp, contents=new_fp_contents)
        self.curr_b.track_file(fp)
        patch = self.curr_b.diff_file(fp)

        self.assertEqual(1, patch.line_stats[1])
        self.assertEqual(0, patch.line_stats[2])

        self.assertEqual(1, len(patch.hunks))
        hunk = list(patch.hunks)[0]

        self.assertEqual(1, len(hunk.lines))
        self.assertEqual('+', hunk.lines[0].origin)
        self.assertEqual(new_fp_contents, hunk.lines[0].content)

        utils_lib.append_to_file(fp, contents='new line')
        patch = self.curr_b.diff_file(fp)

        self.assertEqual(2, patch.line_stats[1])
        self.assertEqual(0, patch.line_stats[2])

        self.assertEqual(1, len(patch.hunks))
        hunk = list(patch.hunks)[0]

        self.assertEqual(3, len(hunk.lines))
        self.assertEqual('+', hunk.lines[0].origin)
        self.assertEqual(new_fp_contents, hunk.lines[0].content)

        self.assertEqual('+', hunk.lines[1].origin)
        self.assertEqual('new line', hunk.lines[1].content)
Example #9
0
 def test_status_modify(self):
     utils_lib.write_file(TRACKED_FP, contents='contents')
     st = self.curr_b.status_file(TRACKED_FP)
     self.assertTrue(st.modified)
     utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_2)
     st = self.curr_b.status_file(TRACKED_FP)
     self.assertFalse(st.modified)
Example #10
0
 def test_switch_contents_still_there_untracked(self):
   self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
   utils_lib.write_file(UNTRACKED_FP, contents='contents')
   self.repo.switch_current_branch(self.repo.lookup_branch('master'))
   self.assertEqual(UNTRACKED_FP_CONTENTS, utils_lib.read_file(UNTRACKED_FP))
   self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
   self.assertEqual('contents', utils_lib.read_file(UNTRACKED_FP))
Example #11
0
 def __assert_checkout_not_head(self, *fps):
     root = self.repo.root
     for fp in fps:
         utils_lib.write_file(fp, contents='contents')
         self.curr_b.checkout_file(os.path.relpath(fp, root),
                                   self.repo.revparse_single('HEAD^'))
         self.assertEqual(TRACKED_FP_CONTENTS_1, utils_lib.read_file(fp))
Example #12
0
    def test_diff_new_fp(self):
        fp = 'new'
        new_fp_contents = 'new fp contents\n'
        utils_lib.write_file(fp, contents=new_fp_contents)
        self.curr_b.track_file(fp)
        patch = self.curr_b.diff_file(fp)

        self.assertEqual(1, patch.line_stats[1])
        self.assertEqual(0, patch.line_stats[2])

        self.assertEqual(1, len(patch.hunks))
        hunk = list(patch.hunks)[0]

        self.assertEqual(1, len(hunk.lines))
        self.assertEqual('+', hunk.lines[0].origin)
        self.assertEqual(new_fp_contents, hunk.lines[0].content)

        # Now let's add some change to the file and check that diff notices it
        utils_lib.append_to_file(fp, contents='new line')
        patch = self.curr_b.diff_file(fp)

        self.assertEqual(2, patch.line_stats[1])
        self.assertEqual(0, patch.line_stats[2])

        self.assertEqual(1, len(patch.hunks))
        hunk = list(patch.hunks)[0]

        self.assertEqual(3, len(hunk.lines))
        self.assertEqual('+', hunk.lines[0].origin)
        self.assertEqual(new_fp_contents, hunk.lines[0].content)

        self.assertEqual('+', hunk.lines[1].origin)
        self.assertEqual('new line', hunk.lines[1].content)
Example #13
0
    def test_conflicts_multiple_uncommitted_changes(self):
        gl.branch(c='tmp', divergent_point='HEAD~2')
        gl.switch('tmp')
        utils.append_to_file(self.MASTER_FILE, contents='conflict')
        gl.commit(m='will conflict 0')
        utils.append_to_file(self.MASTER_FILE, contents='conflict')
        gl.commit(m='will conflict 1')
        utils.write_file(self.MASTER_FILE, contents='uncommitted')

        self.assertRaisesRegexp(ErrorReturnCode, 'conflicts', gl.fuse,
                                'master')
        gl.resolve(self.MASTER_FILE)
        self.assertRaisesRegexp(ErrorReturnCode,
                                'conflicts',
                                gl.commit,
                                m='ci 0 in tmp')
        gl.resolve(self.MASTER_FILE)
        self.assertRaisesRegexp(ErrorReturnCode,
                                'failed to apply',
                                gl.commit,
                                m='ci 1 in tmp')

        self.__assert_history(
            self.__build('master') + self.__build('tmp', range(2)))
        self.assertTrue('Stashed' in utils.read_file(self.MASTER_FILE))
Example #14
0
 def test_switch_contents_still_there_ignored(self):
   self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
   utils_lib.write_file(IGNORED_FP, contents='contents')
   self.repo.switch_current_branch(self.repo.lookup_branch('master'))
   self.assertEqual(IGNORED_FP, utils_lib.read_file(IGNORED_FP))
   self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
   self.assertEqual('contents', utils_lib.read_file(IGNORED_FP))
Example #15
0
 def test_switch_contents_still_there_tracked_commit(self):
   utils_lib.write_file(TRACKED_FP, contents='commit')
   git.commit(TRACKED_FP, m='comment')
   self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
   self.assertEqual(TRACKED_FP_CONTENTS_2, utils_lib.read_file(TRACKED_FP))
   self.repo.switch_current_branch(self.repo.lookup_branch('master'))
   self.assertEqual('commit', utils_lib.read_file(TRACKED_FP))
Example #16
0
    def test_status_unignore(self):
        utils_lib.write_file('.gitignore', contents='')
        st = self.curr_b.status_file(IGNORED_FP)
        self.assertEqual(core.GL_STATUS_UNTRACKED, st.type)

        st = self.curr_b.status_file(IGNORED_FP_WITH_SPACE)
        self.assertEqual(core.GL_STATUS_UNTRACKED, st.type)
Example #17
0
  def test_status_unignore(self):
    utils_lib.write_file('.gitignore', contents='')
    st = self.curr_b.status_file(IGNORED_FP)
    self.assertEqual(core.GL_STATUS_UNTRACKED, st.type)

    st = self.curr_b.status_file(IGNORED_FP_WITH_SPACE)
    self.assertEqual(core.GL_STATUS_UNTRACKED, st.type)
Example #18
0
  def test_diff_new_fp(self):
    fp = 'new'
    new_fp_contents = 'new fp contents\n'
    utils_lib.write_file(fp, contents=new_fp_contents)
    self.curr_b.track_file(fp)
    patch = self.curr_b.diff_file(fp)

    self.assertEqual(1, patch.line_stats[1])
    self.assertEqual(0, patch.line_stats[2])

    self.assertEqual(1, len(patch.hunks))
    hunk = list(patch.hunks)[0]

    self.assertEqual(1, len(hunk.lines))
    self.assertEqual('+', hunk.lines[0].origin)
    self.assertEqual(new_fp_contents, hunk.lines[0].content)

    # Now let's add some change to the file and check that diff notices it
    utils_lib.append_to_file(fp, contents='new line')
    patch = self.curr_b.diff_file(fp)

    self.assertEqual(2, patch.line_stats[1])
    self.assertEqual(0, patch.line_stats[2])

    self.assertEqual(1, len(patch.hunks))
    hunk = list(patch.hunks)[0]

    self.assertEqual(3, len(hunk.lines))
    self.assertEqual('+', hunk.lines[0].origin)
    self.assertEqual(new_fp_contents, hunk.lines[0].content)

    self.assertEqual('+', hunk.lines[1].origin)
    self.assertEqual('new line', hunk.lines[1].content)
Example #19
0
 def test_switch_contents_still_there_ignored(self):
     self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
     utils_lib.write_file(IGNORED_FP, contents='contents')
     self.repo.switch_current_branch(self.repo.lookup_branch('master'))
     self.assertEqual(IGNORED_FP, utils_lib.read_file(IGNORED_FP))
     self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
     self.assertEqual('contents', utils_lib.read_file(IGNORED_FP))
Example #20
0
 def test_switch_contents_still_there_untracked(self):
     self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
     utils_lib.write_file(UNTRACKED_FP, contents='contents')
     self.repo.switch_current_branch(self.repo.lookup_branch('master'))
     self.assertEqual(UNTRACKED_FP_CONTENTS,
                      utils_lib.read_file(UNTRACKED_FP))
     self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
     self.assertEqual('contents', utils_lib.read_file(UNTRACKED_FP))
Example #21
0
 def test_switch_contents_still_there_tracked_commit(self):
     utils_lib.write_file(TRACKED_FP, contents='commit')
     git.commit(TRACKED_FP, m='comment')
     self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
     self.assertEqual(TRACKED_FP_CONTENTS_2,
                      utils_lib.read_file(TRACKED_FP))
     self.repo.switch_current_branch(self.repo.lookup_branch('master'))
     self.assertEqual('commit', utils_lib.read_file(TRACKED_FP))
Example #22
0
  def setUp(self):
    super(TestRemoteSync, self).setUp()

    utils_lib.write_file('foo', contents='foo')
    git.add('foo')
    git.commit('foo', m='msg')

    self.repo.remotes.create('remote', self.remote_path)
    self.remote = self.repo.remotes['remote']
Example #23
0
 def test_basic_diff(self):
   utils.write_file(self.TRACKED_FP, contents='contents')
   out1 = utils.stdout(gl.diff(_tty_out=False))
   if '+contents' not in out1:
     self.fail()
   out2 = utils.stdout(gl.diff(o=self.TRACKED_FP, _tty_out=False))
   if '+contents' not in out2:
     self.fail()
   self.assertEqual(out1, out2)
Example #24
0
 def test_switch_with_hidden_files(self):
   hf = '.file'
   utils_lib.write_file(hf)
   self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
   utils_lib.write_file(hf, contents='contents')
   self.repo.switch_current_branch(self.repo.lookup_branch('master'))
   self.assertEqual(hf, utils_lib.read_file(hf))
   self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
   self.assertEqual('contents', utils_lib.read_file(hf))
Example #25
0
 def test_switch_with_hidden_files(self):
     hf = '.file'
     utils_lib.write_file(hf)
     self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
     utils_lib.write_file(hf, contents='contents')
     self.repo.switch_current_branch(self.repo.lookup_branch('master'))
     self.assertEqual(hf, utils_lib.read_file(hf))
     self.repo.switch_current_branch(self.repo.lookup_branch(BRANCH))
     self.assertEqual('contents', utils_lib.read_file(hf))
Example #26
0
    def setUp(self):
        super(TestRemoteSync, self).setUp()

        utils_lib.write_file('foo', contents='foo')
        git.add('foo')
        git.commit('foo', m='msg')

        self.repo.remotes.create('remote', self.remote_path)
        self.remote = self.repo.remotes['remote']
Example #27
0
 def test_uncommitted_tracked_changes_that_conflict(self):
   gl.branch(c='tmp', divergent_point='HEAD~1')
   gl.switch('tmp')
   utils.write_file(self.MASTER_FILE, contents='uncommitted')
   self.assertRaisesRegexp(
       ErrorReturnCode, 'failed to apply', gl.merge, 'master')
   contents = utils.read_file(self.MASTER_FILE)
   self.assertTrue('uncommitted' in contents)
   self.assertTrue('contents 2' in contents)
Example #28
0
 def test_basic_diff(self):
     utils.write_file(self.TRACKED_FP, contents='contents')
     out1 = utils.stdout(gl.diff())
     if '+contents' not in out1:
         self.fail()
     out2 = utils.stdout(gl.diff(self.TRACKED_FP))
     if '+contents' not in out2:
         self.fail()
     self.assertEqual(out1, out2)
Example #29
0
 def test_uncommitted_tracked_changes_that_conflict(self):
     gl.branch(c='tmp', divergent_point='HEAD~1')
     gl.switch('tmp')
     utils.write_file(self.MASTER_FILE, contents='uncommitted')
     self.assertRaisesRegexp(ErrorReturnCode, 'failed to apply', gl.merge,
                             'master')
     contents = utils.read_file(self.MASTER_FILE)
     self.assertTrue('uncommitted' in contents)
     self.assertTrue('contents 2' in contents)
Example #30
0
  def test_status_untrack_tracked_modify(self):
    self.curr_b.untrack_file(TRACKED_FP)
    st = self.curr_b.status_file(TRACKED_FP)
    self.assertEqual(core.GL_STATUS_UNTRACKED, st.type)
    # self.assertFalse(st.modified)

    utils_lib.write_file(TRACKED_FP, contents='contents')
    st = self.curr_b.status_file(TRACKED_FP)
    self.assertEqual(core.GL_STATUS_UNTRACKED, st.type)
    self.assertTrue(st.modified)
Example #31
0
 def test_diff_non_ascii(self):
   contents = '’◕‿◕’©Ä☺’ಠ_ಠ’'
   utils.write_file(self.TRACKED_FP, contents=contents)
   out1 = utils.stdout(gl.diff(_tty_out=False))
   if '+' + contents not in out1:
     self.fail('out is ' + out1)
   out2 = utils.stdout(gl.diff(o=self.TRACKED_FP, _tty_out=False))
   if '+' + contents not in out2:
     self.fail('out is ' + out2)
   self.assertEqual(out1, out2)
Example #32
0
    def test_status_untrack_tracked_modify(self):
        self.curr_b.untrack_file(TRACKED_FP)
        st = self.curr_b.status_file(TRACKED_FP)
        self.assertEqual(core.GL_STATUS_UNTRACKED, st.type)
        # self.assertFalse(st.modified)

        utils_lib.write_file(TRACKED_FP, contents='contents')
        st = self.curr_b.status_file(TRACKED_FP)
        self.assertEqual(core.GL_STATUS_UNTRACKED, st.type)
        self.assertTrue(st.modified)
Example #33
0
 def test_diff_non_ascii(self):
   contents = '’◕‿◕’©Ä☺’ಠ_ಠ’'
   utils.write_file(self.TRACKED_FP, contents=contents)
   out1 = utils.stdout(gl.diff(_tty_out=False))
   if '+' + contents not in out1:
     self.fail('out is ' + out1)
   out2 = utils.stdout(gl.diff(o=self.TRACKED_FP, _tty_out=False))
   if '+' + contents not in out2:
     self.fail('out is ' + out2)
   self.assertEqual(out1, out2)
Example #34
0
 def test_basic_diff_relative(self):
     utils.write_file(self.TRACKED_FP, contents='contents_tracked')
     utils.write_file(self.DIR_TRACKED_FP, contents='contents_dir_tracked')
     os.chdir(self.DIR)
     out1 = utils.stdout(gl.diff())
     if '+contents_tracked' not in out1:
         self.fail()
     if '+contents_dir_tracked' not in out1:
         self.fail()
     rel_dir_tracked_fp = os.path.relpath(self.DIR_TRACKED_FP, self.DIR)
     out2 = utils.stdout(gl.diff(rel_dir_tracked_fp))
     if '+contents_dir_tracked' not in out2:
         self.fail()
Example #35
0
 def test_diff_non_ascii(self):
     if sys.platform == 'win32':
         # Skip this test on Windows until we fix Unicode support
         return
     contents = '’◕‿◕’©Ä☺’ಠ_ಠ’'
     utils.write_file(self.TRACKED_FP, contents=contents)
     out1 = utils.stdout(gl.diff())
     if '+' + contents not in out1:
         self.fail('out is ' + out1)
     out2 = utils.stdout(gl.diff(self.TRACKED_FP))
     if '+' + contents not in out2:
         self.fail('out is ' + out2)
     self.assertEqual(out1, out2)
Example #36
0
 def test_basic_diff_relative(self):
   utils.write_file(self.TRACKED_FP, contents='contents_tracked')
   utils.write_file(self.DIR_TRACKED_FP, contents='contents_dir_tracked')
   os.chdir(self.DIR)
   out1 = utils.stdout(gl.diff(_tty_out=False))
   if '+contents_tracked' not in out1:
     self.fail()
   if '+contents_dir_tracked' not in out1:
     self.fail()
   rel_dir_tracked_fp = os.path.relpath(self.DIR_TRACKED_FP, self.DIR)
   out2 = utils.stdout(gl.diff(o=rel_dir_tracked_fp, _tty_out=False))
   if '+contents_dir_tracked' not in out2:
     self.fail()
Example #37
0
 def test_diff_non_ascii(self):
   if sys.platform == 'win32':
     # Skip this test on Windows until we fix Unicode support
     return
   contents = '’◕‿◕’©Ä☺’ಠ_ಠ’'
   utils.write_file(self.TRACKED_FP, contents=contents)
   out1 = utils.stdout(gl.diff())
   if '+' + contents not in out1:
     self.fail('out is ' + out1)
   out2 = utils.stdout(gl.diff(self.TRACKED_FP))
   if '+' + contents not in out2:
     self.fail('out is ' + out2)
   self.assertEqual(out1, out2)
Example #38
0
    def test_status_rm(self):
        os.remove(TRACKED_FP)
        st = self.curr_b.status_file(TRACKED_FP)
        self.assertEqual(core.GL_STATUS_TRACKED, st.type)
        self.assertTrue(st.modified)
        self.assertTrue(st.exists_at_head)
        self.assertFalse(st.exists_in_wd)

        utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_2)
        st = self.curr_b.status_file(TRACKED_FP)
        self.assertEqual(core.GL_STATUS_TRACKED, st.type)
        self.assertFalse(st.modified)
        self.assertTrue(st.exists_at_head)
        self.assertTrue(st.exists_in_wd)
Example #39
0
  def test_status_rm(self):
    os.remove(TRACKED_FP)
    st = self.curr_b.status_file(TRACKED_FP)
    self.assertEqual(core.GL_STATUS_TRACKED, st.type)
    self.assertTrue(st.modified)
    self.assertTrue(st.exists_at_head)
    self.assertFalse(st.exists_in_wd)

    utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_2)
    st = self.curr_b.status_file(TRACKED_FP)
    self.assertEqual(core.GL_STATUS_TRACKED, st.type)
    self.assertFalse(st.modified)
    self.assertTrue(st.exists_at_head)
    self.assertTrue(st.exists_in_wd)
Example #40
0
  def setUp(self):
    super(TestBranch, self).setUp()

    # Build up an interesting mock repo.
    utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_1)
    git.add(TRACKED_FP)
    git.commit(TRACKED_FP, m='1')
    utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_2)
    git.commit(TRACKED_FP, m='2')
    utils_lib.write_file(UNTRACKED_FP, contents=UNTRACKED_FP_CONTENTS)
    utils_lib.write_file('.gitignore', contents='{0}'.format(IGNORED_FP))
    utils_lib.write_file(IGNORED_FP)
    git.branch(BRANCH)

    self.curr_b = self.repo.current_branch
Example #41
0
    def setUp(self):
        super(TestBranch, self).setUp()

        # Build up an interesting mock repo.
        utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_1)
        git.add(TRACKED_FP)
        git.commit(TRACKED_FP, m='1')
        utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_2)
        git.commit(TRACKED_FP, m='2')
        utils_lib.write_file(UNTRACKED_FP, contents=UNTRACKED_FP_CONTENTS)
        utils_lib.write_file('.gitignore', contents='{0}'.format(IGNORED_FP))
        utils_lib.write_file(IGNORED_FP)
        git.branch(BRANCH)

        self.curr_b = self.repo.current_branch
Example #42
0
    def test_diff_basic(self):
        utils_lib.write_file(TRACKED_FP, contents='new contents')
        patch = self.curr_b.diff_file(TRACKED_FP)

        self.assertEqual(1, patch.line_stats[1])
        self.assertEqual(1, patch.line_stats[2])

        self.assertEqual(1, len(patch.hunks))
        hunk = list(patch.hunks)[0]

        self.assertEqual(3, len(hunk.lines))
        self.assertEqual('-', hunk.lines[0].origin)
        self.assertEqual(TRACKED_FP_CONTENTS_2, hunk.lines[0].content)

        self.assertEqual('+', hunk.lines[1].origin)
        self.assertEqual('new contents', hunk.lines[1].content)
Example #43
0
  def test_diff_basic(self):
    utils_lib.write_file(TRACKED_FP, contents='new contents')
    patch = self.curr_b.diff_file(TRACKED_FP)

    self.assertEqual(1, patch.line_stats[1])
    self.assertEqual(1, patch.line_stats[2])

    self.assertEqual(1, len(patch.hunks))
    hunk = list(patch.hunks)[0]

    self.assertEqual(3, len(hunk.lines))
    self.assertEqual('-', hunk.lines[0].origin)
    self.assertEqual(TRACKED_FP_CONTENTS_2, hunk.lines[0].content)

    self.assertEqual('+', hunk.lines[1].origin)
    self.assertEqual('new contents', hunk.lines[1].content)
Example #44
0
  def test_diff_nontracked(self):
    fps = [
        UNTRACKED_FP, UNTRACKED_FP_WITH_SPACE,
        IGNORED_FP, IGNORED_FP_WITH_SPACE]
    for fp in fps:
      utils_lib.write_file(fp, contents='new contents')
      patch = self.curr_b.diff_file(fp)

      self.assertEqual(1, patch.line_stats[1])
      self.assertEqual(0, patch.line_stats[2])

      self.assertEqual(1, len(patch.hunks))
      hunk = list(patch.hunks)[0]

      self.assertEqual(2, len(hunk.lines))
      self.assertEqual('+', hunk.lines[0].origin)
      self.assertEqual('new contents', hunk.lines[0].content)
Example #45
0
    def test_status_relative(self):
        utils.write_file(self.TRACKED_DIR_FP, contents='some modifications')
        st = utils.stdout(gl.status())
        if self.TRACKED_DIR_FP not in st:
            self.fail()
        if self.UNTRACKED_DIR_FP not in st:
            self.fail()

        os.chdir(self.DIR)

        st = utils.stdout(gl.status())
        rel_tracked = os.path.relpath(self.TRACKED_DIR_FP, self.DIR)
        rel_untracked = os.path.relpath(self.UNTRACKED_DIR_FP, self.DIR)
        if (self.TRACKED_DIR_FP in st) or (rel_tracked not in st):
            self.fail()
        if (self.UNTRACKED_DIR_FP in st) or (rel_untracked not in st):
            self.fail()
Example #46
0
  def test_status_relative(self):
    utils.write_file(self.TRACKED_DIR_FP, contents='some modifications')
    st = utils.stdout(gl.status(_tty_out=False))
    if self.TRACKED_DIR_FP not in st:
      self.fail()
    if self.UNTRACKED_DIR_FP not in st:
      self.fail()

    os.chdir(self.DIR)

    st = utils.stdout(gl.status(_tty_out=False))
    rel_tracked = os.path.relpath(self.TRACKED_DIR_FP, self.DIR)
    rel_untracked = os.path.relpath(self.UNTRACKED_DIR_FP, self.DIR)
    if (self.TRACKED_DIR_FP in st) or (rel_tracked not in st):
      self.fail()
    if (self.UNTRACKED_DIR_FP in st) or (rel_untracked not in st):
      self.fail()
Example #47
0
    def test_diff_nontracked(self):
        fps = [
            UNTRACKED_FP, UNTRACKED_FP_WITH_SPACE, IGNORED_FP,
            IGNORED_FP_WITH_SPACE
        ]
        for fp in fps:
            utils_lib.write_file(fp, contents='new contents')
            patch = self.curr_b.diff_file(fp)

            self.assertEqual(1, patch.line_stats[1])
            self.assertEqual(0, patch.line_stats[2])

            self.assertEqual(1, len(patch.hunks))
            hunk = list(patch.hunks)[0]

            self.assertEqual(2, len(hunk.lines))
            self.assertEqual('+', hunk.lines[0].origin)
            self.assertEqual('new contents', hunk.lines[0].content)
Example #48
0
  def test_conflicts_multiple_uncommitted_changes(self):
    gl.branch(c='tmp', divergent_point='HEAD~2')
    gl.switch('tmp')
    utils.append_to_file(self.MASTER_FILE, contents='conflict')
    gl.commit(m='will conflict 0')
    utils.append_to_file(self.MASTER_FILE, contents='conflict')
    gl.commit(m='will conflict 1')
    utils.write_file(self.MASTER_FILE, contents='uncommitted')

    self.assertRaisesRegexp(ErrorReturnCode, 'conflicts', gl.fuse, 'master')
    gl.resolve(self.MASTER_FILE)
    self.assertRaisesRegexp(
        ErrorReturnCode, 'conflicts', gl.commit, m='ci 0 in tmp')
    gl.resolve(self.MASTER_FILE)
    self.assertRaisesRegexp(
        ErrorReturnCode, 'failed to apply', gl.commit, m='ci 1 in tmp')

    self.__assert_history(
        self.__build('master') + self.__build('tmp', range(2)))
    self.assertTrue('Stashed' in utils.read_file(self.MASTER_FILE))
Example #49
0
  def setUp(self):
    super(TestFileResolve, self).setUp()

    # Generate a conflict
    git.checkout(b='branch')
    utils_lib.write_file(FP_IN_CONFLICT, contents='branch')
    utils_lib.write_file(DIR_FP_IN_CONFLICT, contents='branch')
    git.add(FP_IN_CONFLICT, DIR_FP_IN_CONFLICT)
    git.commit(FP_IN_CONFLICT, DIR_FP_IN_CONFLICT, m='branch')
    git.checkout('master')
    utils_lib.write_file(FP_IN_CONFLICT, contents='master')
    utils_lib.write_file(DIR_FP_IN_CONFLICT, contents='master')
    git.add(FP_IN_CONFLICT, DIR_FP_IN_CONFLICT)
    git.commit(FP_IN_CONFLICT, DIR_FP_IN_CONFLICT, m='master')
    git.merge('branch', _ok_code=[1])
Example #50
0
    def setUp(self):
        super(TestFileResolve, self).setUp()

        # Generate a conflict
        git.checkout(b='branch')
        utils_lib.write_file(FP_IN_CONFLICT, contents='branch')
        utils_lib.write_file(DIR_FP_IN_CONFLICT, contents='branch')
        git.add(FP_IN_CONFLICT, DIR_FP_IN_CONFLICT)
        git.commit(FP_IN_CONFLICT, DIR_FP_IN_CONFLICT, m='branch')
        git.checkout('master')
        utils_lib.write_file(FP_IN_CONFLICT, contents='master')
        utils_lib.write_file(DIR_FP_IN_CONFLICT, contents='master')
        git.add(FP_IN_CONFLICT, DIR_FP_IN_CONFLICT)
        git.commit(FP_IN_CONFLICT, DIR_FP_IN_CONFLICT, m='master')
        git.merge('branch', _ok_code=[1])
Example #51
0
    def setUp(self):
        super(TestFileResolve, self).setUp()

        # Generate a conflict
        bname = 'branch'
        utils_lib.git('checkout', '-b', bname)
        utils_lib.write_file(FP_IN_CONFLICT, contents=bname)
        utils_lib.write_file(DIR_FP_IN_CONFLICT, contents=bname)
        utils_lib.git('add', FP_IN_CONFLICT, DIR_FP_IN_CONFLICT)
        utils_lib.git('commit', FP_IN_CONFLICT, DIR_FP_IN_CONFLICT, '-m',
                      bname)
        utils_lib.git('checkout', 'master')
        utils_lib.write_file(FP_IN_CONFLICT, contents='master')
        utils_lib.write_file(DIR_FP_IN_CONFLICT, contents='master')
        utils_lib.git('add', FP_IN_CONFLICT, DIR_FP_IN_CONFLICT)
        utils_lib.git('commit', FP_IN_CONFLICT, DIR_FP_IN_CONFLICT, '-m',
                      'master')
        try:
            utils_lib.git('merge', bname)
            raise Exception('The merge should have failed')
        except CalledProcessError as e:
            # we expect the merge to fail
            pass
Example #52
0
 def test_status_ignore(self):
     contents = utils_lib.read_file('.gitignore') + '\n' + TRACKED_FP
     utils_lib.write_file('.gitignore', contents=contents)
     # Tracked files can't be ignored
     st = self.curr_b.status_file(TRACKED_FP)
     self.assertEqual(core.GL_STATUS_TRACKED, st.type)
Example #53
0
 def test_uncommitted_changes(self):
     utils.write_file(self.MASTER_FILE, contents='uncommitted')
     utils.write_file('master_untracked', contents='uncommitted')
     gl.merge(self.OTHER)
     self.assertEqual('uncommitted', utils.read_file(self.MASTER_FILE))
     self.assertEqual('uncommitted', utils.read_file('master_untracked'))
Example #54
0
 def setUp(self):
     super(TestPerformance, self).setUp()
     for i in range(0, self.FPS_QTY):
         fp = 'f' + text(i)
         utils.write_file(fp, fp)
Example #55
0
    def setUp(self):
        super(TestFile, self).setUp()

        # Build up an interesting mock repo
        utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_1)
        utils_lib.write_file(TRACKED_FP_WITH_SPACE,
                             contents=TRACKED_FP_CONTENTS_1)
        utils_lib.write_file(TRACKED_DIR_FP, contents=TRACKED_FP_CONTENTS_1)
        utils_lib.write_file(TRACKED_DIR_FP_WITH_SPACE,
                             contents=TRACKED_FP_CONTENTS_1)
        utils_lib.write_file(TRACKED_DIR_DIR_FP,
                             contents=TRACKED_FP_CONTENTS_1)
        utils_lib.write_file(TRACKED_DIR_DIR_FP_WITH_SPACE,
                             contents=TRACKED_FP_CONTENTS_1)
        git.add(TRACKED_FP, TRACKED_FP_WITH_SPACE, TRACKED_DIR_FP,
                TRACKED_DIR_FP_WITH_SPACE, TRACKED_DIR_DIR_FP,
                TRACKED_DIR_DIR_FP_WITH_SPACE)
        git.commit(TRACKED_FP,
                   TRACKED_FP_WITH_SPACE,
                   TRACKED_DIR_FP,
                   TRACKED_DIR_FP_WITH_SPACE,
                   TRACKED_DIR_DIR_FP,
                   TRACKED_DIR_DIR_FP_WITH_SPACE,
                   m='1')
        utils_lib.write_file(TRACKED_FP, contents=TRACKED_FP_CONTENTS_2)
        utils_lib.write_file(TRACKED_FP_WITH_SPACE,
                             contents=TRACKED_FP_CONTENTS_2)
        utils_lib.write_file(TRACKED_DIR_FP, contents=TRACKED_FP_CONTENTS_2)
        utils_lib.write_file(TRACKED_DIR_FP_WITH_SPACE,
                             contents=TRACKED_FP_CONTENTS_2)
        utils_lib.write_file(TRACKED_DIR_DIR_FP,
                             contents=TRACKED_FP_CONTENTS_2)
        utils_lib.write_file(TRACKED_DIR_DIR_FP_WITH_SPACE,
                             contents=TRACKED_FP_CONTENTS_2)
        git.commit(TRACKED_FP,
                   TRACKED_FP_WITH_SPACE,
                   TRACKED_DIR_FP,
                   TRACKED_DIR_FP_WITH_SPACE,
                   TRACKED_DIR_DIR_FP,
                   TRACKED_DIR_DIR_FP_WITH_SPACE,
                   m='2')
        utils_lib.write_file(UNTRACKED_FP)
        utils_lib.write_file(UNTRACKED_FP_WITH_SPACE)
        utils_lib.write_file(UNTRACKED_DIR_FP)
        utils_lib.write_file(UNTRACKED_DIR_FP_WITH_SPACE)
        utils_lib.write_file(UNTRACKED_DIR_DIR_FP)
        utils_lib.write_file(UNTRACKED_DIR_DIR_FP_WITH_SPACE)
        utils_lib.write_file('.gitignore',
                             contents='{0}\n{1}'.format(
                                 IGNORED_FP, IGNORED_FP_WITH_SPACE))
        utils_lib.write_file(IGNORED_FP)
        utils_lib.write_file(IGNORED_FP_WITH_SPACE)

        self.curr_b = self.repo.current_branch
Example #56
0
 def setUp(self):
   super(TestPerformance, self).setUp()
   for i in range(0, self.FPS_QTY):
     fp = 'f' + text(i)
     utils.write_file(fp, fp)
Example #57
0
 def test_diff_dir(self):
   fp = 'dir/dir/f'
   utils.write_file(fp, contents='contents')
   out = utils.stdout(gl.diff(o=fp, _tty_out=False))
   if '+contents' not in out:
     self.fail()
Example #58
0
  def test_basic_functionality(self):
    utils.write_file('file1', 'Contents of file1')
    # Track
    gl.track('file1')
    self.assertRaises(ErrorReturnCode, gl.track, 'file1')
    self.assertRaises(ErrorReturnCode, gl.track, 'non-existent')
    # Untrack
    gl.untrack('file1')
    self.assertRaises(ErrorReturnCode, gl.untrack, 'file1')
    self.assertRaises(ErrorReturnCode, gl.untrack, 'non-existent')
    # Commit
    gl.track('file1')
    gl.commit(m='file1 commit')
    self.assertRaises(ErrorReturnCode, gl.commit, m='nothing to commit')
    # History
    if 'file1 commit' not in utils.stdout(gl.history(_tty_out=False)):
      self.fail('Commit didn\'t appear in history')
    # Branch
    # Make some changes to file1 and branch out
    utils.write_file('file1', 'New contents of file1')
    gl.branch(c='branch1')
    gl.switch('branch1')
    if 'New' in utils.read_file('file1'):
      self.fail('Branch not independent!')
    # Switch back to master branch, check that contents are the same as before.
    gl.switch('master')
    if 'New' not in utils.read_file('file1'):
      self.fail('Branch not independent!')
    out = utils.stdout(gl.branch(_tty_out=False))
    if '* master' not in out:
      self.fail('Branch status output wrong: {0}'.format(out))
    if 'branch1' not in out:
      self.fail('Branch status output wrong: {0}'.format(out))

    gl.branch(c='branch2')
    gl.branch(c='branch-conflict1')
    gl.branch(c='branch-conflict2')
    gl.commit(m='New contents commit')

    # Fuse
    gl.switch('branch1')
    self.assertRaises(ErrorReturnCode, gl.fuse)  # no upstream set
    try:
      gl.fuse('master')
    except ErrorReturnCode as e:
      self.fail(utils.stderr(e))
    out = utils.stdout(gl.history(_tty_out=False))
    if 'file1 commit' not in out:
      self.fail(out)

    # Merge
    gl.switch('branch2')
    self.assertRaises(ErrorReturnCode, gl.merge)  # no upstream set
    gl.merge('master')
    out = utils.stdout(gl.history(_tty_out=False))
    if 'file1 commit' not in out:
      self.fail(out)

    # Conflicting fuse
    gl.switch('branch-conflict1')
    utils.write_file('file1', 'Conflicting changes to file1')
    gl.commit(m='changes in branch-conflict1')
    err = utils.stderr(gl.fuse('master', _tty_out=False, _ok_code=[1]))
    if 'conflict' not in err:
      self.fail(err)
    out = utils.stdout(gl.status(_tty_out=False))
    if 'file1 (with conflicts)' not in out:
      self.fail(out)

    # Try aborting
    gl.fuse('--abort')
    out = utils.stdout(gl.status(_tty_out=False))
    if 'file1' in out:
      self.fail(out)

    # Ok, now let's fix the conflicts
    err = utils.stderr(gl.fuse('master', _tty_out=False, _ok_code=[1]))
    if 'conflict' not in err:
      self.fail(err)
    out = utils.stdout(gl.status(_tty_out=False))
    if 'file1 (with conflicts)' not in out:
      self.fail(out)

    utils.write_file('file1', 'Fixed conflicts!')
    self.assertRaises(ErrorReturnCode, gl.commit, m='resolve not called')
    self.assertRaises(ErrorReturnCode, gl.resolve, 'non-existent')
    gl.resolve('file1')
    gl.commit(m='fixed conflicts')
Example #59
0
 def test_uncommitted_changes(self):
   utils.write_file(self.MASTER_FILE, contents='uncommitted')
   utils.write_file('master_untracked', contents='uncommitted')
   gl.merge(self.OTHER)
   self.assertEqual('uncommitted', utils.read_file(self.MASTER_FILE))
   self.assertEqual('uncommitted', utils.read_file('master_untracked'))
Example #60
0
 def setUp(self):
   super(TestDiffFile, self).setUp()
   utils.write_file(self.TRACKED_FP)
   utils.write_file(self.DIR_TRACKED_FP)
   gl.commit('-o', self.TRACKED_FP, self.DIR_TRACKED_FP, m='commit')
   utils.write_file(self.UNTRACKED_FP)