Esempio n. 1
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))
Esempio n. 2
0
 def test_commit_only_relative(self):
     os.chdir(self.DIR)
     self.assertRaises(ErrorReturnCode,
                       gl.commit,
                       o=self.TRACKED_FP,
                       m='msg')
     gl.commit(o='../' + self.TRACKED_FP, m='msg')
     self.__assert_commit(self.TRACKED_FP)
Esempio n. 3
0
 def create_commits(branch_name, fp):
   self.commits[branch_name] = []
   utils.append_to_file(fp, contents='contents {0}\n'.format(0))
   out = utils.stdout(gl.commit(m='ci 0 in {0}'.format(branch_name), inc=fp))
   self.commits[branch_name].append(
       re.search(r'Commit Id: (.*)', out, re.UNICODE).group(1))
   for i in range(1, self.COMMITS_NUMBER):
     utils.append_to_file(fp, contents='contents {0}\n'.format(i))
     out = utils.stdout(gl.commit(m='ci {0} in {1}'.format(i, branch_name)))
     self.commits[branch_name].append(
         re.search(r'Commit Id: (.*)', out, re.UNICODE).group(1))
Esempio n. 4
0
  def test_conflicts(self):
    def trigger_conflicts():
      self.assertRaisesRegexp(
          ErrorReturnCode, 'conflicts', gl.fuse,
          self.OTHER, e=self.commits[self.OTHER][0])

    # Abort
    trigger_conflicts()
    gl.fuse('-a')
    self.__assert_history(self.__build('master'))

    # Fix conflicts
    trigger_conflicts()
    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'))
Esempio n. 5
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))
Esempio n. 6
0
  def test_branch_switch_performance(self):
    MAX_TOLERANCE = 100

    gl.commit(o='f1', m='commit')

    t = time.time()
    gl.branch(c='develop')
    gl.switch('develop')
    gl_t = time.time() - t

    # go back to previous state
    gl.switch('master')

    # do the same for git
    t = time.time()
    git.branch('gitdev')
    git.stash.save('--all')
    git.checkout('gitdev')
    git_t = time.time() - t

    self.assertTrue(
        gl_t < git_t*MAX_TOLERANCE,
        msg='gl_t {0}, git_t {1}'.format(gl_t, git_t))
Esempio n. 7
0
  def test_conflicts_multiple(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')

    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)
    gl.commit(m='ci 1 in tmp')  # this one should finalize the fuse

    self.__assert_history(
        self.__build('master') + self.__build('tmp', range(2)))
Esempio n. 8
0
 def setUp(self):
   super(TestStatus, self).setUp()
   utils.write_file(self.TRACKED_DIR_FP)
   utils.write_file(self.UNTRACKED_DIR_FP)
   gl.commit(o=self.TRACKED_DIR_FP, m='commit')
Esempio n. 9
0
 def test_commit(self):
   gl.commit(m='msg')
   self.__assert_commit(self.TRACKED_FP, self.DIR_TRACKED_FP)
Esempio n. 10
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')
Esempio n. 11
0
 def test_commit_only(self):
   gl.commit(o=self.TRACKED_FP, m='msg')
   self.__assert_commit(self.TRACKED_FP)
Esempio n. 12
0
 def test_commit_relative(self):
   os.chdir(self.DIR)
   gl.commit(m='msg')
   self.__assert_commit(self.TRACKED_FP, self.DIR_TRACKED_FP)
Esempio n. 13
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)
Esempio n. 14
0
 def test_commit_only_untrack(self):
   gl.commit(o=self.UNTRACKED_FP, m='msg')
   self.__assert_commit(self.UNTRACKED_FP)
Esempio n. 15
0
 def setUp(self):
   super(TestBranch, self).setUp()
   utils.write_file('f')
   gl.commit(o='f', m='commit')
Esempio n. 16
0
 def test_commit_only(self):
   gl.commit(o=self.TRACKED_FP, m='msg')
   self.__assert_commit(self.TRACKED_FP)
Esempio n. 17
0
 def test_commit_dir(self):
   fp = 'dir/f'
   utils.write_file(fp)
   gl.commit(o=fp, m='msg')
   self.__assert_commit('dir/f')
Esempio n. 18
0
 def test_commit_exclude_include(self):
   gl.commit(m='msg', include=self.UNTRACKED_FP, exclude=self.TRACKED_FP)
   self.__assert_commit(self.UNTRACKED_FP, self.DIR_TRACKED_FP)
Esempio n. 19
0
 def test_commit_only_untrack_relative(self):
   os.chdir(self.DIR)
   self.assertRaises(ErrorReturnCode, gl.commit, o=self.UNTRACKED_FP, m='msg')
   gl.commit(o='../' + self.UNTRACKED_FP, m='msg')
   self.__assert_commit(self.UNTRACKED_FP)