You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.2 KiB
129 lines
3.2 KiB
#!/bin/sh |
|
|
|
test_description='push with --set-upstream' |
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
|
|
|
. ./test-lib.sh |
|
. "$TEST_DIRECTORY"/lib-terminal.sh |
|
|
|
ensure_fresh_upstream() { |
|
rm -rf parent && git init --bare parent |
|
} |
|
|
|
test_expect_success 'setup bare parent' ' |
|
ensure_fresh_upstream && |
|
git remote add upstream parent |
|
' |
|
|
|
test_expect_success 'setup local commit' ' |
|
echo content >file && |
|
git add file && |
|
git commit -m one |
|
' |
|
|
|
check_config() { |
|
(echo $2; echo $3) >expect.$1 |
|
(git config branch.$1.remote |
|
git config branch.$1.merge) >actual.$1 |
|
test_cmp expect.$1 actual.$1 |
|
} |
|
|
|
test_expect_success 'push -u main:main' ' |
|
git push -u upstream main:main && |
|
check_config main upstream refs/heads/main |
|
' |
|
|
|
test_expect_success 'push -u main:other' ' |
|
git push -u upstream main:other && |
|
check_config main upstream refs/heads/other |
|
' |
|
|
|
test_expect_success 'push -u --dry-run main:otherX' ' |
|
git push -u --dry-run upstream main:otherX && |
|
check_config main upstream refs/heads/other |
|
' |
|
|
|
test_expect_success 'push -u topic_2:topic_2' ' |
|
git branch topic_2 && |
|
git push -u upstream topic_2:topic_2 && |
|
check_config topic_2 upstream refs/heads/topic_2 |
|
' |
|
|
|
test_expect_success 'push -u topic_2:other2' ' |
|
git push -u upstream topic_2:other2 && |
|
check_config topic_2 upstream refs/heads/other2 |
|
' |
|
|
|
test_expect_success 'push -u :topic_2' ' |
|
git push -u upstream :topic_2 && |
|
check_config topic_2 upstream refs/heads/other2 |
|
' |
|
|
|
test_expect_success 'push -u --all' ' |
|
git branch all1 && |
|
git branch all2 && |
|
git push -u --all && |
|
check_config all1 upstream refs/heads/all1 && |
|
check_config all2 upstream refs/heads/all2 |
|
' |
|
|
|
test_expect_success 'push -u HEAD' ' |
|
git checkout -b headbranch && |
|
git push -u upstream HEAD && |
|
check_config headbranch upstream refs/heads/headbranch |
|
' |
|
|
|
test_expect_success TTY 'progress messages go to tty' ' |
|
ensure_fresh_upstream && |
|
|
|
test_terminal git push -u upstream main >out 2>err && |
|
test_i18ngrep "Writing objects" err |
|
' |
|
|
|
test_expect_success 'progress messages do not go to non-tty' ' |
|
ensure_fresh_upstream && |
|
|
|
# skip progress messages, since stderr is non-tty |
|
git push -u upstream main >out 2>err && |
|
test_i18ngrep ! "Writing objects" err |
|
' |
|
|
|
test_expect_success 'progress messages go to non-tty (forced)' ' |
|
ensure_fresh_upstream && |
|
|
|
# force progress messages to stderr, even though it is non-tty |
|
git push -u --progress upstream main >out 2>err && |
|
test_i18ngrep "Writing objects" err |
|
' |
|
|
|
test_expect_success TTY 'push -q suppresses progress' ' |
|
ensure_fresh_upstream && |
|
|
|
test_terminal git push -u -q upstream main >out 2>err && |
|
test_i18ngrep ! "Writing objects" err |
|
' |
|
|
|
test_expect_success TTY 'push --no-progress suppresses progress' ' |
|
ensure_fresh_upstream && |
|
|
|
test_terminal git push -u --no-progress upstream main >out 2>err && |
|
test_i18ngrep ! "Unpacking objects" err && |
|
test_i18ngrep ! "Writing objects" err |
|
' |
|
|
|
test_expect_success TTY 'quiet push' ' |
|
ensure_fresh_upstream && |
|
|
|
test_terminal git push --quiet --no-progress upstream main 2>&1 | tee output && |
|
test_must_be_empty output |
|
' |
|
|
|
test_expect_success TTY 'quiet push -u' ' |
|
ensure_fresh_upstream && |
|
|
|
test_terminal git push --quiet -u --no-progress upstream main 2>&1 | tee output && |
|
test_must_be_empty output |
|
' |
|
|
|
test_done
|
|
|