test-dir-iterator: do not assume errno values
A few tests printed 'errno' as an integer and compared with hardcoded integers; this is obviously not portable. A two things to note are: - the string obtained by strerror() is not portable, and cannot be used for the purpose of these tests. - there unfortunately isn't a portable way to map error numbers to error names. As we only care about a few selected errors, just map the error number to the name before emitting for comparison. Reported-by: Randall S. Becker <rsbecker@nexbridge.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
@ -4,6 +4,15 @@
|
||||
#include "iterator.h"
|
||||
#include "dir-iterator.h"
|
||||
|
||||
static const char *error_name(int error_number)
|
||||
{
|
||||
switch (error_number) {
|
||||
case ENOENT: return "ENOENT";
|
||||
case ENOTDIR: return "ENOTDIR";
|
||||
default: return "ESOMETHINGELSE";
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* usage:
|
||||
* tool-test dir-iterator [--follow-symlinks] [--pedantic] directory_path
|
||||
@ -31,7 +40,7 @@ int cmd__dir_iterator(int argc, const char **argv)
|
||||
diter = dir_iterator_begin(path.buf, flags);
|
||||
|
||||
if (!diter) {
|
||||
printf("dir_iterator_begin failure: %d\n", errno);
|
||||
printf("dir_iterator_begin failure: %s\n", error_name(errno));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user