[PATCH 00/11] Improve testability with GIT_TEST_FSMONITOR
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Nov 21, 2019, 22:20 UTC
- Message-ID
- <pull.466.git.1574374826.gitgitgadget@gmail.com>
The GIT_TEST_FSMONITOR environment variable allows run-time specification of the fsmonitor hook. Initially used by t7619-status-fsmonitor.sh, we can enable it across the test suite to see how it affects Git's behavior. In particular, we can specify the version of the hook that requests a result from Watchman to get actual updates to the files in the repo.
In many cases, our tests are simply not ready to handle this option. fsmonitor does not integrate well with features such as split index, bare repos, or submodules. Other times, we need to disable it because the test is being specific about what files Git inspects during a 'status' call.
The long-term vision is to be able to run CI builds using a file-system watcher like Watchman to get better coverage on this feature. These patches get us closer, but there are still some issues around overloading the Watchman interface when the tests are run in parallel. When using "prove -j8 t[0-8]*.sh" I see some failures that do not reproduce when running the test scripts in isolation (on Linux).
Thanks, -Stolee
Derrick Stolee (11):
fsmonitor: disable in a bare repo
fsmonitor: do not output to stderr for tests
t1301-shared-repo.sh: disable FSMONITOR
t1510-repo-setup.sh: disable fsmonitor if no .git dir
fsmonitor: disable fsmonitor with worktrees
t3030-merge-recursive.sh: disable fsmonitor when tweaking
GIT_WORK_TREE
t3600-rm.sh: disable fsmonitor when deleting populated submodule
tests: disable fsmonitor in submodule tests
t7063: disable fsmonitor with status cache
t7519: disable external GIT_TEST_FSMONITOR variable
test-lib: clear watchman watches at test completionconfig.c | 5 +++++ t/t1301-shared-repo.sh | 1 + t/t1510-repo-setup.sh | 1 + t/t2400-worktree-add.sh | 2 ++ t/t3030-merge-recursive.sh | 2 ++ t/t3600-rm.sh | 1 + t/t4060-diff-submodule-option-diff-format.sh | 3 +++ t/t5526-fetch-submodules.sh | 2 ++ t/t7063-status-untracked-cache.sh | 3 +++ t/t7402-submodule-rebase.sh | 3 +++ t/t7406-submodule-update.sh | 2 ++ t/t7506-status-submodule.sh | 3 +++ t/t7508-status.sh | 3 +++ t/t7519-status-fsmonitor.sh | 3 +++ t/t7519/fsmonitor-watchman | 1 - t/test-lib-functions.sh | 15 +++++++++++++++ t/test-lib.sh | 2 ++ 17 files changed, 51 insertions(+), 1 deletion(-)
base-commit: dd0b61f577f041f1119bb3288451f8f9b7f9e3f2 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-466%2Fderrickstolee%2Ftest-watchman-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-466/derrickstolee/test-watchman-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/466
-- gitgitgadget