git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
blob 6cdbe4747aa837376fd01c94420beb1bd1bb6d56 3861 bytes (raw)
name: t/t4208-log-magic-pathspec.sh 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
 
#!/bin/sh

test_description='magic pathspec tests using git-log'

. ./test-lib.sh

test_expect_success 'setup' '
	test_commit initial &&
	test_tick &&
	git commit --allow-empty -m empty &&
	mkdir sub
'

test_expect_success '"git log :/" should not be ambiguous' '
	git log :/
'

test_expect_success '"git log :/a" should be ambiguous (applied both rev and worktree)' '
	: >a &&
	test_must_fail git log :/a 2>error &&
	test_i18ngrep ambiguous error
'

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
'

test_expect_success '"git log :/any/path/" should not segfault' '
	test_must_fail git log :/any/path/
'

# This differs from the ":/a" check above in that :/in looks like a pathspec,
# but doesn't match an actual file.
test_expect_success '"git log :/in" should not be ambiguous' '
	git log :/in
'

test_expect_success '"git log :" should be ambiguous' '
	test_must_fail git log : 2>error &&
	test_i18ngrep ambiguous error
'

test_expect_success 'git log -- :' '
	git log -- :
'

test_expect_success 'git log HEAD -- :/' '
	initial=$(git rev-parse --short HEAD^) &&
	cat >expected <<-EOF &&
	$initial initial
	EOF
	(cd sub && git log --oneline HEAD -- :/ >../actual) &&
	test_cmp expected actual
'

test_expect_success '"git log :^sub" is not ambiguous' '
	git log :^sub
'

test_expect_success '"git log :^does-not-exist" does not match anything' '
	test_must_fail git log :^does-not-exist
'

test_expect_success  '"git log :!" behaves the same as :^' '
	git log :!sub &&
	test_must_fail git log :!does-not-exist
'

test_expect_success '"git log :(exclude)sub" is not ambiguous' '
	git log ":(exclude)sub"
'

test_expect_success '"git log :(exclude)sub --" must resolve as an object' '
	test_must_fail git log ":(exclude)sub" --
'

test_expect_success '"git log :(unknown-magic) complains of bogus magic' '
	test_must_fail git log ":(unknown-magic)" 2>error &&
	test_i18ngrep pathspec.magic error
'

test_expect_success 'command line pathspec parsing for "git log"' '
	git reset --hard &&
	>a &&
	git add a &&
	git commit -m "add an empty a" --allow-empty &&
	echo 1 >a &&
	git commit -a -m "update a to 1" &&
	git checkout HEAD^ &&
	echo 2 >a &&
	git commit -a -m "update a to 2" &&
	test_must_fail git merge master &&
	git add a &&
	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

debug log:

solving 6cdbe4747a ...
found 6cdbe4747a in https://80x24.org/mirrors/git.git

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).