Browse Source
* dc/stash-con-untracked: stash: Add --include-untracked option to stash and remove all untracked files Conflicts: git-stash.shmaint

3 changed files with 228 additions and 7 deletions
@ -0,0 +1,155 @@
@@ -0,0 +1,155 @@
|
||||
#!/bin/sh |
||||
# |
||||
# Copyright (c) 2011 David Caldwell |
||||
# |
||||
|
||||
test_description='Test git stash --include-untracked' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success 'stash save --include-untracked 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 && |
||||
echo 1 > file2 && |
||||
git stash --include-untracked && |
||||
git diff-files --quiet && |
||||
git diff-index --cached --quiet HEAD |
||||
' |
||||
|
||||
cat > expect <<EOF |
||||
?? expect |
||||
?? output |
||||
EOF |
||||
|
||||
test_expect_success 'stash save --include-untracked cleaned the untracked files' ' |
||||
git status --porcelain > output |
||||
test_cmp output expect |
||||
' |
||||
|
||||
cat > expect.diff <<EOF |
||||
diff --git a/file2 b/file2 |
||||
new file mode 100644 |
||||
index 0000000..d00491f |
||||
--- /dev/null |
||||
+++ b/file2 |
||||
@@ -0,0 +1 @@ |
||||
+1 |
||||
EOF |
||||
cat > expect.lstree <<EOF |
||||
file2 |
||||
EOF |
||||
|
||||
test_expect_success 'stash save --include-untracked stashed the untracked files' ' |
||||
test "!" -f file2 && |
||||
git diff HEAD..stash^3 -- file2 > output && |
||||
test_cmp output expect.diff && |
||||
git ls-tree --name-only stash^3: > output && |
||||
test_cmp output expect.lstree |
||||
' |
||||
test_expect_success 'stash save --patch --include-untracked fails' ' |
||||
test_must_fail git stash --patch --include-untracked |
||||
' |
||||
|
||||
test_expect_success 'stash save --patch --all fails' ' |
||||
test_must_fail git stash --patch --all |
||||
' |
||||
|
||||
git clean --force --quiet |
||||
|
||||
cat > expect <<EOF |
||||
M file |
||||
?? expect |
||||
?? file2 |
||||
?? output |
||||
EOF |
||||
|
||||
test_expect_success 'stash pop after save --include-untracked leaves files untracked again' ' |
||||
git stash pop && |
||||
git status --porcelain > output |
||||
test_cmp output expect |
||||
' |
||||
|
||||
git clean --force --quiet |
||||
|
||||
test_expect_success 'stash save -u dirty index' ' |
||||
echo 4 > file3 && |
||||
git add file3 && |
||||
test_tick && |
||||
git stash -u |
||||
' |
||||
|
||||
cat > expect <<EOF |
||||
diff --git a/file3 b/file3 |
||||
new file mode 100644 |
||||
index 0000000..b8626c4 |
||||
--- /dev/null |
||||
+++ b/file3 |
||||
@@ -0,0 +1 @@ |
||||
+4 |
||||
EOF |
||||
|
||||
test_expect_success 'stash save --include-untracked dirty index got stashed' ' |
||||
git stash pop --index && |
||||
git diff --cached > output && |
||||
test_cmp output expect |
||||
' |
||||
|
||||
git reset > /dev/null |
||||
|
||||
test_expect_success 'stash save --include-untracked -q is quiet' ' |
||||
echo 1 > file5 && |
||||
git stash save --include-untracked --quiet > output.out 2>&1 && |
||||
test ! -s output.out |
||||
' |
||||
|
||||
test_expect_success 'stash save --include-untracked removed files' ' |
||||
rm -f file && |
||||
git stash save --include-untracked && |
||||
echo 1 > expect && |
||||
test_cmp file expect |
||||
' |
||||
|
||||
rm -f expect |
||||
|
||||
test_expect_success 'stash save --include-untracked removed files got stashed' ' |
||||
git stash pop && |
||||
test ! -f file |
||||
' |
||||
|
||||
cat > .gitignore <<EOF |
||||
.gitignore |
||||
ignored |
||||
EOF |
||||
|
||||
test_expect_success 'stash save --include-untracked respects .gitignore' ' |
||||
echo ignored > ignored && |
||||
git stash -u && |
||||
test -s ignored && |
||||
test -s .gitignore |
||||
' |
||||
|
||||
test_expect_success 'stash save -u can stash with only untracked files different' ' |
||||
echo 4 > file4 && |
||||
git stash -u |
||||
test "!" -f file4 |
||||
' |
||||
|
||||
test_expect_success 'stash save --all does not respect .gitignore' ' |
||||
git stash -a && |
||||
test "!" -f ignored && |
||||
test "!" -f .gitignore |
||||
' |
||||
|
||||
test_expect_success 'stash save --all is stash poppable' ' |
||||
git stash pop && |
||||
test -s ignored && |
||||
test -s .gitignore |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue