t0060: loosen overly strict expectations
commit371471cea38cb4b5834c9e5715e1fe633829004f
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Thu, 14 Jan 2016 06:48:27 +0000 (14 07:48 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 15 Jan 2016 17:26:20 +0000 (15 09:26 -0800)
tree41445d44e42f9ed1b37b3387713793eae73db0c5
parent7d1aaa684d42964b8b287b8c9450184dfd5bce85
t0060: loosen overly strict expectations

The dirname() tests file were developed and tested on only the five
platforms available to the developer at the time, namely: Linux (both 32
and 64bit), Windows XP 32-bit (MSVC), MinGW 32-bit and Cygwin 32-bit.

http://pubs.opengroup.org/onlinepubs/9699919799/functions/basename.html
(i.e. the POSIX spec) says, in part:

If the string pointed to by path consists entirely of the '/'
character, basename() shall return a pointer to the string "/".
If the string pointed to by path is exactly "//", it is
implementation-defined whether "/" or "//" is returned.

The thinking behind testing precise, OS-dependent output values was to
document that different setups produce different values. However, as the
test failures on MacOSX illustrated eloquently: hardcoding pretty much each
and every setup's expectations is pretty fragile.

This is not limited to the "//" vs "/" case, of course, other inputs are
also allowed to produce multiple outputs by the POSIX specs.

So let's just test for all allowed values and be done with it. This still
documents that Git cannot rely on one particular output value in those
cases, so the intention of the original tests is still met.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
test-path-utils.c