summaryrefslogtreecommitdiff
path: root/test/drumkit_creator.cc
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2018-06-16 21:13:54 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2018-06-16 21:40:54 +0200
commitc102dc8c786ae3760b2ccdafb8d6429f801e59b1 (patch)
tree389388c81a89f0e2fbc1ef33b3583d2a8d2b7294 /test/drumkit_creator.cc
parent8ffc54943f06439c47989e014b8d94d0c71f9ead (diff)
Make directory handling cross-platform in unit-tests.
Diffstat (limited to 'test/drumkit_creator.cc')
-rw-r--r--test/drumkit_creator.cc20
1 files changed, 18 insertions, 2 deletions
diff --git a/test/drumkit_creator.cc b/test/drumkit_creator.cc
index 9fae6e3..c4d8ff1 100644
--- a/test/drumkit_creator.cc
+++ b/test/drumkit_creator.cc
@@ -37,6 +37,11 @@
#include <cstdlib>
#include <algorithm>
+#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif
+
DrumkitCreator::~DrumkitCreator()
{
for (const auto& file: created_files)
@@ -51,12 +56,16 @@ DrumkitCreator::~DrumkitCreator()
for (const auto& dir: created_directories)
{
+#ifndef _WIN32
auto error = rmdir(dir.c_str());
if (error) {
std::cerr << "Directory could not be deleted in DrumkitCreator destructor"
<< std::endl;
}
+#else
+ RemoveDirectory(dir.c_str());
+#endif
}
}
@@ -82,7 +91,7 @@ std::string DrumkitCreator::create(const DrumkitData& data)
{
throw "DrumkitData not valid";
}
-
+
return drumkit_filename;
}
@@ -256,9 +265,16 @@ bool DrumkitCreator::is_valid(const DrumkitData& data)
std::string DrumkitCreator::createTemporaryDirectory(const std::string& name)
{
+#ifndef _WIN32
std::string dir_template = "/tmp/drumgizmo_" + name + "XXXXXX";
const auto dir_name = mkdtemp(&dir_template[0]);
-
+#else
+ char temp_dir[MAX_PATH];
+ char dir_name[MAX_PATH];
+ GetTempPath(sizeof(temp_dir), temp_dir);
+ GetTempFileName(temp_dir, name.c_str(), 0, dir_name);
+ CreateDirectory(dir_name, 0);
+#endif
if (dir_name) {
created_directories.push_back(dir_name);
return std::string(dir_name);