Exemplo n.º 1
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))
Exemplo n.º 2
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))
Exemplo n.º 3
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))
Exemplo n.º 4
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))
Exemplo n.º 5
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))
Exemplo n.º 6
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))
Exemplo n.º 7
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))
Exemplo n.º 8
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))
Exemplo n.º 9
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))
Exemplo n.º 10
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))
Exemplo n.º 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))
Exemplo n.º 12
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))
Exemplo n.º 13
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))
Exemplo n.º 14
0
 def test_create(self):
   self.repo.create_branch('branch1', self.repo.current_branch.head)
   self.repo.switch_current_branch(self.repo.lookup_branch('branch1'))
   self.assertTrue(os.path.exists(TRACKED_FP))
   self.assertEqual(TRACKED_FP_CONTENTS_2, utils_lib.read_file(TRACKED_FP))
   self.assertFalse(os.path.exists(UNTRACKED_FP))
   self.assertFalse(os.path.exists(IGNORED_FP))
   self.assertFalse(os.path.exists('.gitignore'))
Exemplo n.º 15
0
 def test_create_from_prev_commit(self):
   self.repo.create_branch('branch1', self.repo.revparse_single('HEAD^'))
   self.repo.switch_current_branch(self.repo.lookup_branch('branch1'))
   self.assertTrue(os.path.exists(TRACKED_FP))
   self.assertEqual(TRACKED_FP_CONTENTS_1, utils_lib.read_file(TRACKED_FP))
   self.assertFalse(os.path.exists(UNTRACKED_FP))
   self.assertFalse(os.path.exists(IGNORED_FP))
   self.assertFalse(os.path.exists('.gitignore'))
Exemplo n.º 16
0
 def test_create_from_prev_commit(self):
     self.repo.create_branch('branch1', self.repo.revparse_single('HEAD^'))
     self.repo.switch_current_branch(self.repo.lookup_branch('branch1'))
     self.assertTrue(os.path.exists(TRACKED_FP))
     self.assertEqual(TRACKED_FP_CONTENTS_1,
                      utils_lib.read_file(TRACKED_FP))
     self.assertFalse(os.path.exists(UNTRACKED_FP))
     self.assertFalse(os.path.exists(IGNORED_FP))
     self.assertFalse(os.path.exists('.gitignore'))
Exemplo n.º 17
0
 def test_create(self):
     self.repo.create_branch('branch1', self.repo.current_branch.head)
     self.repo.switch_current_branch(self.repo.lookup_branch('branch1'))
     self.assertTrue(os.path.exists(TRACKED_FP))
     self.assertEqual(TRACKED_FP_CONTENTS_2,
                      utils_lib.read_file(TRACKED_FP))
     self.assertFalse(os.path.exists(UNTRACKED_FP))
     self.assertFalse(os.path.exists(IGNORED_FP))
     self.assertFalse(os.path.exists('.gitignore'))
Exemplo n.º 18
0
 def test_uncommitted_tracked_changes_that_conflict_append(self):
     gl.branch(c='tmp', divergent_point='HEAD~1')
     gl.switch('tmp')
     utils.append_to_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)
Exemplo n.º 19
0
 def test_uncommitted_tracked_changes_that_conflict_append(self):
   gl.branch(c='tmp', divergent_point='HEAD~1')
   gl.switch('tmp')
   utils.append_to_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)
Exemplo n.º 20
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))
Exemplo n.º 21
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')
Exemplo n.º 22
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)
Exemplo n.º 23
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'))
Exemplo n.º 24
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()):
            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())
        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())
        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())
        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', _ok_code=[1]))
        if 'conflict' not in err:
            self.fail(err)
        out = utils.stdout(gl.status())
        if 'file1 (with conflicts)' not in out:
            self.fail(out)

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

        # Ok, now let's fix the conflicts
        err = utils.stderr(gl.fuse('master', _ok_code=[1]))
        if 'conflict' not in err:
            self.fail(err)
        out = utils.stdout(gl.status())
        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')
Exemplo n.º 25
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)
Exemplo n.º 26
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'))