Re: [PATCH] t6016: move to lib-log-graph.sh framework

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jan 03, 2021 at 07:30:35PM -0700, Antonio Russo wrote:
> t6016 manually reconstructs git log --graph output by using the reported
> commit hashes from `git rev-parse`.  Each tag is converted into an
> environment variable manually, and then `echo`-ed to an expected output
> file, which is in turn compared to the actual output.
> 
> The expected output is difficult to read and write, because, e.g.,
> each line of output must be prefaced with echo, quoted, and properly
> escaped.  Additionally, the test is sensitive to trailing whitespace,
> which may potentially be removed from graph log output in the future.
> 
> In order to reduce duplication, ease troubleshooting of failed tests by
> improving readability, and ease the addition of more tests to this file,
> port the operations to `lib-log-graph.sh`, which is already used in
> several other tests, e.g., t4215.  Give all merges a simple commit
> message, and use a common `check_graph` macro taking a heredoc of the
> expected output which does not required extensive escaping.
> 

Glad to see others using `lib-log-graph.sh` as well!

The changes look alright to me but maybe you could have split the two
changes into two different commits: Using tags directly instead of
environment variables and using `check_graph` instead of manually
`echo`-ing to an expected output and comparing with the actual output.

Other contributors would have a better idea whether it's truly required
or not.

> Signed-off-by: Antonio Russo <aerusso@xxxxxxxxxxx>
> ---
>  t/t6016-rev-list-graph-simplify-history.sh | 354 ++++++++++-----------
>  1 file changed, 167 insertions(+), 187 deletions(-)
> 
> This patch builds, and passes the test suite on travis-ci:
> 
> https://travis-ci.org/github/aerusso/git/builds/752694578
> 
> diff --git a/t/t6016-rev-list-graph-simplify-history.sh b/t/t6016-rev-list-graph-simplify-history.sh
> index f5e6e92f5b..f79df8b6d1 100755
> --- a/t/t6016-rev-list-graph-simplify-history.sh
> +++ b/t/t6016-rev-list-graph-simplify-history.sh
> @@ -8,6 +8,12 @@
>  test_description='--graph and simplified history'
>  
>  . ./test-lib.sh
> +. "$TEST_DIRECTORY"/lib-log-graph.sh
> +
> +check_graph () {
> +	cat >expect &&
> +	lib_test_cmp_graph --format=%s "$@"
> +}
>  
>  test_expect_success 'set up rev-list --graph test' '
>  	# 3 commits on branch A
> @@ -28,7 +34,7 @@ test_expect_success 'set up rev-list --graph test' '
>  
>  	# Octopus merge B and C into branch A
>  	git checkout A &&
> -	git merge B C &&
> +	git merge B C -m A4 &&
>  	git tag A4 &&
>  
>  	test_commit A5 bar.txt &&
> @@ -38,81 +44,64 @@ test_expect_success 'set up rev-list --graph test' '
>  	test_commit C3 foo.txt &&
>  	test_commit C4 bar.txt &&
>  	git checkout A &&
> -	git merge -s ours C &&
> +	git merge -s ours C -m A6 &&
>  	git tag A6 &&
>  
> -	test_commit A7 bar.txt &&
> -
> -	# Store commit names in variables for later use
> -	A1=$(git rev-parse --verify A1) &&
> -	A2=$(git rev-parse --verify A2) &&
> -	A3=$(git rev-parse --verify A3) &&
> -	A4=$(git rev-parse --verify A4) &&
> -	A5=$(git rev-parse --verify A5) &&
> -	A6=$(git rev-parse --verify A6) &&
> -	A7=$(git rev-parse --verify A7) &&
> -	B1=$(git rev-parse --verify B1) &&
> -	B2=$(git rev-parse --verify B2) &&
> -	C1=$(git rev-parse --verify C1) &&
> -	C2=$(git rev-parse --verify C2) &&
> -	C3=$(git rev-parse --verify C3) &&
> -	C4=$(git rev-parse --verify C4)
> -	'
> +	test_commit A7 bar.txt
> +'
>  
>  test_expect_success '--graph --all' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "*   $A6" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "| * $C3" >> expected &&
> -	echo "* | $A5" >> expected &&
> -	echo "| |   " >> expected &&
> -	echo "|  \\  " >> expected &&
> -	echo "*-. | $A4" >> expected &&
> -	echo "|\\ \\| " >> expected &&
> -	echo "| | * $C2" >> expected &&
> -	echo "| | * $C1" >> expected &&
> -	echo "| * | $B2" >> expected &&
> -	echo "| * | $B1" >> expected &&
> -	echo "* | | $A3" >> expected &&
> -	echo "| |/  " >> expected &&
> -	echo "|/|   " >> expected &&
> -	echo "* | $A2" >> expected &&
> -	echo "|/  " >> expected &&
> -	echo "* $A1" >> expected &&
> -	git rev-list --graph --all > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --all <<-\EOF
> +	* A7
> +	*   A6
> +	|\
> +	| * C4
> +	| * C3
> +	* | A5
> +	| |
> +	|  \
> +	*-. | A4
> +	|\ \|
> +	| | * C2
> +	| | * C1
> +	| * | B2
> +	| * | B1
> +	* | | A3
> +	| |/
> +	|/|
> +	* | A2
> +	|/
> +	* A1
> +	EOF
> +'
>  
>  # Make sure the graph_is_interesting() code still realizes
>  # that undecorated merges are interesting, even with --simplify-by-decoration
>  test_expect_success '--graph --simplify-by-decoration' '
> -	rm -f expected &&
>  	git tag -d A4 &&
> -	echo "* $A7" >> expected &&
> -	echo "*   $A6" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "| * $C3" >> expected &&
> -	echo "* | $A5" >> expected &&
> -	echo "| |   " >> expected &&
> -	echo "|  \\  " >> expected &&
> -	echo "*-. | $A4" >> expected &&
> -	echo "|\\ \\| " >> expected &&
> -	echo "| | * $C2" >> expected &&
> -	echo "| | * $C1" >> expected &&
> -	echo "| * | $B2" >> expected &&
> -	echo "| * | $B1" >> expected &&
> -	echo "* | | $A3" >> expected &&
> -	echo "| |/  " >> expected &&
> -	echo "|/|   " >> expected &&
> -	echo "* | $A2" >> expected &&
> -	echo "|/  " >> expected &&
> -	echo "* $A1" >> expected &&
> -	git rev-list --graph --all --simplify-by-decoration > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --all --simplify-by-decoration <<-\EOF
> +	* A7
> +	*   A6
> +	|\
> +	| * C4
> +	| * C3
> +	* | A5
> +	| |
> +	|  \
> +	*-. | A4
> +	|\ \|
> +	| | * C2
> +	| | * C1
> +	| * | B2
> +	| * | B1
> +	* | | A3
> +	| |/
> +	|/|
> +	* | A2
> +	|/
> +	* A1
> +	EOF
> +'
>  
>  test_expect_success 'setup: get rid of decorations on B' '
>  	git tag -d B2 &&
> @@ -122,142 +111,133 @@ test_expect_success 'setup: get rid of decorations on B' '
>  
>  # Graph with branch B simplified away
>  test_expect_success '--graph --simplify-by-decoration prune branch B' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "*   $A6" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "| * $C3" >> expected &&
> -	echo "* | $A5" >> expected &&
> -	echo "* | $A4" >> expected &&
> -	echo "|\\| " >> expected &&
> -	echo "| * $C2" >> expected &&
> -	echo "| * $C1" >> expected &&
> -	echo "* | $A3" >> expected &&
> -	echo "|/  " >> expected &&
> -	echo "* $A2" >> expected &&
> -	echo "* $A1" >> expected &&
> -	git rev-list --graph --simplify-by-decoration --all > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --simplify-by-decoration --all <<-\EOF
> +	* A7
> +	*   A6
> +	|\
> +	| * C4
> +	| * C3
> +	* | A5
> +	* | A4
> +	|\|
> +	| * C2
> +	| * C1
> +	* | A3
> +	|/
> +	* A2
> +	* A1
> +	EOF
> +'
>  
>  test_expect_success '--graph --full-history -- bar.txt' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "*   $A6" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "* | $A5" >> expected &&
> -	echo "* | $A4" >> expected &&
> -	echo "|\\| " >> expected &&
> -	echo "* | $A3" >> expected &&
> -	echo "|/  " >> expected &&
> -	echo "* $A2" >> expected &&
> -	git rev-list --graph --full-history --all -- bar.txt > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --full-history --all -- bar.txt <<-\EOF
> +	* A7
> +	*   A6
> +	|\
> +	| * C4
> +	* | A5
> +	* | A4
> +	|\|
> +	* | A3
> +	|/
> +	* A2
> +	EOF
> +'
>  
>  test_expect_success '--graph --full-history --simplify-merges -- bar.txt' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "*   $A6" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "* | $A5" >> expected &&
> -	echo "* | $A3" >> expected &&
> -	echo "|/  " >> expected &&
> -	echo "* $A2" >> expected &&
> -	git rev-list --graph --full-history --simplify-merges --all \
> -		-- bar.txt > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --full-history --simplify-merges --all -- bar.txt <<-\EOF
> +	* A7
> +	*   A6
> +	|\
> +	| * C4
> +	* | A5
> +	* | A3
> +	|/
> +	* A2
> +	EOF
> +'
>  
>  test_expect_success '--graph -- bar.txt' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "* $A5" >> expected &&
> -	echo "* $A3" >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "|/  " >> expected &&
> -	echo "* $A2" >> expected &&
> -	git rev-list --graph --all -- bar.txt > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --all -- bar.txt <<-\EOF
> +	* A7
> +	* A5
> +	* A3
> +	| * C4
> +	|/
> +	* A2
> +	EOF
> +'
>  
>  test_expect_success '--graph --sparse -- bar.txt' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "* $A6" >> expected &&
> -	echo "* $A5" >> expected &&
> -	echo "* $A4" >> expected &&
> -	echo "* $A3" >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "| * $C3" >> expected &&
> -	echo "| * $C2" >> expected &&
> -	echo "| * $C1" >> expected &&
> -	echo "|/  " >> expected &&
> -	echo "* $A2" >> expected &&
> -	echo "* $A1" >> expected &&
> -	git rev-list --graph --sparse --all -- bar.txt > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --sparse --all -- bar.txt <<-\EOF
> +	* A7
> +	* A6
> +	* A5
> +	* A4
> +	* A3
> +	| * C4
> +	| * C3
> +	| * C2
> +	| * C1
> +	|/
> +	* A2
> +	* A1
> +	EOF
> +'
>  
>  test_expect_success '--graph ^C4' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "* $A6" >> expected &&
> -	echo "* $A5" >> expected &&
> -	echo "*   $A4" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $B2" >> expected &&
> -	echo "| * $B1" >> expected &&
> -	echo "* $A3" >> expected &&
> -	git rev-list --graph --all ^C4 > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --all ^C4 <<-\EOF
> +	* A7
> +	* A6
> +	* A5
> +	*   A4
> +	|\
> +	| * B2
> +	| * B1
> +	* A3
> +	EOF
> +'
>  
>  test_expect_success '--graph ^C3' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "*   $A6" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "* $A5" >> expected &&
> -	echo "*   $A4" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $B2" >> expected &&
> -	echo "| * $B1" >> expected &&
> -	echo "* $A3" >> expected &&
> -	git rev-list --graph --all ^C3 > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --all ^C3 <<-\EOF
> +	* A7
> +	*   A6
> +	|\
> +	| * C4
> +	* A5
> +	*   A4
> +	|\
> +	| * B2
> +	| * B1
> +	* A3
> +	EOF
> +'
>  
>  # I don't think the ordering of the boundary commits is really
>  # that important, but this test depends on it.  If the ordering ever changes
>  # in the code, we'll need to update this test.
>  test_expect_success '--graph --boundary ^C3' '
> -	rm -f expected &&
> -	echo "* $A7" >> expected &&
> -	echo "*   $A6" >> expected &&
> -	echo "|\\  " >> expected &&
> -	echo "| * $C4" >> expected &&
> -	echo "* | $A5" >> expected &&
> -	echo "| |     " >> expected &&
> -	echo "|  \\    " >> expected &&
> -	echo "*-. \\   $A4" >> expected &&
> -	echo "|\\ \\ \\  " >> expected &&
> -	echo "| * | | $B2" >> expected &&
> -	echo "| * | | $B1" >> expected &&
> -	echo "* | | | $A3" >> expected &&
> -	echo "o | | | $A2" >> expected &&
> -	echo "|/ / /  " >> expected &&
> -	echo "o / / $A1" >> expected &&
> -	echo " / /  " >> expected &&
> -	echo "| o $C3" >> expected &&
> -	echo "|/  " >> expected &&
> -	echo "o $C2" >> expected &&
> -	git rev-list --graph --boundary --all ^C3 > actual &&
> -	test_cmp expected actual
> -	'
> +	check_graph --boundary --all ^C3 <<-\EOF
> +	* A7
> +	*   A6
> +	|\
> +	| * C4
> +	* | A5
> +	| |
> +	|  \
> +	*-. \   A4
> +	|\ \ \
> +	| * | | B2
> +	| * | | B1
> +	* | | | A3
> +	o | | | A2
> +	|/ / /
> +	o / / A1
> +	 / /
> +	| o C3
> +	|/
> +	o C2
> +	EOF
> +'
>  
>  test_done
> -- 
> 2.30.0

Thanks
- Abhishek



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux