| test_description='stash can handle submodules' |
| . "$TEST_DIRECTORY"/lib-submodule-update.sh |
| git status -su >expect && |
| may_only_be_test_must_fail "$2" && |
| $2 git read-tree -u -m "$1" && |
| git status -su >actual && |
| test_cmp expect actual && |
| KNOWN_FAILURE_STASH_DOES_IGNORE_SUBMODULE_CHANGES=1 |
| KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 |
| KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 |
| test_submodule_switch_func "git_stash" |
| test_when_finished "rm -rf main sub" && |
| git submodule add ../sub && |
| test_expect_success 'stash push with submodule.recurse=true preserves dirty submodule worktree' ' |
| git config submodule.recurse true && |
| echo "y" >sub/sub_file.t && |
| test_must_fail git -C sub diff --quiet |
| test_expect_success 'stash push and pop with submodule.recurse=true preserves dirty submodule worktree' ' |
| git config submodule.recurse true && |
| echo "y" >sub/sub_file.t && |
| test_must_fail git -C sub diff --quiet |