Re: [PATCH 1/3] t5730: introduce fetch command helper
From: Junio C Hamano <hidden>
Date: 2021-08-09 19:16:37
Kim Altintop [off-list ref] writes:
quoted hunk
Assembling a "raw" fetch command to be fed directly to "test-tool serve-v2" is extracted into a test helper. Suggested-by: Junio C Hamano <redacted> Signed-off-by: Kim Altintop <redacted> --- t/t5703-upload-pack-ref-in-want.sh | 107 ++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 33 deletions(-)diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh index e9e471621d..cd4744b016 100755 --- a/t/t5703-upload-pack-ref-in-want.sh +++ b/t/t5703-upload-pack-ref-in-want.sh@@ -40,6 +40,54 @@ write_command () { fi } +# Write a complete fetch command to stdout, suitable for use with `test-tool +# pkt-line`. "want-ref", "want", and "have" values can be given in this order, +# with sections separated by "--". +# +# Examples: +# +# write_fetch_command refs/heads/main +# +# write_fetch_command \ +# refs/heads/main \ +# -- \ +# -- \ +# $(git rev-parse x) +# +# write_fetch_command \ +# -- +# $(git rev-parse a) \ +# -- +# $(git rev-parse b)
Have a blank line here (or a line with "#" and nothing else) and it would become easier to read.
+write_fetch_command () {
+ write_command fetch &&
+ echo "0001" &&
+ echo "no-progress" || returnThe "while :" in this helper function are indented with 4 spaces, not a single tab.
+ while : + do + case $# in 0) break ;; esac && + case "$1" in --) shift; break ;; esac && + echo "want-ref $1" && + shift || return + done && + while : + do + case $# in 0) break ;; esac && + case "$1" in --) shift; break ;; esac && + echo "want $1" && + shift || return + done && + while : + do + case $# in 0) break ;; esac && + case "$1" in --) shift; break ;; esac && + echo "have $1" && + shift || return + done && + echo "done" && + echo "0000" +}
The error checking of the helper function seems to be reasonable, but ...
quoted hunk
# c(o/foo) d(o/bar) # \ / # b e(baz) f(main)@@ -97,15 +145,13 @@ test_expect_success 'basic want-ref' ' EOF git rev-parse f >expected_commits && test-tool pkt-line pack >in <<-EOF && + $(write_fetch_command \ + refs/heads/main \ + -- \ + -- \ + $(git rev-parse a) \ + ) EOF test-tool serve-v2 --stateless-rpc >out <in &&
... the code that uses the helper needs rewriting to make use of
it. A failure in $(write_fetch_command) here will not cause the
caller to stop here. If we had any "git" command used in the
helper, I would recommand restructuring the caller to do something
like:
write_fetch_command >pkt-src \
refs/heads/main \
-- \
-- \
$(git rev-parse a) &&
test-tool pkt-line pack <pkt-src >in &&
test-tool serve-v2 --stateless-rpc >out <in &&
but it probably may not be necessary (we only use "echo" there, and
it probably is not worth worrying about 'echo' failing).
The call to $(git rev-parse a) might fail when rev-parse gets
broken, and I think the rewritten version would catch such a
breakage while the one inside $(write_fetch_command) in the here-doc
would not be.