diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2015-08-04 00:50:27 +0300 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2015-08-04 02:44:51 +0300 |
commit | ef4857c2b3d4a61fd1d840199afc92eaf2e15345 (patch) | |
tree | 2e02b7fcc28a00c0eede602b8880b83a9fd35c77 /tests | |
parent | 854b701c8a799a484ef48d8b595601ab29876b57 (diff) |
errors: tighten up git_error_state OOMs a bit more
When an error state is an OOM, make sure that we treat is specially
and do not try to free it.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/core/errors.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/tests/core/errors.c b/tests/core/errors.c index 25bbbd5f6..ab18951a6 100644 --- a/tests/core/errors.c +++ b/tests/core/errors.c @@ -93,23 +93,44 @@ void test_core_errors__restore(void) giterr_clear(); cl_assert(giterr_last() == NULL); - cl_assert_equal_i(0, giterr_capture(&err_state, 0)); + cl_assert_equal_i(0, giterr_state_capture(&err_state, 0)); memset(&err_state, 0x0, sizeof(git_error_state)); giterr_set(42, "Foo: %s", "bar"); - cl_assert_equal_i(-1, giterr_capture(&err_state, -1)); + cl_assert_equal_i(-1, giterr_state_capture(&err_state, -1)); cl_assert(giterr_last() == NULL); giterr_set(99, "Bar: %s", "foo"); - giterr_restore(&err_state); + giterr_state_restore(&err_state); cl_assert_equal_i(42, giterr_last()->klass); cl_assert_equal_s("Foo: bar", giterr_last()->message); } +void test_core_errors__free_state(void) +{ + git_error_state err_state = {0}; + + giterr_clear(); + + giterr_set(42, "Foo: %s", "bar"); + cl_assert_equal_i(-1, giterr_state_capture(&err_state, -1)); + + giterr_set(99, "Bar: %s", "foo"); + + giterr_state_free(&err_state); + + cl_assert_equal_i(99, giterr_last()->klass); + cl_assert_equal_s("Bar: foo", giterr_last()->message); + + giterr_state_restore(&err_state); + + cl_assert(giterr_last() == NULL); +} + void test_core_errors__restore_oom(void) { git_error_state err_state = {0}; @@ -121,11 +142,13 @@ void test_core_errors__restore_oom(void) oom_error = giterr_last(); cl_assert(oom_error); - cl_assert_equal_i(-1, giterr_capture(&err_state, -1)); + cl_assert_equal_i(-1, giterr_state_capture(&err_state, -1)); cl_assert(giterr_last() == NULL); + cl_assert_equal_i(GITERR_NOMEMORY, err_state.error_msg.klass); + cl_assert_equal_s("Out of memory", err_state.error_msg.message); - giterr_restore(&err_state); + giterr_state_restore(&err_state); cl_assert(giterr_last()->klass == GITERR_NOMEMORY); cl_assert_(giterr_last() == oom_error, "static oom error not restored"); |