def test_finish_feature_push(self): remote = GitFlow(self.remote).init() gitflow = GitFlow(self.repo).init() rmc0 = remote.master().commit rdc0 = remote.develop().commit mc0 = gitflow.master().commit dc0 = gitflow.develop().commit mgr = FeatureBranchManager(gitflow) mgr.create('even') mgr.finish('even', push=True) rmc1 = remote.master().commit rdc1 = remote.develop().commit mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # Feature finishes don't advance remote master, but remote develop self.assertEqual(rmc0, rmc1) self.assertNotEqual(rdc0, rdc1) self.assertEqual(mc0, mc1) self.assertNotEqual(dc0, dc1) # local and remote heads must be the same again self.assertEqual(rmc1, mc1) self.assertEqual(rdc1, dc1) # Finishing removes the local and the remote feature branch self.assertNotIn('feat/even', [b.name for b in self.repo.branches]) self.assertNotIn('feat/even', [b.name for b in self.remote.branches]) # Merge commit message self.assertEquals('Finished feature even.\n', rdc1.message)
def test_finish_hotfix(self): gitflow = GitFlow(self.repo) mgr = HotfixBranchManager(gitflow) mgr.create('1.2.3') fake_commit(self.repo, 'Bogus commit') fake_commit(self.repo, 'Foo commit') fake_commit(self.repo, 'Fake commit') fake_commit(self.repo, 'Dummy commit') mc0 = gitflow.master().commit dc0 = gitflow.develop().commit mgr.finish('1.2.3') mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # Hotfix finishes advance both master and develop self.assertNotEqual(mc0, mc1) self.assertNotEqual(dc0, dc1) # Finishing removes the hotfix branch self.assertNotIn('hf/1.2.3', [b.name for b in self.repo.branches]) # Merge commit message self.assertEquals('Finished hotfix 1.2.3.\n', dc1.message)
def test_gitflow_init_cloned_creates_branches_from_counterpart(self): remote = GitFlow(self.remote) rmc0 = remote.master().commit rdc0 = remote.develop().commit gitflow = GitFlow(self.repo).init() mc0 = gitflow.master().commit dc0 = gitflow.develop().commit # local and remote heads must be the same self.assertEqual(rmc0, mc0) self.assertEqual(rdc0, dc0) self.assertTrue(gitflow.master().tracking_branch()) self.assertTrue(gitflow.develop().tracking_branch()) self.assertEqual(gitflow.master().tracking_branch().name, 'my-remote/stable') self.assertEqual(gitflow.develop().tracking_branch().name, 'my-remote/devel')
def test_gitflow_init_cloned_creates_branches_from_counterpart(self): remote = GitFlow(self.remote) rmc0 = remote.master().commit rdc0 = remote.develop().commit gitflow = GitFlow(self.repo).init() mc0 = gitflow.master().commit dc0 = gitflow.develop().commit # local and remote heads must be the same self.assertEqual(rmc0, mc0) self.assertEqual(rdc0, dc0) self.assertTrue(gitflow.master().tracking_branch()) self.assertTrue(gitflow.develop().tracking_branch()) self.assertEqual(gitflow.master().tracking_branch().name, 'my-remote/stable') self.assertEqual(gitflow.develop().tracking_branch().name, 'my-remote/devel')
def test_finish_feature(self): gitflow = GitFlow(self.repo) mgr = FeatureBranchManager(gitflow) mc0 = gitflow.master().commit dc0 = gitflow.develop().commit mgr.finish('even') mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # Feature finishes don't advance master, but develop self.assertEqual(mc0, mc1) self.assertNotEqual(dc0, dc1) # Finishing removes the feature branch self.assertNotIn('feat/even', [b.name for b in self.repo.branches]) # Merge commit message self.assertEquals('Finished feature even.\n', dc1.message)
def test_finish_feature(self): gitflow = GitFlow(self.repo) mgr = FeatureBranchManager(gitflow) mc0 = gitflow.master().commit dc0 = gitflow.develop().commit mgr.finish('even') mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # Feature finishes don't advance master, but develop self.assertEqual(mc0, mc1) self.assertNotEqual(dc0, dc1) # Finishing removes the feature branch self.assertNotIn('feat/even', [b.name for b in self.repo.branches]) # Merge commit message self.assertEquals('Finished feature even.\n', dc1.message)
def test_finish_release(self): gitflow = GitFlow(self.repo) mgr = ReleaseBranchManager(gitflow) mc0 = gitflow.master().commit dc0 = gitflow.develop().commit mgr.finish('1.0') mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # Release finishes advance both master and develop self.assertNotEqual(mc0, mc1) self.assertNotEqual(dc0, dc1) # master is merged back to develop self.assertIn(mc1, dc1.parents) # Finishing removes the release branch self.assertNotIn('rel/1.0', [b.name for b in self.repo.branches]) # Merge commit message self.assertEquals('Finished release 1.0.\n', dc1.message) self.assertEquals('Finished release 1.0.\n', mc1.message)
def test_finish_release_push(self): remote = GitFlow(self.remote).init() # Since remote is no bare repo, checkout some branch untouched # by this operation. :fixme: find better solution self.remote.heads['feat/even'].checkout() gitflow = GitFlow(self.repo).init() rmc0 = remote.master().commit rdc0 = remote.develop().commit mc0 = gitflow.master().commit dc0 = gitflow.develop().commit mgr = ReleaseBranchManager(gitflow) mgr.create('1.0') mgr.finish('1.0', push=True) rmc1 = remote.master().commit rdc1 = remote.develop().commit mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # Release finishes advances master and develop both local and remote self.assertNotEqual(rmc0, rmc1) self.assertNotEqual(rdc0, rdc1) self.assertNotEqual(mc0, mc1) self.assertNotEqual(dc0, dc1) # local and remote heads must be the same again self.assertEqual(rmc1, mc1) self.assertEqual(rdc1, dc1) # Finishing removes the local and the remote release branch self.assertNotIn('rel/1.0', [b.name for b in self.repo.branches]) self.assertNotIn('rel/1.0', [b.name for b in self.remote.branches]) # Merge commit message self.assertEquals('Finished release 1.0.\n', rdc1.message)
def test_finish_release(self): gitflow = GitFlow(self.repo) mgr = ReleaseBranchManager(gitflow) mc0 = gitflow.master().commit dc0 = gitflow.develop().commit mgr.finish('1.0') mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # Release finishes advance both master and develop self.assertNotEqual(mc0, mc1) self.assertNotEqual(dc0, dc1) # master is merged back to develop self.assertIn(mc1, dc1.parents) # Finishing removes the release branch self.assertNotIn('rel/1.0', [b.name for b in self.repo.branches]) # Merge commit message self.assertEquals('Finished release 1.0.\n', dc1.message) self.assertEquals('Finished release 1.0.\n', mc1.message)
def test_finish_release_tag(self): gitflow = GitFlow(self.repo) mgr = ReleaseBranchManager(gitflow) taginfo = dict(message='Tagging version 1.0') mgr.finish('1.0', tagging_info=taginfo) mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # master is merged back to develop self.assertIn(mc1, dc1.parents) # tag exists self.assertIn('v1.0', self.repo.tags) self.assertEqual(self.repo.tags['v1.0'].commit, mc1) # tag message self.assertEqual(self.repo.tags['v1.0'].tag.message, 'Tagging version 1.0')
def test_finish_feature_push(self): remote = GitFlow(self.remote).init() gitflow = GitFlow(self.repo).init() rmc0 = remote.master().commit rdc0 = remote.develop().commit mc0 = gitflow.master().commit dc0 = gitflow.develop().commit mgr = FeatureBranchManager(gitflow) mgr.create('even') mgr.finish('even', push=True) rmc1 = remote.master().commit rdc1 = remote.develop().commit mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # Feature finishes don't advance remote master, but remote develop self.assertEqual(rmc0, rmc1) self.assertNotEqual(rdc0, rdc1) self.assertEqual(mc0, mc1) self.assertNotEqual(dc0, dc1) # local and remote heads must be the same again self.assertEqual(rmc1, mc1) self.assertEqual(rdc1, dc1) # Finishing removes the local and the remote feature branch self.assertNotIn('feat/even', [b.name for b in self.repo.branches]) self.assertNotIn('feat/even', [b.name for b in self.remote.branches]) # Merge commit message self.assertEquals('Finished feature even.\n', rdc1.message)
def test_finish_release_tag_push(self): # Since remote is no bare repo, checkout some branch untouched # by this operation. :fixme: find better solution self.remote.heads['feat/even'].checkout() gitflow = GitFlow(self.repo).init() mgr = ReleaseBranchManager(gitflow) mgr.create('1.0') taginfo = dict(message='Tagging version 1.0') mgr.finish('1.0', push=True, tagging_info=taginfo) mc1 = gitflow.master().commit # remote tag exists self.assertIn('v1.0', self.remote.tags) self.assertEqual(self.remote.tags['v1.0'].commit, mc1) # tag message self.assertEqual(self.remote.tags['v1.0'].tag.message, 'Tagging version 1.0')
def test_finish_release_tag(self): gitflow = GitFlow(self.repo) mgr = ReleaseBranchManager(gitflow) taginfo = dict( message = 'Tagging version 1.0' ) mgr.finish('1.0', tagging_info=taginfo) mc1 = gitflow.master().commit dc1 = gitflow.develop().commit # master is merged back to develop self.assertIn(mc1, dc1.parents) # tag exists self.assertIn('v1.0', self.repo.tags) self.assertEqual(self.repo.tags['v1.0'].commit, mc1) # tag message self.assertEqual(self.repo.tags['v1.0'].tag.message, 'Tagging version 1.0')
def test_finish_release_tag_push(self): # Since remote is no bare repo, checkout some branch untouched # by this operation. :fixme: find better solution self.remote.heads['feat/even'].checkout() gitflow = GitFlow(self.repo).init() mgr = ReleaseBranchManager(gitflow) mgr.create('1.0') taginfo = dict( message = 'Tagging version 1.0' ) mgr.finish('1.0', push=True, tagging_info=taginfo) mc1 = gitflow.master().commit # remote tag exists self.assertIn('v1.0', self.remote.tags) self.assertEqual(self.remote.tags['v1.0'].commit, mc1) # tag message self.assertEqual(self.remote.tags['v1.0'].tag.message, 'Tagging version 1.0')