Re: [PATCH v2 01/10] git-rebase.sh: Fix --merge --abort failures when path contains whitespace
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 10, 2008, 07:45 UTC
- Message-ID
- <7vr6dexids.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1207810216-27871-2-git-send-email-bdonlan@fushizen.net>
Bryan Donlan <bdonlan@fushizen.net> writes:
> +### Test that we handle strange characters properly
Thanks for the fix and updated tests.
Show 6 quoted lines
> +work_dir="$(pwd)/test \" ' \$ \\ dir" > + > test_expect_success setup ' > + mkdir -p "$work_dir" && > + cd "$work_dir" && > + git init &&
As you know that $work_dir and shell variables in general are available inside test_expect_* framework without anything special, like the above code,...
Show 11 quoted lines
> @@ -27,42 +33,45 @@ testrebase() {
> type=$1
> dotest=$2
>
> + test_expect_success "rebase$type --abort" "
> + cd \"\$work_dir\" &&
> # Clean up the state from the previous one
> + git reset --hard pre-rebase &&
> + test_must_fail git rebase$type master &&
> + test -d \"\$dotest\" &&
> ...this part would become a lot easier to read if you just stayed inside the original single quoted test script without introducing excessive backslashes.
I am very inclined to replace t3407 with the following.
diff --git a/t/t3407-rebase-abort.sh b/t/t3407-rebase-abort.sh index 37944c3..cadfb23 100755 --- a/t/t3407-rebase-abort.sh +++ b/t/t3407-rebase-abort.sh @@ -4,7 +4,13 @@ test_description='git rebase --abort tests' . ./test-lib.sh +### Test that we handle strange characters properly +work_dir="$(pwd)/test \" ' \$ \\ dir" + test_expect_success setup ' + mkdir -p "$work_dir" && + cd "$work_dir" && + git init && echo a > a && git add a && git commit -m a && @@ -28,32 +34,35 @@ testrebase() { dotest=$2 test_expect_success "rebase$type --abort" ' + cd "$work_dir" && # Clean up the state from the previous one - git reset --hard pre-rebase - test_must_fail git rebase'"$type"' master && - test -d '$dotest' && + git reset --hard pre-rebase && + test_must_fail git rebase$type master && + test -d "$dotest" && git rebase --abort && test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) && - test ! -d '$dotest' + test ! -d "$dotest" ' test_expect_success "rebase$type --abort after --skip" ' + cd "$work_dir" && # Clean up the state from the previous one - git reset --hard pre-rebase - test_must_fail git rebase'"$type"' master && - test -d '$dotest' && + git reset --hard pre-rebase && + test_must_fail git rebase$type master && + test -d "$dotest" && test_must_fail git rebase --skip && test $(git rev-parse HEAD) = $(git rev-parse master) && git-rebase --abort && test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) && - test ! -d '$dotest' + test ! -d "$dotest" ' test_expect_success "rebase$type --abort after --continue" ' + cd "$work_dir" && # Clean up the state from the previous one - git reset --hard pre-rebase - test_must_fail git rebase'"$type"' master && - test -d '$dotest' && + git reset --hard pre-rebase && + test_must_fail git rebase$type master && + test -d "$dotest" && echo c > a && echo d >> a && git add a && @@ -61,7 +70,7 @@ testrebase() { test $(git rev-parse HEAD) != $(git rev-parse master) && git rebase --abort && test $(git rev-parse to-rebase) = $(git rev-parse pre-rebase) && - test ! -d '$dotest' + test ! -d "$dotest" ' }