summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2019-10-18 02:40:49 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-10-18 02:40:49 (GMT)
commitbb52def6dafabbfa07ee51562c9291222df55bd9 (patch)
tree206184ba6fb040d27f48f0cad04c1b5aa87a98d9 /t
parentf1afbb063ff86e40caeaee31146f62c7a3c10c57 (diff)
parent556895d0c8e95a8c2fb41434a5b9bf453e9367f6 (diff)
downloadgit-bb52def6dafabbfa07ee51562c9291222df55bd9.zip
git-bb52def6dafabbfa07ee51562c9291222df55bd9.tar.gz
git-bb52def6dafabbfa07ee51562c9291222df55bd9.tar.bz2
Merge branch 'jj/stash-reset-only-toplevel'
"git stash save" lost local changes to submodules, which has been corrected. * jj/stash-reset-only-toplevel: stash: avoid recursive hard reset on submodules
Diffstat (limited to 't')
-rwxr-xr-xt/t3906-stash-submodule.sh42
1 files changed, 41 insertions, 1 deletions
diff --git a/t/t3906-stash-submodule.sh b/t/t3906-stash-submodule.sh
index d7219d6..b93d1d7 100755
--- a/t/t3906-stash-submodule.sh
+++ b/t/t3906-stash-submodule.sh
@@ -1,6 +1,6 @@
#!/bin/sh
-test_description='stash apply can handle submodules'
+test_description='stash can handle submodules'
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-submodule-update.sh
@@ -21,4 +21,44 @@ KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1
KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1
test_submodule_switch "git_stash"
+setup_basic () {
+ test_when_finished "rm -rf main sub" &&
+ git init sub &&
+ (
+ cd sub &&
+ test_commit sub_file
+ ) &&
+ git init main &&
+ (
+ cd main &&
+ git submodule add ../sub &&
+ test_commit main_file
+ )
+}
+
+test_expect_success 'stash push with submodule.recurse=true preserves dirty submodule worktree' '
+ setup_basic &&
+ (
+ cd main &&
+ git config submodule.recurse true &&
+ echo "x" >main_file.t &&
+ echo "y" >sub/sub_file.t &&
+ git stash push &&
+ test_must_fail git -C sub diff --quiet
+ )
+'
+
+test_expect_success 'stash push and pop with submodule.recurse=true preserves dirty submodule worktree' '
+ setup_basic &&
+ (
+ cd main &&
+ git config submodule.recurse true &&
+ echo "x" >main_file.t &&
+ echo "y" >sub/sub_file.t &&
+ git stash push &&
+ git stash pop &&
+ test_must_fail git -C sub diff --quiet
+ )
+'
+
test_done