diff --git a/tests/main.cpp b/tests/main.cpp
index 712edda304ab94f0b83485ed03d5128fef627572..352b58bb0f89b73ae1c1aac1753464b9470faed0 100644
--- a/tests/main.cpp
+++ b/tests/main.cpp
@@ -41,7 +41,7 @@ static void* custom_allocate(size_t size)
 	else
 	{
 		void* ptr = memory_allocate(size);
-		assert(ptr);
+		if (!ptr) return 0;
 
 		g_memory_total_size += memory_size(ptr);
 		g_memory_total_count++;
diff --git a/tests/test_document.cpp b/tests/test_document.cpp
index 9860737fb0f21ffcc5b548e2e1cbf7c2053eb71d..c7ceb8fbd3d8021ce7498dcf868ad2a6e31c43aa 100644
--- a/tests/test_document.cpp
+++ b/tests/test_document.cpp
@@ -383,6 +383,23 @@ TEST(document_load_file_wide_out_of_memory)
 	CHECK(result.status == status_out_of_memory || result.status == status_file_not_found);
 }
 
+#if defined(__linux__) || defined(__APPLE__)
+TEST(document_load_file_special_folder)
+{
+	xml_document doc;
+	xml_parse_result result = doc.load_file(".");
+	// status_out_of_memory is somewhat counter-intuitive but on Linux ftell returns LONG_MAX for directories
+	CHECK(result.status == status_file_not_found || result.status == status_io_error || result.status == status_out_of_memory);
+}
+
+TEST(document_load_file_special_device)
+{
+	xml_document doc;
+	xml_parse_result result = doc.load_file("/dev/tty");
+	CHECK(result.status == status_file_not_found || result.status == status_io_error);
+}
+#endif
+
 TEST_XML(document_save, "<node/>")
 {
 	xml_writer_string writer;