|
| 1 | +#include "clar_libgit2.h" |
| 2 | +#include "trace.h" |
| 3 | + |
| 4 | +static int written = 0; |
| 5 | + |
| 6 | +static void trace_callback(git_trace_level_t level, const char *message) |
| 7 | +{ |
| 8 | + cl_assert(strcmp(message, "Hello world!") == 0); |
| 9 | + |
| 10 | + written = 1; |
| 11 | +} |
| 12 | + |
| 13 | +void test_trace_trace__initialize(void) |
| 14 | +{ |
| 15 | + git_trace_set(GIT_TRACE_INFO, trace_callback); |
| 16 | + written = 0; |
| 17 | +} |
| 18 | + |
| 19 | +void test_trace_trace__cleanup(void) |
| 20 | +{ |
| 21 | + git_trace_set(GIT_TRACE_NONE, NULL); |
| 22 | +} |
| 23 | + |
| 24 | +void test_trace_trace__sets(void) |
| 25 | +{ |
| 26 | +#ifdef GIT_TRACE |
| 27 | + cl_assert(git_trace_level() == GIT_TRACE_INFO); |
| 28 | +#endif |
| 29 | +} |
| 30 | + |
| 31 | +void test_trace_trace__can_reset(void) |
| 32 | +{ |
| 33 | +#ifdef GIT_TRACE |
| 34 | + cl_assert(git_trace_level() == GIT_TRACE_INFO); |
| 35 | + cl_git_pass(git_trace_set(GIT_TRACE_ERROR, trace_callback)); |
| 36 | + |
| 37 | + cl_assert(written == 0); |
| 38 | + git_trace(GIT_TRACE_INFO, "Hello %s!", "world"); |
| 39 | + cl_assert(written == 0); |
| 40 | + |
| 41 | + git_trace(GIT_TRACE_ERROR, "Hello %s!", "world"); |
| 42 | + cl_assert(written == 1); |
| 43 | +#endif |
| 44 | +} |
| 45 | + |
| 46 | +void test_trace_trace__can_unset(void) |
| 47 | +{ |
| 48 | +#ifdef GIT_TRACE |
| 49 | + cl_assert(git_trace_level() == GIT_TRACE_INFO); |
| 50 | + cl_git_pass(git_trace_set(GIT_TRACE_NONE, NULL)); |
| 51 | + |
| 52 | + cl_assert(git_trace_level() == GIT_TRACE_NONE); |
| 53 | + |
| 54 | + cl_assert(written == 0); |
| 55 | + git_trace(GIT_TRACE_FATAL, "Hello %s!", "world"); |
| 56 | + cl_assert(written == 0); |
| 57 | +#endif |
| 58 | +} |
| 59 | + |
| 60 | +void test_trace_trace__skips_higher_level(void) |
| 61 | +{ |
| 62 | +#ifdef GIT_TRACE |
| 63 | + cl_assert(written == 0); |
| 64 | + git_trace(GIT_TRACE_DEBUG, "Hello %s!", "world"); |
| 65 | + cl_assert(written == 0); |
| 66 | +#endif |
| 67 | +} |
| 68 | + |
| 69 | +void test_trace_trace__writes(void) |
| 70 | +{ |
| 71 | +#ifdef GIT_TRACE |
| 72 | + cl_assert(written == 0); |
| 73 | + git_trace(GIT_TRACE_INFO, "Hello %s!", "world"); |
| 74 | + cl_assert(written == 1); |
| 75 | +#endif |
| 76 | +} |
| 77 | + |
| 78 | +void test_trace_trace__writes_lower_level(void) |
| 79 | +{ |
| 80 | +#ifdef GIT_TRACE |
| 81 | + cl_assert(written == 0); |
| 82 | + git_trace(GIT_TRACE_ERROR, "Hello %s!", "world"); |
| 83 | + cl_assert(written == 1); |
| 84 | +#endif |
| 85 | +} |
| 86 | + |
0 commit comments