[PATCH v2 1/3] stash: It looks like a stash, but doesn't quack like a stash...
- From
Jon Seymour <jon.seymour@gmail.com>
- Date
- Aug 3, 2010, 10:36 UTC
- Message-ID
- <1280831775-30759-2-git-send-email-jon.seymour@gmail.com>
- In-Reply-To
- <1280831775-30759-1-git-send-email-jon.seymour@gmail.com>
In particular, a stash created with git stash create cannot be used as an argument to git stash branch because of two separate reasons.
1. a pre-condition assumes that there is always a stash on the stack when git stash branch is called, which is not necessarily true
2. the cleanup code assumes the specified stash is a stash reference, rather than an arbitrary commit.
The test_expect_failure tests in this patch demonstrate these issues.
Signed-off-by: Jon Seymour <jon.seymour@gmail.com> --- t/t3903-stash.sh | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh index 62e208a..4d8b6ad 100755 --- a/t/t3903-stash.sh +++ b/t/t3903-stash.sh @@ -378,4 +378,34 @@ test_expect_failure 'stash file to directory' ' test foo = "$(cat file/file)" ' +test_expect_failure 'stash branch from arbitrary stash ref when there are no stash references' ' + git stash clear && + test_when_finished "git reset --hard HEAD" && + git reset --hard && + echo foo >> file && + git tag stash-tag $(git stash create) && + test_when_finished "git tag -d stash-tag" && + git reset --hard && + git stash branch stash-branch $(git rev-parse stash-tag) && + test_when_finished "git reset --hard HEAD && git checkout master && git branch -D stash-branch" && + test $(git ls-files --modified | wc -l) -eq 1 +' + +test_expect_failure 'stash branch from arbitrary stash ref fails even if there is a stash' ' + git stash clear && { + git branch -D stash-branch || true + } + test_when_finished "git reset --hard HEAD" && + git reset --hard && + echo foo >> file && + git stash && + echo bar >> file && + git tag stash-tag $(git stash create) && + test_when_finished "git tag -d stash-tag" && + git reset --hard && + git stash branch stash-branch $(git rev-parse stash-tag) && + test_when_finished "git reset --hard HEAD && git checkout master && git branch -D stash-branch" && + test $(git ls-files --modified | wc -l) -eq 1 +' + test_done
-- 1.7.2.1.111.g8fc90