Merge branch 'jc/post-c89-rules-doc' into maint
[gitweb.git] / t / t4208-log-magic-pathspec.sh
index 935df6a65cab2ba901856633baad7b2e38ebecfa..4c8f3b8e1bdd084a6407d76ff26cff0048e90bdf 100755 (executable)
@@ -25,6 +25,32 @@ test_expect_success '"git log :/a -- " should not be ambiguous' '
        git log :/a --
 '
 
+test_expect_success '"git log :/detached -- " should find a commit only in HEAD' '
+       test_when_finished "git checkout master" &&
+       git checkout --detach &&
+       # Must manually call `test_tick` instead of using `test_commit`,
+       # because the latter additionally creates a tag, which would make
+       # the commit reachable not only via HEAD.
+       test_tick &&
+       git commit --allow-empty -m detached &&
+       test_tick &&
+       git commit --allow-empty -m something-else &&
+       git log :/detached --
+'
+
+test_expect_success '"git log :/detached -- " should not find an orphaned commit' '
+       test_must_fail git log :/detached --
+'
+
+test_expect_success '"git log :/detached -- " should find HEAD only of own worktree' '
+       git worktree add other-tree HEAD &&
+       git -C other-tree checkout --detach &&
+       test_tick &&
+       git -C other-tree commit --allow-empty -m other-detached &&
+       git -C other-tree log :/other-detached -- &&
+       test_must_fail git log :/other-detached --
+'
+
 test_expect_success '"git log -- :/a" should not be ambiguous' '
        git log -- :/a
 '
@@ -45,8 +71,9 @@ test_expect_success 'git log -- :' '
 '
 
 test_expect_success 'git log HEAD -- :/' '
+       initial=$(git rev-parse --short HEAD^) &&
        cat >expected <<-EOF &&
-       24b24cf initial
+       $initial initial
        EOF
        (cd sub && git log --oneline HEAD -- :/ >../actual) &&
        test_cmp expected actual
@@ -93,4 +120,23 @@ test_expect_success 'command line pathspec parsing for "git log"' '
        git log --merge -- a
 '
 
+test_expect_success 'tree_entry_interesting does not match past submodule boundaries' '
+       test_when_finished "rm -rf repo submodule" &&
+       git init submodule &&
+       test_commit -C submodule initial &&
+       git init repo &&
+       >"repo/[bracket]" &&
+       git -C repo add "[bracket]" &&
+       test_tick &&
+       git -C repo commit -m bracket &&
+       git -C repo rev-list HEAD -- "[bracket]" >expect &&
+
+       git -C repo submodule add ../submodule &&
+       test_tick &&
+       git -C repo commit -m submodule &&
+
+       git -C repo rev-list HEAD -- "[bracket]" >actual &&
+       test_cmp expect actual
+'
+
 test_done