Mark dirstat error messages for translation
[gitweb.git] / t / t5526-fetch-submodules.sh
index e6d873a48963f69f1527a63c444c452dfc93ab43..af78e21ba913b465e7bf2e4149549d32de9d4240 100755 (executable)
@@ -66,7 +66,10 @@ test_expect_success "fetch --recurse-submodules recurses into submodules" '
        (
                cd downstream &&
                git fetch --recurse-submodules >../actual.out 2>../actual.err
-       ) &&
+       )
+'
+
+test_expect_success C_LOCALE_OUTPUT "fetch --recurse-submodules recurses into submodules: output" '
        test_cmp expect.out actual.out &&
        test_cmp expect.err actual.err
 '
@@ -95,7 +98,10 @@ test_expect_success "using fetchRecurseSubmodules=true in .gitmodules recurses i
                cd downstream &&
                git config -f .gitmodules submodule.submodule.fetchRecurseSubmodules true &&
                git fetch >../actual.out 2>../actual.err
-       ) &&
+       )
+'
+
+test_expect_success C_LOCALE_OUTPUT "using fetchRecurseSubmodules=true in .gitmodules recurses into submodules" '
        test_cmp expect.out actual.out &&
        test_cmp expect.err actual.err
 '
@@ -126,7 +132,10 @@ test_expect_success "--recurse-submodules overrides fetchRecurseSubmodules setti
                git fetch --recurse-submodules >../actual.out 2>../actual.err &&
                git config --unset -f .gitmodules submodule.submodule.fetchRecurseSubmodules &&
                git config --unset submodule.submodule.fetchRecurseSubmodules
-       ) &&
+       )
+'
+
+test_expect_success C_LOCALE_OUTPUT "--recurse-submodules overrides fetchRecurseSubmodules setting from .git/config: output" '
        test_cmp expect.out actual.out &&
        test_cmp expect.err actual.err
 '
@@ -145,13 +154,22 @@ test_expect_success "--dry-run propagates to submodules" '
        (
                cd downstream &&
                git fetch --recurse-submodules --dry-run >../actual.out 2>../actual.err
-       ) &&
+       )
+'
+
+test_expect_success C_LOCALE_OUTPUT "--dry-run propagates to submodules: output" '
        test_cmp expect.out actual.out &&
-       test_cmp expect.err actual.err &&
+       test_cmp expect.err actual.err
+'
+
+test_expect_success "Without --dry-run propagates to submodules" '
        (
                cd downstream &&
                git fetch --recurse-submodules >../actual.out 2>../actual.err
-       ) &&
+       )
+'
+
+test_expect_success C_LOCALE_OUTPUT "Without --dry-run propagates to submodules: output" '
        test_cmp expect.out actual.out &&
        test_cmp expect.err actual.err
 '
@@ -162,7 +180,10 @@ test_expect_success "recurseSubmodules=true propagates into submodules" '
                cd downstream &&
                git config fetch.recurseSubmodules true
                git fetch >../actual.out 2>../actual.err
-       ) &&
+       )
+'
+
+test_expect_success C_LOCALE_OUTPUT "recurseSubmodules=true propagates into submodules: output" '
        test_cmp expect.out actual.out &&
        test_cmp expect.err actual.err
 '
@@ -176,7 +197,10 @@ test_expect_success "--recurse-submodules overrides config in submodule" '
                        git config fetch.recurseSubmodules false
                ) &&
                git fetch --recurse-submodules >../actual.out 2>../actual.err
-       ) &&
+       )
+'
+
+test_expect_success C_LOCALE_OUTPUT "--recurse-submodules overrides config in submodule: output" '
        test_cmp expect.out actual.out &&
        test_cmp expect.err actual.err
 '
@@ -400,4 +424,51 @@ test_expect_success "'fetch.recurseSubmodules=on-demand' overrides global config
        test_cmp expect.err.2 actual.err
 '
 
+test_expect_success "'submodule.<sub>.fetchRecurseSubmodules=on-demand' overrides fetch.recurseSubmodules" '
+       (
+               cd downstream &&
+               git fetch --recurse-submodules
+       ) &&
+       add_upstream_commit &&
+       git config fetch.recurseSubmodules false &&
+       head1=$(git rev-parse --short HEAD) &&
+       git add submodule &&
+       git commit -m "new submodule" &&
+       head2=$(git rev-parse --short HEAD) &&
+       echo "From $pwd/." > expect.err.2 &&
+       echo "   $head1..$head2  master     -> origin/master" >> expect.err.2
+       head -2 expect.err >> expect.err.2 &&
+       (
+               cd downstream &&
+               git config submodule.submodule.fetchRecurseSubmodules on-demand &&
+               git fetch >../actual.out 2>../actual.err
+       ) &&
+       git config --unset fetch.recurseSubmodules &&
+       (
+               cd downstream &&
+               git config --unset submodule.submodule.fetchRecurseSubmodules
+       ) &&
+       test_cmp expect.out.sub actual.out &&
+       test_cmp expect.err.2 actual.err
+'
+
+test_expect_success "don't fetch submodule when newly recorded commits are already present" '
+       (
+               cd submodule &&
+               git checkout -q HEAD^^
+       ) &&
+       head1=$(git rev-parse --short HEAD) &&
+       git add submodule &&
+       git commit -m "submodule rewound" &&
+       head2=$(git rev-parse --short HEAD) &&
+       echo "From $pwd/." > expect.err &&
+       echo "   $head1..$head2  master     -> origin/master" >> expect.err &&
+       (
+               cd downstream &&
+               git fetch >../actual.out 2>../actual.err
+       ) &&
+       ! test -s actual.out &&
+       test_cmp expect.err actual.err
+'
+
 test_done