Imported Upstream version 2.27.0
[platform/upstream/git.git] / t / t7400-submodule-basic.sh
index 691b5fc..956e17a 100755 (executable)
@@ -55,6 +55,21 @@ test_expect_success 'add aborts on repository with no commits' '
        test_i18ncmp expect actual
 '
 
+test_expect_success 'status should ignore inner git repo when not added' '
+       rm -fr inner &&
+       mkdir inner &&
+       (
+               cd inner &&
+               git init &&
+               >t &&
+               git add t &&
+               git commit -m "initial"
+       ) &&
+       test_must_fail git submodule status inner 2>output.err &&
+       rm -fr inner &&
+       test_i18ngrep "^error: .*did not match any file(s) known to git" output.err
+'
+
 test_expect_success 'setup - repository in init subdirectory' '
        mkdir init &&
        (
@@ -156,9 +171,11 @@ test_expect_success 'submodule add to .gitignored path fails' '
        (
                cd addtest-ignore &&
                cat <<-\EOF >expect &&
-               The following path is ignored by one of your .gitignore files:
+               The following paths are ignored by one of your .gitignore files:
                submod
-               Use -f if you really want to add it.
+               hint: Use -f if you really want to add them.
+               hint: Turn this message off by running
+               hint: "git config advice.addIgnoredFile false"
                EOF
                # Does not use test_commit due to the ignore
                echo "*" > .gitignore &&
@@ -191,6 +208,17 @@ test_expect_success 'submodule add to reconfigure existing submodule with --forc
        )
 '
 
+test_expect_success 'submodule add relays add --dry-run stderr' '
+       test_when_finished "rm -rf addtest/.git/index.lock" &&
+       (
+               cd addtest &&
+               : >.git/index.lock &&
+               ! git submodule add "$submodurl" sub-while-locked 2>output.err &&
+               test_i18ngrep "^fatal: .*index\.lock" output.err &&
+               test_path_is_missing sub-while-locked
+       )
+'
+
 test_expect_success 'submodule add --branch' '
        echo "refs/heads/initial" >expect-head &&
        cat <<-\EOF >expect-heads &&
@@ -356,6 +384,28 @@ test_expect_success 'status should only print one line' '
        test_line_count = 1 lines
 '
 
+test_expect_success 'status from subdirectory should have the same SHA1' '
+       test_when_finished "rmdir addtest/subdir" &&
+       (
+               cd addtest &&
+               mkdir subdir &&
+               git submodule status >output &&
+               awk "{print \$1}" <output >expect &&
+               cd subdir &&
+               git submodule status >../output &&
+               awk "{print \$1}" <../output >../actual &&
+               test_cmp ../expect ../actual &&
+               git -C ../submod checkout HEAD^ &&
+               git submodule status >../output &&
+               awk "{print \$1}" <../output >../actual2 &&
+               cd .. &&
+               git submodule status >output &&
+               awk "{print \$1}" <output >expect2 &&
+               test_cmp expect2 actual2 &&
+               ! test_cmp actual actual2
+       )
+'
+
 test_expect_success 'setup - fetch commit name from submodule' '
        rev1=$(cd .subrepo && git rev-parse HEAD) &&
        printf "rev1: %s\n" "$rev1" &&
@@ -377,6 +427,14 @@ test_expect_success 'init should register submodule url in .git/config' '
        test_cmp expect url
 '
 
+test_expect_success 'status should still be "missing" after initializing' '
+       rm -fr init &&
+       mkdir init &&
+       git submodule status >lines &&
+       rm -fr init &&
+       grep "^-$rev1" lines
+'
+
 test_failure_with_unknown_submodule () {
        test_must_fail git submodule $1 no-such-submodule 2>output.err &&
        test_i18ngrep "^error: .*no-such-submodule" output.err
@@ -880,7 +938,7 @@ test_expect_success 'submodule add --name allows to replace a submodule with ano
                echo "repo" >expect &&
                test_must_fail git config -f .gitmodules submodule.repo.path &&
                git config -f .gitmodules submodule.repo_new.path >actual &&
-               test_cmp expect actual&&
+               test_cmp expect actual &&
                echo "$submodurl/repo" >expect &&
                test_must_fail git config -f .gitmodules submodule.repo.url &&
                echo "$submodurl/bare.git" >expect &&
@@ -952,7 +1010,7 @@ test_expect_success 'submodule add with an existing name fails unless forced' '
                test -d repo &&
                echo "repo" >expect &&
                git config -f .gitmodules submodule.repo_new.path >actual &&
-               test_cmp expect actual&&
+               test_cmp expect actual &&
                echo "$submodurl/repo.git" >expect &&
                git config -f .gitmodules submodule.repo_new.url >actual &&
                test_cmp expect actual &&