]>
Commit | Line | Data |
---|---|---|
e3c47510 RB |
1 | #include "clar_libgit2.h" |
2 | #include "common.h" | |
3 | #include "util.h" | |
4 | #include "posix.h" | |
5 | ||
e3c47510 RB |
6 | void test_core_errors__new_school(void) |
7 | { | |
8 | char *str_in_error; | |
9 | ||
3fbcac89 VM |
10 | giterr_clear(); |
11 | cl_assert(giterr_last() == NULL); | |
e3c47510 RB |
12 | |
13 | giterr_set_oom(); /* internal fn */ | |
14 | ||
3fbcac89 VM |
15 | cl_assert(giterr_last() != NULL); |
16 | cl_assert(giterr_last()->klass == GITERR_NOMEMORY); | |
17 | str_in_error = strstr(giterr_last()->message, "memory"); | |
e3c47510 RB |
18 | cl_assert(str_in_error != NULL); |
19 | ||
3fbcac89 | 20 | giterr_clear(); |
e3c47510 RB |
21 | |
22 | giterr_set(GITERR_REPOSITORY, "This is a test"); /* internal fn */ | |
23 | ||
3fbcac89 VM |
24 | cl_assert(giterr_last() != NULL); |
25 | str_in_error = strstr(giterr_last()->message, "This is a test"); | |
e3c47510 RB |
26 | cl_assert(str_in_error != NULL); |
27 | ||
3fbcac89 VM |
28 | giterr_clear(); |
29 | cl_assert(giterr_last() == NULL); | |
e3c47510 | 30 | |
1a6e8f8a | 31 | do { |
e3c47510 | 32 | struct stat st; |
1a6e8f8a | 33 | memset(&st, 0, sizeof(st)); |
6654dbe3 | 34 | cl_assert(p_lstat("this_file_does_not_exist", &st) < 0); |
17bd6de3 | 35 | GIT_UNUSED(st); |
1a6e8f8a | 36 | } while (false); |
e3c47510 RB |
37 | giterr_set(GITERR_OS, "stat failed"); /* internal fn */ |
38 | ||
3fbcac89 VM |
39 | cl_assert(giterr_last() != NULL); |
40 | str_in_error = strstr(giterr_last()->message, "stat failed"); | |
e3c47510 RB |
41 | cl_assert(str_in_error != NULL); |
42 | cl_assert(git__prefixcmp(str_in_error, "stat failed: ") == 0); | |
43 | cl_assert(strlen(str_in_error) > strlen("stat failed: ")); | |
44 | ||
45 | #ifdef GIT_WIN32 | |
3fbcac89 | 46 | giterr_clear(); |
e3c47510 RB |
47 | |
48 | /* The MSDN docs use this to generate a sample error */ | |
49 | cl_assert(GetProcessId(NULL) == 0); | |
50 | giterr_set(GITERR_OS, "GetProcessId failed"); /* internal fn */ | |
51 | ||
3fbcac89 VM |
52 | cl_assert(giterr_last() != NULL); |
53 | str_in_error = strstr(giterr_last()->message, "GetProcessId failed"); | |
e3c47510 RB |
54 | cl_assert(str_in_error != NULL); |
55 | cl_assert(git__prefixcmp(str_in_error, "GetProcessId failed: ") == 0); | |
56 | cl_assert(strlen(str_in_error) > strlen("GetProcessId failed: ")); | |
57 | #endif | |
58 | ||
3fbcac89 | 59 | giterr_clear(); |
e3c47510 | 60 | } |