f222bd34ff
Remove untracked files that are unwanted after they are done being used. While the set of cases in this patch is certainly far from comprehensive, it was motivated by some work to see what the fallout would be if we were to make the removal of untracked files as a side effect of other commands into an error. Some cases were a bit more involved than the testcase changes included in this patch, but the ones included here represent the simple cases. While this patch is not that important since we are not changing the behavior of those other commands into an error in the near term, I thought these changes were useful anyway as an explicit documentation of the intent that these untracked files are no longer useful. Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Acked-by: Derrick Stolee <stolee@gmail.com> Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
132 lines
3.5 KiB
Bash
Executable File
132 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2020 Doan Tran Cong Danh
|
|
#
|
|
|
|
test_description='test rebase --[no-]gpg-sign'
|
|
|
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY/lib-rebase.sh"
|
|
. "$TEST_DIRECTORY/lib-gpg.sh"
|
|
|
|
if ! test_have_prereq GPG
|
|
then
|
|
skip_all='skip all test rebase --[no-]gpg-sign, gpg not available'
|
|
test_done
|
|
fi
|
|
|
|
test_rebase_gpg_sign () {
|
|
local must_fail= will=will fake_editor=
|
|
if test "x$1" = "x!"
|
|
then
|
|
must_fail=test_must_fail
|
|
will="won't"
|
|
shift
|
|
fi
|
|
conf=$1
|
|
shift
|
|
test_expect_success "rebase $* with commit.gpgsign=$conf $will sign commit" "
|
|
git reset two &&
|
|
git config commit.gpgsign $conf &&
|
|
set_fake_editor &&
|
|
FAKE_LINES='r 1 p 2' git rebase --force-rebase --root $* &&
|
|
$must_fail git verify-commit HEAD^ &&
|
|
$must_fail git verify-commit HEAD
|
|
"
|
|
}
|
|
|
|
test_expect_success 'setup' '
|
|
test_commit one &&
|
|
test_commit two &&
|
|
test_must_fail git verify-commit HEAD &&
|
|
test_must_fail git verify-commit HEAD^
|
|
'
|
|
|
|
test_expect_success 'setup: merge commit' '
|
|
test_commit fork-point &&
|
|
git switch -c side &&
|
|
test_commit three &&
|
|
git switch main &&
|
|
git merge --no-ff side &&
|
|
git tag merged
|
|
'
|
|
|
|
test_rebase_gpg_sign ! false
|
|
test_rebase_gpg_sign true
|
|
test_rebase_gpg_sign ! true --no-gpg-sign
|
|
test_rebase_gpg_sign ! true --gpg-sign --no-gpg-sign
|
|
test_rebase_gpg_sign false --no-gpg-sign --gpg-sign
|
|
test_rebase_gpg_sign true -i
|
|
test_rebase_gpg_sign ! true -i --no-gpg-sign
|
|
test_rebase_gpg_sign ! true -i --gpg-sign --no-gpg-sign
|
|
test_rebase_gpg_sign false -i --no-gpg-sign --gpg-sign
|
|
|
|
test_expect_failure 'rebase -p --no-gpg-sign override commit.gpgsign' '
|
|
test_when_finished "git clean -f" &&
|
|
git reset --hard merged &&
|
|
git config commit.gpgsign true &&
|
|
git rebase -p --no-gpg-sign --onto=one fork-point main &&
|
|
test_must_fail git verify-commit HEAD
|
|
'
|
|
|
|
test_expect_success 'rebase -r, merge strategy, --gpg-sign will sign commit' '
|
|
git reset --hard merged &&
|
|
test_unconfig commit.gpgsign &&
|
|
git rebase -fr --gpg-sign -s resolve --root &&
|
|
git verify-commit HEAD
|
|
'
|
|
|
|
test_expect_success 'rebase -r, merge strategy, commit.gpgsign=true will sign commit' '
|
|
git reset --hard merged &&
|
|
git config commit.gpgsign true &&
|
|
git rebase -fr -s resolve --root &&
|
|
git verify-commit HEAD
|
|
'
|
|
|
|
test_expect_success 'rebase -r, merge strategy, commit.gpgsign=false --gpg-sign will sign commit' '
|
|
git reset --hard merged &&
|
|
git config commit.gpgsign false &&
|
|
git rebase -fr --gpg-sign -s resolve --root &&
|
|
git verify-commit HEAD
|
|
'
|
|
|
|
test_expect_success "rebase -r, merge strategy, commit.gpgsign=true --no-gpg-sign won't sign commit" '
|
|
git reset --hard merged &&
|
|
git config commit.gpgsign true &&
|
|
git rebase -fr --no-gpg-sign -s resolve --root &&
|
|
test_must_fail git verify-commit HEAD
|
|
'
|
|
|
|
test_expect_success 'rebase -r --gpg-sign will sign commit' '
|
|
git reset --hard merged &&
|
|
test_unconfig commit.gpgsign &&
|
|
git rebase -fr --gpg-sign --root &&
|
|
git verify-commit HEAD
|
|
'
|
|
|
|
test_expect_success 'rebase -r with commit.gpgsign=true will sign commit' '
|
|
git reset --hard merged &&
|
|
git config commit.gpgsign true &&
|
|
git rebase -fr --root &&
|
|
git verify-commit HEAD
|
|
'
|
|
|
|
test_expect_success 'rebase -r --gpg-sign with commit.gpgsign=false will sign commit' '
|
|
git reset --hard merged &&
|
|
git config commit.gpgsign false &&
|
|
git rebase -fr --gpg-sign --root &&
|
|
git verify-commit HEAD
|
|
'
|
|
|
|
test_expect_success "rebase -r --no-gpg-sign with commit.gpgsign=true won't sign commit" '
|
|
git reset --hard merged &&
|
|
git config commit.gpgsign true &&
|
|
git rebase -fr --no-gpg-sign --root &&
|
|
test_must_fail git verify-commit HEAD
|
|
'
|
|
|
|
test_done
|