Browse Source

Merge branch 'jt/stash-tests'

Test update to improve coverage for "git stash" operations.

* jt/stash-tests:
  stash: add a test for stashing in a detached state
  stash: add a test for when apply fails during stash branch
  stash: add a test for stash create with no files
maint
Junio C Hamano 8 years ago
parent
commit
f6a47f9b7a
  1. 34
      t/t3903-stash.sh

34
t/t3903-stash.sh

@ -444,6 +444,14 @@ test_expect_failure 'stash file to directory' '
test foo = "$(cat file/file)" test foo = "$(cat file/file)"
' '


test_expect_success 'stash create - no changes' '
git stash clear &&
test_when_finished "git reset --hard HEAD" &&
git reset --hard &&
git stash create >actual &&
test_must_be_empty actual
'

test_expect_success 'stash branch - no stashes on stack, stash-like argument' ' test_expect_success 'stash branch - no stashes on stack, stash-like argument' '
git stash clear && git stash clear &&
test_when_finished "git reset --hard HEAD" && test_when_finished "git reset --hard HEAD" &&
@ -648,6 +656,20 @@ test_expect_success 'stash branch should not drop the stash if the branch exists
git rev-parse stash@{0} -- git rev-parse stash@{0} --
' '


test_expect_success 'stash branch should not drop the stash if the apply fails' '
git stash clear &&
git reset HEAD~1 --hard &&
echo foo >file &&
git add file &&
git commit -m initial &&
echo bar >file &&
git stash &&
echo baz >file &&
test_when_finished "git checkout master" &&
test_must_fail git stash branch new_branch stash@{0} &&
git rev-parse stash@{0} --
'

test_expect_success 'stash apply shows status same as git status (relative to current directory)' ' test_expect_success 'stash apply shows status same as git status (relative to current directory)' '
git stash clear && git stash clear &&
echo 1 >subdir/subfile1 && echo 1 >subdir/subfile1 &&
@ -800,6 +822,18 @@ test_expect_success 'create with multiple arguments for the message' '
test_cmp expect actual test_cmp expect actual
' '


test_expect_success 'create in a detached state' '
test_when_finished "git checkout master" &&
git checkout HEAD~1 &&
>foo &&
git add foo &&
STASH_ID=$(git stash create) &&
HEAD_ID=$(git rev-parse --short HEAD) &&
echo "WIP on (no branch): ${HEAD_ID} initial" >expect &&
git show --pretty=%s -s ${STASH_ID} >actual &&
test_cmp expect actual
'

test_expect_success 'stash -- <pathspec> stashes and restores the file' ' test_expect_success 'stash -- <pathspec> stashes and restores the file' '
>foo && >foo &&
>bar && >bar &&

Loading…
Cancel
Save