diff options
author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2014-02-19 06:21:51 +0000 |
---|---|---|
committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2014-02-19 06:21:51 +0000 |
commit | bd960159ddd97c1805002d6f8f2024874080ff0d (patch) | |
tree | 6fbc74be45905f0e31b6aae3e9f6606015c7e0f6 /tests/main.cpp | |
parent | cb99aa5065886035d762dbf7640dcc44c791fb2d (diff) |
tests: Write temporary files to executable folder.
Temp folder is the root folder on Windows; writing to the folder may require administrator rights.
We can't use current folder for temporaries because tests from different configurations can be running
in parallel, but executable folder is always safe since we only run each executable once.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@984 99668b35-9821-0410-8761-19e4c4f06640
Diffstat (limited to 'tests/main.cpp')
-rw-r--r-- | tests/main.cpp | 23 |
1 files changed, 18 insertions, 5 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 |