Christian Couder <christian.cou...@gmail.com> writes:

> 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 <chrisc...@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

> +     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

> +done <<\EOF
> +0666 -rw-rw-rw- seventeen
> +0642 -rw-r---w- eightteen
> +EOF
> +
>  test_done

Reply via email to