]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t3906-stash-submodule.sh
Merge branch 'en/merge-recursive-directory-rename-fixes'
[thirdparty/git.git] / t / t3906-stash-submodule.sh
index d7219d6f8f18868ad901e522715a8195c3d58940..b93d1d74da7b41c51ba483fc015ac56f13799341 100755 (executable)
@@ -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