diff options
-rw-r--r-- | refs.c | 5 | ||||
-rw-r--r-- | t/lib-submodule-update.sh | 2 | ||||
-rwxr-xr-x | t/t0001-init.sh | 13 | ||||
-rwxr-xr-x | t/t5606-clone-options.sh | 3 | ||||
-rw-r--r-- | t/test-lib.sh | 7 |
5 files changed, 25 insertions, 5 deletions
@@ -567,8 +567,11 @@ char *repo_default_branch_name(struct repository *r) const char *config_key = "init.defaultbranch"; const char *config_display_key = "init.defaultBranch"; char *ret = NULL, *full_ref; + const char *env = getenv("GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME"); - if (repo_config_get_string(r, config_key, &ret) < 0) + if (env && *env) + ret = xstrdup(env); + else if (repo_config_get_string(r, config_key, &ret) < 0) die(_("could not retrieve `%s`"), config_display_key); if (!ret) diff --git a/t/lib-submodule-update.sh b/t/lib-submodule-update.sh index 87a759149f..bd3fa3c6da 100644 --- a/t/lib-submodule-update.sh +++ b/t/lib-submodule-update.sh @@ -144,7 +144,7 @@ create_lib_submodule_repo () { git checkout -b valid_sub1 && git revert HEAD && - git checkout master + git checkout "${GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME-master}" ) } diff --git a/t/t0001-init.sh b/t/t0001-init.sh index 2f7c3dcd0f..69a320489f 100755 --- a/t/t0001-init.sh +++ b/t/t0001-init.sh @@ -553,14 +553,21 @@ test_expect_success '--initial-branch' ' test_expect_success 'overridden default initial branch name (config)' ' test_config_global init.defaultBranch nmb && - git init initial-branch-config && + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= git init initial-branch-config && git -C initial-branch-config symbolic-ref HEAD >actual && grep nmb actual ' +test_expect_success 'overridden default main branch name (env)' ' + test_config_global init.defaultBranch nmb && + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=env git init main-branch-env && + git -C main-branch-env symbolic-ref HEAD >actual && + grep env actual +' + test_expect_success 'invalid default branch name' ' - test_config_global init.defaultBranch "with space" && - test_must_fail git init initial-branch-invalid 2>err && + test_must_fail env GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME="with space" \ + git init initial-branch-invalid 2>err && test_i18ngrep "invalid branch name" err ' diff --git a/t/t5606-clone-options.sh b/t/t5606-clone-options.sh index e69427f881..856eebf222 100755 --- a/t/t5606-clone-options.sh +++ b/t/t5606-clone-options.sh @@ -37,6 +37,7 @@ test_expect_success 'redirected clone -v does show progress' ' test_expect_success 'chooses correct default initial branch name' ' git init --bare empty && + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \ git -c init.defaultBranch=up clone empty whats-up && test refs/heads/up = $(git -C whats-up symbolic-ref HEAD) && test refs/heads/up = $(git -C whats-up config branch.up.merge) @@ -51,9 +52,11 @@ test_expect_success 'guesses initial branch name correctly' ' git -c init.defaultBranch=none init --bare no-head && git -C initial-branch push ../no-head guess abc && + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \ git clone no-head is-it2 && test_must_fail git -C is-it2 symbolic-ref refs/remotes/origin/HEAD && git -C no-head update-ref --no-deref HEAD refs/heads/guess && + GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME= \ git -c init.defaultBranch=guess clone no-head is-it3 && test refs/remotes/origin/guess = \ $(git -C is-it3 symbolic-ref refs/remotes/origin/HEAD) diff --git a/t/test-lib.sh b/t/test-lib.sh index ef31f40037..6b35070d22 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -1702,3 +1702,10 @@ test_lazy_prereq SHA1 ' test_lazy_prereq REBASE_P ' test -z "$GIT_TEST_SKIP_REBASE_P" ' +# Special-purpose prereq for transitioning to a new default branch name: +# Some tests need more than just a mindless (case-preserving) s/master/main/g +# replacement. The non-trivial adjustments are guarded behind this +# prerequisite, acting kind of as a feature flag +test_lazy_prereq PREPARE_FOR_MAIN_BRANCH ' + test "$GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME" = main +' |