t/t7407: demonstrate that the command called by 'submodule foreach' loses stdin
The user-supplied command spawned by 'submodule foreach' loses its connection to the original standard input. Instead, it is connected to the output of a pipe within the git-submodule script. This can cause a problem if the command requires reading from stdin or if it changes its behavior based on whether stdin is a tty or not (e.g. git shortlog). Demonstrate this flaw. Signed-off-by: Brandon Casey <drafnel@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
98dbe63dbc
commit
91cd7e4b42
@ -288,4 +288,22 @@ test_expect_success 'use "update --recursive nested1" to checkout all submodules
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_failure 'command passed to foreach retains notion of stdin' '
|
||||
(
|
||||
cd super &&
|
||||
git submodule foreach echo success >../expected &&
|
||||
yes | git submodule foreach "read y && test \"x\$y\" = xy && echo success" >../actual
|
||||
) &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_failure 'command passed to foreach --recursive retains notion of stdin' '
|
||||
(
|
||||
cd clone2 &&
|
||||
git submodule foreach --recursive echo success >../expected &&
|
||||
yes | git submodule foreach --recursive "read y && test \"x\$y\" = xy && echo success" >../actual
|
||||
) &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user