diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/main.cpp | 23 | ||||
-rw-r--r-- | tests/test.hpp | 2 | ||||
-rw-r--r-- | tests/test_document.cpp | 27 |
3 files changed, 26 insertions, 26 deletions
diff --git a/tests/main.cpp b/tests/main.cpp index 95e1243..770c693 100644 --- a/tests/main.cpp +++ b/tests/main.cpp @@ -6,6 +6,8 @@ #include <float.h> #include <assert.h> +#include <string> + #ifndef PUGIXML_NO_EXCEPTIONS # include <exception> #endif @@ -20,6 +22,7 @@ test_runner* test_runner::_tests = 0; size_t test_runner::_memory_fail_threshold = 0; jmp_buf test_runner::_failure_buffer; const char* test_runner::_failure_message; +const char* test_runner::_temp_path; static size_t g_memory_total_size = 0; static size_t g_memory_total_count = 0; @@ -134,15 +137,18 @@ void std::exception::_Raise() const } #endif -#ifdef _WIN32_WCE -int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) -#else -int main() -#endif +int main(int, char** argv) { #ifdef __BORLANDC__ _control87(MCW_EM | PC_53, MCW_EM | MCW_PC); #endif + + // setup temp path as the executable folder + std::string temp = argv[0]; + std::string::size_type slash = temp.find_last_of("\\/"); + temp.erase((slash != std::string::npos) ? slash + 1 : 0); + + test_runner::_temp_path = temp.c_str(); replace_memory_management(); @@ -166,3 +172,10 @@ int main() return failed; } + +#ifdef _WIN32_WCE +int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + return main(1, ""); +} +#endif diff --git a/tests/test.hpp b/tests/test.hpp index ab0f36e..26260ad 100644 --- a/tests/test.hpp +++ b/tests/test.hpp @@ -25,6 +25,8 @@ struct test_runner static size_t _memory_fail_threshold; static jmp_buf _failure_buffer; static const char* _failure_message; + + static const char* _temp_path; }; bool test_string_equal(const pugi::char_t* lhs, const pugi::char_t* rhs); diff --git a/tests/test_document.cpp b/tests/test_document.cpp index e6c7b00..ecca89c 100644 --- a/tests/test_document.cpp +++ b/tests/test_document.cpp @@ -408,35 +408,20 @@ TEST_XML(document_save_declaration_latin1, "<node/>") CHECK(writer.as_narrow() == "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<node />\n"); } -#define USE_MKSTEMP defined(__unix) || defined(__QNX__) || defined(ANDROID) - struct temp_file { char path[512]; - int fd; - temp_file(): fd(0) + temp_file() { - #if USE_MKSTEMP - strcpy(path, "/tmp/pugiXXXXXX"); - - fd = mkstemp(path); - CHECK(fd != -1); - #elif defined(__CELLOS_LV2__) || defined(_WIN32_WCE) - path[0] = 0; // no temporary file support - #else - tmpnam(path); - #endif + static int index = 0; + sprintf(path, "%stempfile%d", test_runner::_temp_path, index++); } ~temp_file() { - #ifndef _WIN32_WCE + #ifndef _WIN32_WCE CHECK(unlink(path) == 0); - #endif - - #if USE_MKSTEMP - CHECK(close(fd) == 0); #endif } }; @@ -456,7 +441,7 @@ TEST_XML(document_save_file_wide, "<node/>") temp_file f; // widen the path - wchar_t wpath[32]; + wchar_t wpath[sizeof(f.path)]; std::copy(f.path, f.path + strlen(f.path) + 1, wpath + 0); CHECK(doc.save_file(wpath)); @@ -486,7 +471,7 @@ TEST_XML(document_save_file_wide_text, "<node/>") temp_file f; // widen the path - wchar_t wpath[32]; + wchar_t wpath[sizeof(f.path)]; std::copy(f.path, f.path + strlen(f.path) + 1, wpath + 0); CHECK(doc.save_file(wpath, STR(""), pugi::format_no_declaration | pugi::format_save_file_text)); |