git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GSoC Patch 1/5] lib-log-graph.sh: consolidate test_cmp_graph logic

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 17, 2020, 00:05 UTC
Message-ID
<xmqqk14mm61r.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20200216134750.18947-1-abhishekkumar8222@gmail.com>
Abhishek Kumar <abhishekkumar8222@gmail.com> writes:
Show 5 quoted lines
> Logic for comparing log graphs is duplicated across test scripts.
> ...
>  t/lib-log-graph.sh | 39 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 39 insertions(+)
>  create mode 100644 t/lib-log-graph.sh

The presentation order of the patches may be less than ideal, in that it introduces totally unused code in step 1/5 that is hard to compare with what it will be used to replace with, and it is impossible to tell if the potential issues readers see in this step are merely inherited from existing tests or new issues introduced by this series, before reading the later steps.

Show 9 quoted lines
> diff --git a/t/lib-log-graph.sh b/t/lib-log-graph.sh
> new file mode 100644
> index 0000000000..999f2600de
> --- /dev/null
> +++ b/t/lib-log-graph.sh
> @@ -0,0 +1,39 @@
> +# Helpers shared by the test scripts for comparing log graphs.
> +
> +sanitize_output() {

One SP around both sides of (). I suspect that all helper functions in this patch has this style violation.

As a library-ish function that can be used outside individual test script, "output" without any clarification is too broad a word to act as an object of sanitizing. Is this function to sanitize the output from "git log"? Perhaps at the minimum, it should be called sanitize_log_output then.

Show 5 quoted lines
> +	sed -e 's/ *$//' \
> +	    -e 's/commit [0-9a-f]*$/commit COMMIT_OBJECT_NAME/' \
> +	    -e 's/Merge: [ 0-9a-f]*$/Merge: MERGE_PARENTS/' \
> +	    -e 's/Merge tag.*/Merge HEADS DESCRIPTION/' \
> +	    -e 's/Merge commit.*/Merge HEADS DESCRIPTION/' \
These are understandable anonymization; so is the last "index" one.
Show 5 quoted lines
> +	    -e 's/, 0 deletions(-)//' \
> +	    -e 's/, 0 insertions(+)//' \
> +	    -e 's/ 1 files changed, / 1 file changed, /' \
> +	    -e 's/, 1 deletions(-)/, 1 deletion(-)/' \
> +	    -e 's/, 1 insertions(+)/, 1 insertion(+)/' \

These might deserve comments. IIUC, all of these are historical accident and no longer necessary.

Show 7 quoted lines
> +	    -e 's/index [0-9a-f]*\.\.[0-9a-f]*/index BEFORE..AFTER/'
> +}
> +
> +# Assume expected graph is in file `expect`
> +test_cmp_graph_file() {
> +	git log --graph "$@" >output &&
> +	sanitize_output >output.trimmed <output &&

Pay attention to the names. If you are "sanitizing", then the result is not "trimmed". Call it "sanitized".

Show 7 quoted lines
> +	test_i18ncmp expect output.trimmed
> +}
> +
> +test_cmp_graph() {
> +	cat >expect &&
> +	test_cmp_graph_file "$@"
> +}

I am not sure if this wrapper is useful or obscuring. Open coding the caller of this wrapper, i.e.

	cat >expect <<-\EOF &&
	expected pattern
	EOF
	test_cmp_graph_file $args

is not all that cumbersome, and it might make it more transparent to the readers what is going on. I'd need to see the callsites in later steps to decide it is a good idea.

Show 11 quoted lines
> +# Assume expected graph is in file `expect.colors`
> +test_cmp_colored_graph_file() {
> +	git log --graph --color=always "$@" >output.colors.raw &&
> +	test_decode_color <output.colors.raw | sed "s/ *\$//" >output.colors &&
> +	test_cmp expect.colors output.colors
> +}
> +
> +test_cmp_colored_graph() {
> +	cat >expect.colors &&
> +	test_cmp_colored_graph_file "$@"
> +}

So unlike test_cmp_graph family, colored counterparts do not anonymize? That sounds a bit harder to use, but we cannot really tell if that is an issue before seeing the callsites in later steps.

Thanks.
Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 18 in “lib-log-graph.sh: consolidate test_cmp_graph logic”
  1. 1/5 lib-log-graph.sh: consolidate test_cmp_graph logicAbhishek Kumar, Feb 16, 2020
  2. 2/5 t3430: use lib-log-graph functionsAbhishek Kumar, Feb 16, 2020
  3. Junio C HamanoFeb 19, 2020
  4. 3/5 t4215: use lib-log-graph functionsAbhishek Kumar, Feb 16, 2020
  5. Junio C HamanoFeb 19, 2020
  6. 5/5 t4202: use lib-log-graph functionsAbhishek Kumar, Feb 16, 2020
  7. Junio C HamanoFeb 19, 2020
  8. 4/5 t4214: use lib-log-graph functionsAbhishek Kumar, Feb 16, 2020
  9. Junio C HamanoFeb 19, 2020
  10. Junio C HamanoFeb 17, 2020
  11. Junio C HamanoFeb 19, 2020
  12. 0/2 Consolidate test_cmp_graph logicAbhishek Kumar, Feb 20, 2020
  13. 2/2 lib-log-graph: consolidate colored graph cmp logicAbhishek Kumar, Feb 20, 2020
  14. 1/2 lib-log-graph: consolidate test_cmp_graph logicAbhishek Kumar, Feb 20, 2020
  15. Junio C HamanoFeb 20, 2020
  16. 1/2 lib-log-graph: consolidate test_cmp_graph logicAbhishek Kumar, Feb 24, 2020
  17. 2/2 lib-log-graph: consolidate colored graph cmp logicAbhishek Kumar, Feb 24, 2020
  18. Junio C HamanoFeb 24, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.