| #!/bin/sh |
| # |
| # Copyright (c) 2007 Johannes E Schindelin |
| # |
| |
| test_description='Test git-stash' |
| |
| . ./test-lib.sh |
| |
| test_expect_success 'stash some dirty working directory' ' |
| echo 1 > file && |
| git add file && |
| test_tick && |
| git commit -m initial && |
| echo 2 > file && |
| git add file && |
| echo 3 > file && |
| test_tick && |
| git stash && |
| git diff-files --quiet && |
| git diff-index --cached --quiet HEAD |
| ' |
| |
| cat > expect << EOF |
| diff --git a/file b/file |
| index 0cfbf08..00750ed 100644 |
| --- a/file |
| +++ b/file |
| @@ -1 +1 @@ |
| -2 |
| +3 |
| EOF |
| |
| test_expect_success 'parents of stash' ' |
| test $(git rev-parse stash^) = $(git rev-parse HEAD) && |
| git diff stash^2..stash > output && |
| diff -u output expect |
| ' |
| |
| test_expect_success 'apply needs clean working directory' ' |
| echo 4 > other-file && |
| git add other-file && |
| echo 5 > other-file |
| ! git stash apply |
| ' |
| |
| test_expect_success 'apply stashed changes' ' |
| git add other-file && |
| test_tick && |
| git commit -m other-file && |
| git stash apply && |
| test 3 = $(cat file) && |
| test 1 = $(git show :file) && |
| test 1 = $(git show HEAD:file) |
| ' |
| |
| test_expect_success 'apply stashed changes (including index)' ' |
| git reset --hard HEAD^ && |
| echo 6 > other-file && |
| git add other-file && |
| test_tick && |
| git commit -m other-file && |
| git stash apply --index && |
| test 3 = $(cat file) && |
| test 2 = $(git show :file) && |
| test 1 = $(git show HEAD:file) |
| ' |
| |
| test_expect_success 'unstashing in a subdirectory' ' |
| git reset --hard HEAD && |
| mkdir subdir && |
| cd subdir && |
| git stash apply |
| ' |
| |
| test_done |