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:
parent
c4d9c506f7
commit
9042140097
@ -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);
|
||||
}
|
||||
|
||||
|
@ -55,13 +55,13 @@ test_expect_success 'dir-iterator should list files in the correct order' '
|
||||
test_expect_success 'begin should fail upon inexistent paths' '
|
||||
test_must_fail test-tool dir-iterator ./inexistent-path \
|
||||
>actual-inexistent-path-output &&
|
||||
echo "dir_iterator_begin failure: 2" >expected-inexistent-path-output &&
|
||||
echo "dir_iterator_begin failure: ENOENT" >expected-inexistent-path-output &&
|
||||
test_cmp expected-inexistent-path-output actual-inexistent-path-output
|
||||
'
|
||||
|
||||
test_expect_success 'begin should fail upon non directory paths' '
|
||||
test_must_fail test-tool dir-iterator ./dir/b >actual-non-dir-output &&
|
||||
echo "dir_iterator_begin failure: 20" >expected-non-dir-output &&
|
||||
echo "dir_iterator_begin failure: ENOTDIR" >expected-non-dir-output &&
|
||||
test_cmp expected-non-dir-output actual-non-dir-output
|
||||
'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user