Commit ab7941b5 by Vicent Marti

test: Properly show error messages

parent 5cf1f909
...@@ -146,6 +146,11 @@ GIT_EXTERN(const char *) git_lasterror(void); ...@@ -146,6 +146,11 @@ GIT_EXTERN(const char *) git_lasterror(void);
*/ */
GIT_EXTERN(const char *) git_strerror(int num); GIT_EXTERN(const char *) git_strerror(int num);
/**
* Clear the latest library error
*/
GIT_EXTERN(void) git_clearerror(void);
/** @} */ /** @} */
GIT_END_DECL GIT_END_DECL
#endif #endif
...@@ -108,6 +108,13 @@ int git__throw(int error, const char *msg, ...) ...@@ -108,6 +108,13 @@ int git__throw(int error, const char *msg, ...)
const char *git_lasterror(void) const char *git_lasterror(void)
{ {
if (!g_last_error[0])
return NULL;
return g_last_error; return g_last_error;
} }
void git_clearerror(void)
{
g_last_error[0] = '\0';
}
...@@ -123,8 +123,7 @@ int gitfo_isdir(const char *path) ...@@ -123,8 +123,7 @@ int gitfo_isdir(const char *path)
struct stat st; struct stat st;
int len, stat_error; int len, stat_error;
if (!path) assert(path);
return git__throw(GIT_ENOTFOUND, "No path given to gitfo_isdir");
len = strlen(path); len = strlen(path);
...@@ -140,10 +139,10 @@ int gitfo_isdir(const char *path) ...@@ -140,10 +139,10 @@ int gitfo_isdir(const char *path)
} }
if (stat_error < GIT_SUCCESS) if (stat_error < GIT_SUCCESS)
return git__throw(GIT_ENOTFOUND, "%s does not exist", path); return GIT_ERROR;
if (!S_ISDIR(st.st_mode)) if (!S_ISDIR(st.st_mode))
return git__throw(GIT_ENOTFOUND, "%s is not a directory", path); return GIT_ERROR;
return GIT_SUCCESS; return GIT_SUCCESS;
} }
......
...@@ -77,13 +77,16 @@ void git_test__init(git_test *t, const char *name, const char *description) ...@@ -77,13 +77,16 @@ void git_test__init(git_test *t, const char *name, const char *description)
static void fail_test(git_test *tc, const char *file, int line, const char *message) static void fail_test(git_test *tc, const char *file, int line, const char *message)
{ {
char buf[1024]; char buf[1024];
const char *last_error = git_lasterror();
snprintf(buf, 1024, "%s:%d", file, line); snprintf(buf, 1024, "%s:%d", file, line);
tc->failed = 1; tc->failed = 1;
tc->message = strdup(message); tc->message = strdup(message);
tc->failed_pos = strdup(buf); tc->failed_pos = strdup(buf);
tc->error_message = strdup(git_lasterror());
if (last_error)
tc->error_message = strdup(last_error);
if (tc->jump != 0) if (tc->jump != 0)
longjmp(*(tc->jump), 0); longjmp(*(tc->jump), 0);
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#define BEGIN_TEST(TNAME, DESC) \ #define BEGIN_TEST(TNAME, DESC) \
static void _gittest__##TNAME(git_test *_gittest) { \ static void _gittest__##TNAME(git_test *_gittest) { \
git_test__init(_gittest, #TNAME, DESC); \ git_test__init(_gittest, #TNAME, DESC); \
git_clearerror();\
{\ {\
#define END_TEST }} #define END_TEST }}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment