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

Re: [PATCH v6 03/10] replace: add test for --graft

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 7, 2014, 22:16 UTC
Message-ID
<xmqqmwckbyri.fsf@gitster.dls.corp.google.com>
In-Reply-To
<20140707063540.3708.9611.chriscool@tuxfamily.org>
Christian Couder <chriscool@tuxfamily.org> writes:
Show 15 quoted lines
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>  t/t6050-replace.sh | 40 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 40 insertions(+)
>
> diff --git a/t/t6050-replace.sh b/t/t6050-replace.sh
> index fb07ad2..d80a89e 100755
> --- a/t/t6050-replace.sh
> +++ b/t/t6050-replace.sh
> @@ -18,6 +18,33 @@ add_and_commit_file()
>      git commit --quiet -m "$_file: $_msg"
>  }
>  
> +commit_buffer_contains_parents()
SP before (), perhaps?
Show 9 quoted lines
> +{
> +    git cat-file commit "$1" >payload &&
> +    sed -n -e '/^$/q' -e '/^parent /p' <payload >actual &&
> +    shift &&
> +    : >expected &&
> +    for _parent
> +    do
> +	echo "parent $_parent" >>expected || return 1
> +    done &&

You can redirect the entire loop to simplify the above 5 lines, which would read better, no?

	for _parent
        do
		echo "parent $_parent"
	done >expect
> +    test_cmp actual expected

As "test_cmp" normally runs "diff", it is better to compare expect with actual, not the other way around; running the test verbosely, i.e. "t6050-replace.sh -v", shows how the actual output differs from what is expected when diagnosing breakage and would be more useful that way.

If your goal is to test both the object contents with this code *and* the overall system behaviour with the "$child^$parent" below, perhaps they should be in the same "commit_has_parents" function, without forcing the caller to choose between the two or call both, no?

Show 14 quoted lines
> +test_expect_success '--graft with and without already replaced object' '
> +	test $(git log --oneline | wc -l) = 7 &&
> +	git replace --graft $HASH5 &&
> +	test $(git log --oneline | wc -l) = 3 &&
> +	commit_buffer_contains_parents $HASH5 &&
> +	commit_has_parents $HASH5 &&
> +	test_must_fail git replace --graft $HASH5 $HASH4 $HASH3 &&
> +	git replace --force -g $HASH5 $HASH4 $HASH3 &&
> +	commit_buffer_contains_parents $HASH5 $HASH4 $HASH3 &&
> +	commit_has_parents $HASH5 $HASH4 $HASH3 &&
> +	git replace -d $HASH5
> +'
> +
>  test_done
Previous: Christian CouderNext: Christian Couder
Message 14 of 26 in “Add --graft option to git replace”
  1. 00/10 Add --graft option to git replaceChristian Couder, Jul 7, 2014
  2. 01/10 replace: cleanup redirection style in testsChristian Couder, Jul 7, 2014
  3. 02/10 replace: add --graft optionChristian Couder, Jul 7, 2014
  4. Junio C HamanoJul 9, 2014
  5. Christian CouderJul 10, 2014
  6. Junio C HamanoJul 10, 2014
  7. Junio C HamanoJul 10, 2014
  8. Christian CouderJul 11, 2014
  9. Junio C HamanoJul 11, 2014
  10. Christian CouderJul 11, 2014
  11. Junio C HamanoJul 11, 2014
  12. Jeff KingJul 11, 2014
  13. 03/10 replace: add test for --graftChristian Couder, Jul 7, 2014
  14. Junio C HamanoJul 7, 2014
  15. Christian CouderJul 8, 2014
  16. 04/10 Documentation: replace: add --graft optionChristian Couder, Jul 7, 2014
  17. 05/10 contrib: add convert-grafts-to-replace-refs.shChristian Couder, Jul 7, 2014
  18. 06/10 replace: remove signature when using --graftChristian Couder, Jul 7, 2014
  19. 07/10 replace: add test for --graft with signed commitChristian Couder, Jul 7, 2014
  20. 08/10 commit: add for_each_mergetag()Christian Couder, Jul 7, 2014
  21. Junio C HamanoJul 7, 2014
  22. Christian CouderJul 8, 2014
  23. 09/10 replace: check mergetags when using --graftChristian Couder, Jul 7, 2014
  24. Junio C HamanoJul 7, 2014
  25. Christian CouderJul 8, 2014
  26. 10/10 replace: add test for --graft with a mergetagChristian Couder, Jul 7, 2014

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.