3 test_description
='test custom script in place of pack-objects'
6 test_expect_success
'create some history to fetch' '
11 test_expect_success
'create debugging hook script' '
12 write_script .git/hook <<-\EOF
13 echo >&2 "hook running"
16 "$@" <hook.stdin >hook.stdout
21 clear_hook_results
() {
22 rm -rf .git
/hook.
* dst.git
25 test_expect_success
'hook runs via global config' '
27 test_config_global uploadpack.packObjectsHook ./hook &&
28 git clone --no-local . dst.git 2>stderr &&
29 grep "hook running" stderr
32 test_expect_success
'hook outputs are sane' '
33 # check that we recorded a usable pack
34 git index-pack --stdin <.git/hook.stdout &&
36 # check that we recorded args and stdin. We do not check
37 # the full argument list or the exact pack contents, as it would make
38 # the test brittle. So just sanity check that we could replay
39 # the packing procedure.
40 grep "^git" .git/hook.args &&
41 $(cat .git/hook.args) <.git/hook.stdin >replay
44 test_expect_success
'hook runs from -c config' '
46 git clone --no-local \
47 -u "git -c uploadpack.packObjectsHook=./hook upload-pack" \
49 grep "hook running" stderr
52 test_expect_success
'hook does not run from repo config' '
54 test_config uploadpack.packObjectsHook "./hook" &&
55 git clone --no-local . dst.git 2>stderr &&
56 ! grep "hook running" stderr &&
57 test_path_is_missing .git/hook.args &&
58 test_path_is_missing .git/hook.stdin &&
59 test_path_is_missing .git/hook.stdout