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

Re: [PATCH v2 3/3] t1700: make sure split-index respects core.sharedrepository

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 23, 2017, 22:20 UTC
Message-ID
<xmqqwp82bb39.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20170623151640.24082-3-chriscool@tuxfamily.org>
Christian Couder <christian.couder@gmail.com> writes:
Show 18 quoted lines
> Add a few tests to check that both the split-index file and the
> shared-index file are created using the right permissions when
> core.sharedrepository is set.
>
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> ---
>  t/t1700-split-index.sh | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>
> diff --git a/t/t1700-split-index.sh b/t/t1700-split-index.sh
> index af3ec0da5a..2c5be732e4 100755
> --- a/t/t1700-split-index.sh
> +++ b/t/t1700-split-index.sh
> @@ -370,4 +370,21 @@ test_expect_success 'check splitIndex.sharedIndexExpire set to "never" and "now"
>  	test $(ls .git/sharedindex.* | wc -l) -le 2
>  '
>  
> +while read -r mode modebits filename; do
Style.
	while read -r mode modebits filename
	do
Show 11 quoted lines
> +	test_expect_success POSIXPERM "split index respects core.sharedrepository $mode" '
> +		git config core.sharedrepository "$mode" &&
> +		: >"$filename" &&
> +		git update-index --add "$filename" &&
> +		echo "$modebits" >expect &&
> +		test_modebits .git/index >actual &&
> +		test_cmp expect actual &&
> +		newest_shared_index=$(ls -t .git/sharedindex.* | head -1) &&
> +		test_modebits "$newest_shared_index" >actual &&
> +		test_cmp expect actual
> +	'

Running this twice in a loop would create two .git/sharedindex.* files in quick succession. I do not think we want to assume that the filesystem timestamp can keep up with us to allow "ls -t" to work reliably in the second round (if there is a leftover shared index from previous test, even the first round may not catch the latest one).

How about doing each iteration this way instead? Which might be a better solution to work around that.

    - with core.sharedrepository set to false, force the index to be
      unsplit; "index" will have the default unshared permission
      bits (but we do not care what it is and no need to check it).
    - remove any leftover sharedindex.*, if any.
    - with core.sharedrepository set to whatever mode being tested,
      do the adding to force split.
    - test the permission of index file.
    - test the permission of sharedindex.* file; there should be
      only one instance, so erroring out when we see two or more is
      also a good test.
The last two steps may look like:
	test_modebits .git/index >actual && test_cmp expect actual &&
	shared=$(ls .git/sharedindex.*) &&
	case "$shared" in
	*" "*)
		# we have more than one???
		false ;;
	*)	
		test_modebits "shared" >actual &&
		test_cmp expect actual ;;
	esac
Show 6 quoted lines
> +done <<\EOF
> +0666 -rw-rw-rw- seventeen
> +0642 -rw-r---w- eightteen
> +EOF
> +
>  test_done
Previous: Christian CouderNext: Christian Couder
Message 4 of 8 in “read-cache: use shared perms when writing shared index”
  1. 1/3 read-cache: use shared perms when writing shared indexChristian Couder, Jun 23, 2017
  2. 2/3 t1301: move modebits() to test-lib-functions.shChristian Couder, Jun 23, 2017
  3. 3/3 t1700: make sure split-index respects core.sharedrepositoryChristian Couder, Jun 23, 2017
  4. Junio C HamanoJun 23, 2017
  5. Christian CouderJun 25, 2017
  6. Junio C HamanoJun 23, 2017
  7. Junio C HamanoJun 23, 2017
  8. Christian CouderJun 25, 2017

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.