Hi,
Jeff King wrote:
> On Tue, May 14, 2019 at 02:14:19AM +0000, brian m. carlson wrote:
>
>> On Mon, May 13, 2019 at 10:05:20PM -0400, Todd Zullinger wrote:
>>> diff --git a/t/test-lib.sh b/t/test-lib.sh
>>> index 908ddb9c46..599fd70e14 100644
>>> --- a/t/test-lib.sh
>>> +++ b/t/test-lib.sh
>>> @@ -1522,7 +1522,7 @@ test_lazy_prereq NOT_ROOT '
>>> '
>>>
>>> test_lazy_prereq JGIT '
>>> - type jgit
>>> + jgit --version
>>> '
>>
>> I think this is an improvement, not only because of the reasons you
>> mentioned, but because we remove the use of "type", which is not
>> guaranteed to be present in a POSIX shell.
>
> Isn't it?
I wondered the same thing, but I know I am not nearly as
familiar with the POSIX rules as any of you.
> I have always treated it as the most-portable option for this
> (compared to, say, `which`). It is in POSIX as a utility (albeit marked
> with XSI), which even says (in APPLICATION USAGE):
>
> Since type must be aware of the contents of the current shell
> execution environment (such as the lists of commands, functions, and
> built-ins processed by hash), it is always provided as a shell regular
> built-in.
>
> All that said, I think Todd's patch makes perfect sense even without
> wanting to avoid "type".
Yeah, `which` surely isn't a portable option. I presumed
`type` must be fairly widely available since it was in the
test suite since you added it way back in 212f2ffbf0 ("t:
add basic bitmap functionality tests", 2013-12-21).
I usually make use of `command -p -v $foo` in scripts that
need to be portable across systems. But I don't have access
to many esoteric systems.
Based on Junio's follow-up, I think we can avoid adding
anything to the commit message about the use of `type` here.
That way no one will take it as a sign that we should remove
other uses of it just for conformance. (I will send a
follow-up with an update based on Jonathan and Ævar's
comments.)
Thanks to all of you.
--
Todd