mirror of
https://github.com/git/git.git
synced 2024-11-29 04:54:56 +08:00
7f733de04e
In order to selectively skip tests, the environment variable GIT_SKIP_TESTS can be set like this: $ GIT_SKIP_TESTS='t1301 t4150.18' make test That is, its value can contain only the test script numbers, but not the full script name. Therefore, it is important that the test scripts are uniquely numbered. This makes it so. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
147 lines
3.5 KiB
Bash
Executable File
147 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='git rebase with its hook(s)'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success setup '
|
|
echo hello >file &&
|
|
git add file &&
|
|
test_tick &&
|
|
git commit -m initial &&
|
|
echo goodbye >file &&
|
|
git add file &&
|
|
test_tick &&
|
|
git commit -m second &&
|
|
git checkout -b side HEAD^ &&
|
|
echo world >git &&
|
|
git add git &&
|
|
test_tick &&
|
|
git commit -m side &&
|
|
git checkout master &&
|
|
git log --pretty=oneline --abbrev-commit --graph --all &&
|
|
git branch test side
|
|
'
|
|
|
|
test_expect_success 'rebase' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
git rebase master &&
|
|
test "z$(cat git)" = zworld
|
|
'
|
|
|
|
test_expect_success 'rebase -i' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
EDITOR=true git rebase -i master &&
|
|
test "z$(cat git)" = zworld
|
|
'
|
|
|
|
test_expect_success 'setup pre-rebase hook' '
|
|
mkdir -p .git/hooks &&
|
|
cat >.git/hooks/pre-rebase <<EOF &&
|
|
#!$SHELL_PATH
|
|
echo "\$1,\$2" >.git/PRE-REBASE-INPUT
|
|
EOF
|
|
chmod +x .git/hooks/pre-rebase
|
|
'
|
|
|
|
test_expect_success 'pre-rebase hook gets correct input (1)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
git rebase master &&
|
|
test "z$(cat git)" = zworld &&
|
|
test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,
|
|
|
|
'
|
|
|
|
test_expect_success 'pre-rebase hook gets correct input (2)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
git rebase master test &&
|
|
test "z$(cat git)" = zworld &&
|
|
test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,test
|
|
'
|
|
|
|
test_expect_success 'pre-rebase hook gets correct input (3)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
git checkout master &&
|
|
git rebase master test &&
|
|
test "z$(cat git)" = zworld &&
|
|
test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,test
|
|
'
|
|
|
|
test_expect_success 'pre-rebase hook gets correct input (4)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
EDITOR=true git rebase -i master &&
|
|
test "z$(cat git)" = zworld &&
|
|
test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,
|
|
|
|
'
|
|
|
|
test_expect_success 'pre-rebase hook gets correct input (5)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
EDITOR=true git rebase -i master test &&
|
|
test "z$(cat git)" = zworld &&
|
|
test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,test
|
|
'
|
|
|
|
test_expect_success 'pre-rebase hook gets correct input (6)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
git checkout master &&
|
|
EDITOR=true git rebase -i master test &&
|
|
test "z$(cat git)" = zworld &&
|
|
test "z$(cat .git/PRE-REBASE-INPUT)" = zmaster,test
|
|
'
|
|
|
|
test_expect_success 'setup pre-rebase hook that fails' '
|
|
mkdir -p .git/hooks &&
|
|
cat >.git/hooks/pre-rebase <<EOF &&
|
|
#!$SHELL_PATH
|
|
false
|
|
EOF
|
|
chmod +x .git/hooks/pre-rebase
|
|
'
|
|
|
|
test_expect_success 'pre-rebase hook stops rebase (1)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
test_must_fail git rebase master &&
|
|
test "z$(git symbolic-ref HEAD)" = zrefs/heads/test &&
|
|
test 0 = $(git rev-list HEAD...side | wc -l)
|
|
'
|
|
|
|
test_expect_success 'pre-rebase hook stops rebase (2)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
(
|
|
EDITOR=:
|
|
export EDITOR
|
|
test_must_fail git rebase -i master
|
|
) &&
|
|
test "z$(git symbolic-ref HEAD)" = zrefs/heads/test &&
|
|
test 0 = $(git rev-list HEAD...side | wc -l)
|
|
'
|
|
|
|
test_expect_success 'rebase --no-verify overrides pre-rebase (1)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
git rebase --no-verify master &&
|
|
test "z$(git symbolic-ref HEAD)" = zrefs/heads/test &&
|
|
test "z$(cat git)" = zworld
|
|
'
|
|
|
|
test_expect_success 'rebase --no-verify overrides pre-rebase (2)' '
|
|
git checkout test &&
|
|
git reset --hard side &&
|
|
EDITOR=true git rebase --no-verify -i master &&
|
|
test "z$(git symbolic-ref HEAD)" = zrefs/heads/test &&
|
|
test "z$(cat git)" = zworld
|
|
'
|
|
|
|
test_done
|