t4205: refactor %(trailers) tests
[gitweb.git] / t / t1700-split-index.sh
index 480d3a8dc327eec38ae47641f6d13954150705ed..22f69a410ba8194bbdff70471f5b3e746af116da 100755 (executable)
@@ -201,6 +201,22 @@ test_expect_success 'unify index, two files remain' '
        test_cmp expect actual
 '
 
+test_expect_success 'rev-parse --shared-index-path' '
+       test_create_repo split-index &&
+       (
+               cd split-index &&
+               git update-index --split-index &&
+               echo .git/sharedindex* >expect &&
+               git rev-parse --shared-index-path >actual &&
+               test_cmp expect actual &&
+               mkdir subdirectory &&
+               cd subdirectory &&
+               echo ../.git/sharedindex* >expect &&
+               git rev-parse --shared-index-path >actual &&
+               test_cmp expect actual
+       )
+'
+
 test_expect_success 'set core.splitIndex config variable to true' '
        git config core.splitIndex true &&
        : >three &&
@@ -313,17 +329,17 @@ test_expect_success 'check splitIndex.maxPercentChange set to 0' '
 test_expect_success 'shared index files expire after 2 weeks by default' '
        : >ten &&
        git update-index --add ten &&
-       test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
+       test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
        just_under_2_weeks_ago=$((5-14*86400)) &&
        test-chmtime =$just_under_2_weeks_ago .git/sharedindex.* &&
        : >eleven &&
        git update-index --add eleven &&
-       test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
+       test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
        just_over_2_weeks_ago=$((-1-14*86400)) &&
        test-chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
        : >twelve &&
        git update-index --add twelve &&
-       test $(ls .git/sharedindex.* | wc -l) = 1
+       test $(ls .git/sharedindex.* | wc -l) -le 2
 '
 
 test_expect_success 'check splitIndex.sharedIndexExpire set to 16 days' '
@@ -331,12 +347,12 @@ test_expect_success 'check splitIndex.sharedIndexExpire set to 16 days' '
        test-chmtime =$just_over_2_weeks_ago .git/sharedindex.* &&
        : >thirteen &&
        git update-index --add thirteen &&
-       test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
+       test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
        just_over_16_days_ago=$((-1-16*86400)) &&
        test-chmtime =$just_over_16_days_ago .git/sharedindex.* &&
        : >fourteen &&
        git update-index --add fourteen &&
-       test $(ls .git/sharedindex.* | wc -l) = 1
+       test $(ls .git/sharedindex.* | wc -l) -le 2
 '
 
 test_expect_success 'check splitIndex.sharedIndexExpire set to "never" and "now"' '
@@ -345,13 +361,43 @@ test_expect_success 'check splitIndex.sharedIndexExpire set to "never" and "now"
        test-chmtime =$just_10_years_ago .git/sharedindex.* &&
        : >fifteen &&
        git update-index --add fifteen &&
-       test $(ls .git/sharedindex.* | wc -l) -gt 1 &&
+       test $(ls .git/sharedindex.* | wc -l) -gt 2 &&
        git config splitIndex.sharedIndexExpire now &&
        just_1_second_ago=-1 &&
        test-chmtime =$just_1_second_ago .git/sharedindex.* &&
        : >sixteen &&
        git update-index --add sixteen &&
-       test $(ls .git/sharedindex.* | wc -l) = 1
+       test $(ls .git/sharedindex.* | wc -l) -le 2
 '
 
+while read -r mode modebits
+do
+       test_expect_success POSIXPERM "split index respects core.sharedrepository $mode" '
+               # Remove existing shared index files
+               git config core.splitIndex false &&
+               git update-index --force-remove one &&
+               rm -f .git/sharedindex.* &&
+               # Create one new shared index file
+               git config core.sharedrepository "$mode" &&
+               git config core.splitIndex true &&
+               : >one &&
+               git update-index --add one &&
+               echo "$modebits" >expect &&
+               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-
+0642 -rw-r---w-
+EOF
+
 test_done