tests: Add a test that verifies absence of file leaks
If an out of memory error happens in load_file there's a danger of leaking the FILE object. Since there is a limited supply of the objects we can easily test that the leak does not happen.
This commit is contained in:
parent
2537cccad3
commit
c5d07e2c28
@ -302,11 +302,33 @@ TEST(document_load_file_error)
|
||||
pugi::xml_document doc;
|
||||
|
||||
CHECK(doc.load_file("filedoesnotexist").status == status_file_not_found);
|
||||
}
|
||||
|
||||
TEST(document_load_file_out_of_memory)
|
||||
{
|
||||
test_runner::_memory_fail_threshold = 1;
|
||||
|
||||
pugi::xml_document doc;
|
||||
CHECK_ALLOC_FAIL(CHECK(doc.load_file("tests/data/small.xml").status == status_out_of_memory));
|
||||
}
|
||||
|
||||
TEST(document_load_file_out_of_memory_file_leak)
|
||||
{
|
||||
test_runner::_memory_fail_threshold = 1;
|
||||
|
||||
pugi::xml_document doc;
|
||||
|
||||
for (int i = 0; i < 256; ++i)
|
||||
{
|
||||
CHECK_ALLOC_FAIL(CHECK(doc.load_file("tests/data/small.xml").status == status_out_of_memory));
|
||||
}
|
||||
|
||||
test_runner::_memory_fail_threshold = 0;
|
||||
|
||||
CHECK(doc.load_file("tests/data/small.xml"));
|
||||
CHECK_NODE(doc, STR("<node />"));
|
||||
}
|
||||
|
||||
TEST(document_load_file_error_previous)
|
||||
{
|
||||
pugi::xml_document doc;
|
||||
|
Loading…
Reference in New Issue
Block a user