summaryrefslogtreecommitdiff
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
parent8ffc54943f06439c47989e014b8d94d0c71f9ead (diff)
Make directory handling cross-platform in unit-tests.
-rw-r--r--test/drumkit_creator.cc20
-rw-r--r--test/scopedfile.cc11
2 files changed, 29 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);
diff --git a/test/scopedfile.cc b/test/scopedfile.cc
index e63972e..b03a2bc 100644
--- a/test/scopedfile.cc
+++ b/test/scopedfile.cc
@@ -31,6 +31,11 @@
#include <cpp11fix.h>
+#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif
+
struct Pimpl
{
std::string filename;
@@ -40,8 +45,14 @@ struct Pimpl
ScopedFile::ScopedFile(const std::string& data)
: pimpl(std::make_unique<struct Pimpl>())
{
+#ifndef _WIN32
char templ[] = "/tmp/dg-scoped-file-XXXXXX"; // buffer for filename
pimpl->fd = mkstemp(templ);
+#else
+ char templ[] = "dg-scoped-file-XXXXXX"; // buffer for filename
+ _mktemp_s(templ);
+ pimpl->fd = open(templ);
+#endif
pimpl->filename = templ;
auto sz = write(pimpl->fd, data.data(), data.size());
(void)sz;