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

Re: [PATCH v2 05/21] t6030: generalize test to not rely on current implementation

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 15, 2016, 21:07 UTC
Message-ID
<xmqqpotqa8de.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<1460294354-7031-6-git-send-email-s-beyer@gmx.net>
Stephan Beyer <s-beyer@gmx.net> writes:
Show 12 quoted lines
> The bisect algorithm allows different outcomes if, for example,
> the number of commits between a good and a bad commit is even.
> The current test relies on a specific behavior (for example,
> the behavior of the halfway() implementation). By disabling
> halfway(), some skip tests fail although the algorithm works.
>
> This commit generalizes the test t6030 such that it works
> even if the bisect algorithm uses its degree of freedom to
> choose another commit.
>
> While at it, fix some indentation issues: use tabs instead of
> 4 spaces.

While style fixes are very much welcome, it makes the patch unnecessary noisy. We typically do so as a preparatory clean-up.

And if you do style fixes, please fix other style issues, such as
 - use of "if [ ... ]; then", which should be spelled as
	if test ...
        then
 - unnecessasry space between redirection operator and the filename,
   and lack of double-quoting around such a filename in a variable
   to work around certain vintage of bash that gives unnecessary
   warnings, e.g. 'echo foo > $file' must be spelled as
	echo foo >"$file"
etc.
Show 8 quoted lines
> @@ -84,9 +82,8 @@ test_expect_success 'bisect fails if given any junk instead of revs' '
>  
>  test_expect_success 'bisect reset: back in the master branch' '
>  	git bisect reset &&
> -	echo "* master" > branch.expect &&
>  	git branch > branch.output &&
> -	cmp branch.expect branch.output
> +	grep "^* master" branch.output

This is not a style fix, and it is not a "possibly multiple valid outcomes", either.

If the purpose of change is "to do the right thing", checking the output from "git symbolic-ref HEAD" against "refs/heads/master" is the kosher way to check what test is trying to do.

Show 6 quoted lines
> @@ -180,14 +175,15 @@ test_expect_success 'bisect start: no ".git/BISECT_START" if checkout error' '
>  	git checkout HEAD hello
>  '
>  
> -# $HASH1 is good, $HASH4 is bad, we skip $HASH3
> +# $HASH1 is good, monday is bad, we skip $HASH3

I am not sure this s/$HASH4/monday/ is adding value. Certainly it breaks consistency, which you could keep by defining SIDE_HASH5 or something when you added the "Ok Monday, let's do it" commit. On the other hand, you could choose to consistently use branch-relative names by turning $HASH3 to master~1, etc.

>  # but $HASH2 is bad,
>  # so we should find $HASH2 as the first bad commit
> ...
Show 5 quoted lines
> +test_expect_success '"git bisect run" simple case' '
> +	echo "#"\!"/bin/sh" > test_script.sh &&
> +	echo "grep Another hello > /dev/null" >> test_script.sh &&
> +	echo "test \$? -ne 0" >> test_script.sh &&
> +	chmod +x test_script.sh &&
Use write_script in the "style fix" preparatory clean-up patch?
Show 13 quoted lines
> +	git bisect start &&
> +	git bisect good $HASH1 &&
> +	git bisect bad $HASH4 &&
> +	git bisect run ./test_script.sh > my_bisect_log.txt &&
> +	grep "$HASH3 is the first bad commit" my_bisect_log.txt &&
> +	git bisect reset
> +'
> ...
> +test_expect_success '"git bisect run" with more complex "git bisect start"' '
> +	echo "#"\!"/bin/sh" > test_script.sh &&
> +	echo "grep Ciao hello > /dev/null" >> test_script.sh &&
> +	echo "test \$? -ne 0" >> test_script.sh &&
> +	chmod +x test_script.sh &&
Likewise.
Previous: Eric SunshineNext: Stephan Beyer
Message 17 of 56 in “git bisect improvements”
  1. 00/21 git bisect improvementsStephan Beyer, Apr 10, 2016
  2. 01/21 bisect: write about `bisect next` in documentationStephan Beyer, Apr 10, 2016
  3. 02/21 bisect: allow 'bisect run' if no good commit is knownStephan Beyer, Apr 10, 2016
  4. 03/21 t/test-lib-functions.sh: generalize test_cmp_revStephan Beyer, Apr 10, 2016
  5. Eric SunshineApr 11, 2016
  6. Junio C HamanoApr 15, 2016
  7. Stephan BeyerApr 24, 2016
  8. Junio C HamanoApr 25, 2016
  9. 04/21 t: use test_cmp_rev() where appropriateStephan Beyer, Apr 10, 2016
  10. Eric SunshineApr 11, 2016
  11. Junio C HamanoApr 15, 2016
  12. 05/21 t6030: generalize test to not rely on current implementationStephan Beyer, Apr 10, 2016
  13. Torsten BögershausenApr 10, 2016
  14. Junio C HamanoApr 10, 2016
  15. Stephan BeyerApr 10, 2016
  16. Eric SunshineApr 11, 2016
  17. Junio C HamanoApr 15, 2016
  18. 06/21 bisect: add test for the bisect algorithmStephan Beyer, Apr 10, 2016
  19. Junio C HamanoApr 15, 2016
  20. 07/21 bisect: plug the biggest memory leakStephan Beyer, Apr 10, 2016
  21. Junio C HamanoApr 15, 2016
  22. 08/21 bisect: make bisect compile if DEBUG_BISECT is setStephan Beyer, Apr 10, 2016
  23. Junio C HamanoApr 15, 2016
  24. 09/21 bisect: make algorithm behavior independent of DEBUG_BISECTStephan Beyer, Apr 10, 2016
  25. Junio C HamanoApr 15, 2016
  26. 10/21 bisect: get rid of recursion in count_distance()Stephan Beyer, Apr 10, 2016
  27. Junio C HamanoApr 15, 2016
  28. 11/21 bisect: use struct node_data array instead of int arrayStephan Beyer, Apr 10, 2016
  29. Christian CouderApr 12, 2016
  30. Junio C HamanoApr 15, 2016
  31. 12/21 bisect: replace clear_distance() by unique markersStephan Beyer, Apr 10, 2016
  32. Christian CouderApr 12, 2016
  33. Junio C HamanoApr 15, 2016
  34. 13/21 bisect: use commit instead of commit list as arguments when appropriateStephan Beyer, Apr 10, 2016
  35. Junio C HamanoApr 15, 2016
  36. 14/21 bisect: extract get_distance() function from code duplicationStephan Beyer, Apr 10, 2016
  37. Junio C HamanoApr 15, 2016
  38. 15/21 bisect: introduce distance_direction()Stephan Beyer, Apr 10, 2016
  39. Junio C HamanoApr 15, 2016
  40. 16/21 bisect: make total number of commits globalStephan Beyer, Apr 10, 2016
  41. Christian CouderApr 13, 2016
  42. Junio C HamanoApr 15, 2016
  43. Junio C HamanoApr 16, 2016
  44. 17/21 bisect: rename count_distance() to compute_weight()Stephan Beyer, Apr 10, 2016
  45. Christian CouderApr 13, 2016
  46. Junio C HamanoApr 15, 2016
  47. 18/21 bisect: prepare for different algorithms based on find_allStephan Beyer, Apr 10, 2016
  48. Junio C HamanoApr 15, 2016
  49. 19/21 bisect: use a bottom-up traversal to find relevant weightsStephan Beyer, Apr 10, 2016
  50. Christian CouderApr 13, 2016
  51. Junio C HamanoApr 15, 2016
  52. Junio C HamanoApr 15, 2016
  53. Junio C HamanoApr 26, 2016
  54. 20/21 bisect: compute best bisection in compute_relevant_weights()Stephan Beyer, Apr 10, 2016
  55. 21/21 bisect: get back halfway shortcutStephan Beyer, Apr 10, 2016
  56. Junio C HamanoApr 15, 2016

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.