def test_empty_branch_type_list_raises_usage(self): create_git_repo(self) gitflow = GitFlow().init() self.assertRaises(Usage, gitflow.list, 'feature', 'name', False, False) self.assertRaises(Usage, gitflow.list, 'release', 'version', False, False) self.assertRaises(Usage, gitflow.list, 'hotfix', 'version', False, False) self.assertRaises(Usage, gitflow.list, 'support', 'version', False, False)
def test_detect_custom_branch_types(self): create_git_repo(self) # Declare a custom branch type inline class FooBarManager(BranchManager): identifier = 'foobar' DEFAULT_PREFIX = 'xyz/' gitflow = GitFlow() self.assertIn('foobar', gitflow.managers)
def test_detect_branch_types(self): create_git_repo(self) gitflow = GitFlow() # The types that "ship" with git-flow self.assertIn('feature', gitflow.managers) self.assertIn('release', gitflow.managers) self.assertIn('hotfix', gitflow.managers) self.assertIn('support', gitflow.managers)
def test_create(self): create_git_repo(self) gitflow = GitFlow() self.assertEquals([], self.repo.branches) gitflow.init() self.assertEquals(['develop', 'master'], [b.name for b in self.repo.branches]) fb = gitflow.create('feature', 'foo')
def test_feature_list_verbose_no_commits(self): repo = create_git_repo(self) GitFlow(repo).init() repo.create_head('feature/wow', 'HEAD') stdout = run_git_flow('feature', 'list', '--verbose', capture=1) expected = [' wow (no commits yet)'] self.assertEqual(stdout.splitlines(), expected)
def test_gitflow_init_creates_initial_commit(self): repo = create_git_repo(self) all_commits_before_init = all_commits(repo) gitflow = GitFlow(repo).init() all_commits_after_init = all_commits(repo) self.assertNotEquals(all_commits_before_init, all_commits_after_init) self.assertEquals('Initial commit', repo.heads.master.commit.message)
def test_release_branch_origin(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = ReleaseBranchManager(gitflow) new_branch = mgr.create('1.1') self.assertEqual(new_branch.commit, gitflow.repo.branches['develop'].commit)
def test_create_branches(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() gitflow.create('feature', 'foo', None, fetch=False) self.assertIn('feature/foo', [h.name for h in gitflow.repo.branches]) gitflow.create('release', '1.0', None, fetch=False) self.assertIn('release/1.0', [h.name for h in gitflow.repo.branches])
def test_finish_release_rebase(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = ReleaseBranchManager(gitflow) mgr.create('1.0') self.assertRaises( Exception, mgr.finish, '1.0', rebase=True)
def test_create_release_changes_active_branch(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = ReleaseBranchManager(gitflow) self.assertEquals('develop', repo.active_branch.name) mgr.create('1.0') self.assertEquals('release/1.0', repo.active_branch.name)
def test_finish_release_rebase(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = ReleaseBranchManager(gitflow) mgr.create('1.0') self.assertRaisesRegexp( AssertionError, "does not make any sense", mgr.finish, '1.0', rebase=True)
def _test_create_branches_from_alt_base(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() gitflow.create('feature', 'foo', 'master', fetch=False) self.assertIn('feature/foo', [h.name for h in gitflow.repo.branches]) gitflow.repo.index.commit('Foo') gitflow.create('release', '1.0', 'feature/foo', fetch=False) self.assertIn('release/1.0', [h.name for h in gitflow.repo.branches])
def test_feature_list_verbose_no_commits(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() repo.create_head('feature/wow', 'HEAD') stdout = runGitFlow('feature', 'list', '--verbose', capture=1) expected = [ ' wow (no commits yet)' ] self.assertEqual(stdout.splitlines(), expected)
def test_create_new_support_branch(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = SupportBranchManager(gitflow) self.assertEqual(0, len(mgr.list())) new_branch = mgr.create('1.x') self.assertEqual(1, len(mgr.list())) self.assertEqual('support/1.x', mgr.list()[0].name) self.assertEqual(new_branch.commit, gitflow.repo.branches['master'].commit)
def test_create_new_release_branch(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = ReleaseBranchManager(gitflow) self.assertEqual(0, len(mgr.list())) new_branch = mgr.create('3.14-beta5') self.assertEqual(1, len(mgr.list())) self.assertEqual('release/3.14-beta5', mgr.list()[0].name) self.assertEqual(new_branch.commit, gitflow.repo.branches['develop'].commit)
def test_create_new_feature_branch(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = FeatureBranchManager(gitflow) self.assertEqual(0, len(mgr.list())) new_branch = mgr.create('foo') self.assertEqual(1, len(mgr.list())) self.assertEqual('feature/foo', mgr.list()[0].name) self.assertEqual(new_branch.commit, gitflow.repo.branches['develop'].commit)
def test_create_new_hotfix_branch(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = HotfixBranchManager(gitflow) self.assertEqual(0, len(mgr.list())) new_branch = mgr.create('1.2.3') self.assertEqual(1, len(mgr.list())) self.assertEqual('hotfix/1.2.3', mgr.list()[0].name) self.assertEqual(new_branch.commit, gitflow.repo.branches['master'].commit)
def test_gitflow_init_initializes_default_config(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() self.assertEquals('master', gitflow.master_name()) self.assertEquals('develop', gitflow.develop_name()) self.assertEquals('origin', gitflow.origin_name()) self.assertEquals('feature/', gitflow.get_prefix('feature')) self.assertEquals('hotfix/', gitflow.get_prefix('hotfix')) self.assertEquals('release/', gitflow.get_prefix('release')) self.assertEquals('support/', gitflow.get_prefix('support')) self.assertEquals('', gitflow.get_prefix('versiontag'))
def test_merge_feature_without_commits(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = FeatureBranchManager(gitflow) dc0 = gitflow.develop().commit mgr.create('newstuff') mgr.merge('newstuff', 'develop') dc1 = gitflow.develop().commit # Assert the develop tip is unchanged by the merge self.assertEqual(dc0, dc1) # Assert the target-branch is active self.assertEqual(gitflow.repo.active_branch.name, 'develop')
def test_gitflow_init_with_alternative_config(self): repo = create_git_repo(self) gitflow = GitFlow(repo) prefixes = dict(feature='f-', hotfix='hf-', release='rel-', support='supp-', versiontag='ver') names = dict(origin='somewhereelse') gitflow.init(master='foo', develop='bar', prefixes=prefixes, names=names) self.assertEquals('foo', gitflow.master_name()) self.assertEquals('bar', gitflow.develop_name()) self.assertEquals('somewhereelse', gitflow.origin_name()) self.assertEquals('f-', gitflow.get_prefix('feature')) self.assertEquals('rel-', gitflow.get_prefix('release')) self.assertEquals('hf-', gitflow.get_prefix('hotfix')) self.assertEquals('supp-', gitflow.get_prefix('support')) self.assertEquals('ver', gitflow.get_prefix('versiontag'))
def test_gitflow_init_checkout_develop_if_newly_created(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() self.assertEqual(gitflow.repo.active_branch.name, 'develop')
def test_origin_without_remote_raises_error(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() self.assertRaises(NoSuchRemoteError, gitflow.origin)
def test_gitflow_init_marks_initialized(self): repo = create_git_repo(self) gitflow = GitFlow(repo) self.assertFalse(gitflow.is_initialized()) gitflow.init() self.assertTrue(gitflow.is_initialized())
def test_gitflow_throws_errors_before_init(self): repo = create_git_repo(self) gitflow = GitFlow(repo) self.assertRaises(NotInitialized, gitflow.master_name) self.assertRaises(NotInitialized, gitflow.develop_name) self.assertRaises(NotInitialized, gitflow.get_prefix, 'feature')
def test_gitflow_status_on_fresh_repo(self): repo = create_git_repo(self) gitflow = GitFlow(repo) self.assertEquals([], gitflow.status())
def test_create_release_branch_fetch_without_remote_raises_error(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = ReleaseBranchManager(gitflow) self.assertRaises(NoSuchRemoteError, mgr.create, 'foo', fetch=True)
def test_full_name(self): repo = create_git_repo(self) gitflow = GitFlow(repo) fb = DummyBranchManager(gitflow) self.assertEquals('xyz/foo', fb.full_name('foo')) self.assertEquals('xyz/feature/foo', fb.full_name('feature/foo'))
def test_gitflow_init_creates_branches(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() self.assertItemsEqual(['master', 'develop'], gitflow.branch_names())
def test_empty_repo_has_no_releases(self): repo = create_git_repo(self) gitflow = GitFlow(repo) mgr = ReleaseBranchManager(gitflow) self.assertItemsEqual([], mgr.list())
def test_default_prefix(self): repo = create_git_repo(self) gitflow = GitFlow(repo) fb = DummyBranchManager(gitflow) self.assertEquals('xyz/', fb.prefix)
def test_empty_repo_has_no_branches(self): repo = create_git_repo(self) gitflow = GitFlow(repo) self.assertItemsEqual([], gitflow.branch_names())
def test_create_existing_release_branch_raises_error(self): repo = create_git_repo(self) gitflow = GitFlow(repo).init() mgr = ReleaseBranchManager(gitflow) mgr.create('1.0') self.assertRaises(BranchTypeExistsError, mgr.create, '1.0')