diff options
| -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)); | 
