Re: [PATCH 4/5] test-tool: test refspec input/output
From: Eric Sunshine <hidden>
Date: 2021-04-05 17:53:01
On Mon, Apr 5, 2021 at 9:04 AM Derrick Stolee via GitGitGadget [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Add a new test-helper, 'test-tool refspec', that currently reads stdin line-by-line and translates the refspecs using the parsing logic of refspec_item_init() and writes them to output. [...] Signed-off-by: Derrick Stolee <redacted> ---diff --git a/t/helper/test-refspec.c b/t/helper/test-refspec.c@@ -0,0 +1,39 @@ +int cmd__refspec(int argc, const char **argv) +{ + struct strbuf line = STRBUF_INIT; + [...] + return 0; +}
Leaking `strbuf line` here. Yes, I realize that the function is returning and test-tool exiting immediately after this, so not a big deal, but it's easy to do this correctly by releasing the strbuf, thus setting good precedence for people who might use this as a template for new test-tool functions they add in the future.
quoted hunk ↗ jump to hunk
diff --git a/t/t5511-refspec.sh b/t/t5511-refspec.sh@@ -93,4 +93,45 @@ test_refspec fetch "refs/heads/${good}" +test_expect_success 'test input/output round trip' ' + cat >input <<-\EOF && + +refs/heads/*:refs/remotes/origin/* + refs/heads/*:refs/remotes/origin/* + refs/heads/main:refs/remotes/frotz/xyzzy + :refs/remotes/frotz/deleteme + ^refs/heads/secrets + refs/heads/secret:refs/heads/translated + refs/heads/secret:heads/translated + refs/heads/secret:remotes/translated + secret:translated + refs/heads/*:remotes/xxy/* + refs/heads*/for-linus:refs/remotes/mine/* + 2e36527f23b7f6ae15e6f21ac3b08bf3fed6ee48:refs/heads/fixed + HEAD + @ + : + EOF
Over-indented heredoc body. It is customary[1] in this codebase for the body and EOF to have the same indentation as the command which starts the heredoc.
+ cat >expect <<-\EOF && + +refs/heads/*:refs/remotes/origin/* + refs/heads/*:refs/remotes/origin/* + refs/heads/main:refs/remotes/frotz/xyzzy + :refs/remotes/frotz/deleteme + ^refs/heads/secrets + refs/heads/secret:refs/heads/translated + refs/heads/secret:heads/translated + refs/heads/secret:remotes/translated + secret:translated + refs/heads/*:remotes/xxy/* + refs/heads*/for-linus:refs/remotes/mine/* + 2e36527f23b7f6ae15e6f21ac3b08bf3fed6ee48:refs/heads/fixed + HEAD + HEAD + : + EOF
Ditto.
+ test-tool refspec <input >output && + test_cmp expect output && + test-tool refspec --fetch <input >output && + test_cmp expect output +'
[1]: https://lore.kernel.org/git/CAPig+cSBVG0AdyqXH2mZp6Ohrcb8_ec1Mm_vGbQM4zWT_7yYxQ@mail.gmail.com/ (local)