summaryrefslogtreecommitdiff
path: root/tests-clar/clar_helpers.c
diff options
context:
space:
mode:
authorBen Straub <bstraub@github.com>2012-06-08 11:24:37 -0700
committerBen Straub <bstraub@github.com>2012-06-08 11:24:37 -0700
commite272efcb20332ed36a6316c4152f50f9dbcf2a00 (patch)
tree7bdfbb76e18a6e9c89684942dbd6daef0e38feae /tests-clar/clar_helpers.c
parent3f0358604e48432b53abf097aa3ab6a1e3639813 (diff)
downloadlibgit2-e272efcb20332ed36a6316c4152f50f9dbcf2a00.tar.gz
Tests: wrap 'getenv' and friends for Win32 tests.
Diffstat (limited to 'tests-clar/clar_helpers.c')
-rw-r--r--tests-clar/clar_helpers.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests-clar/clar_helpers.c b/tests-clar/clar_helpers.c
index d180285b8..23765d9e5 100644
--- a/tests-clar/clar_helpers.c
+++ b/tests-clar/clar_helpers.c
@@ -48,6 +48,62 @@ void cl_git_rewritefile(const char *filename, const char *new_content)
cl_git_write2file(filename, new_content, O_WRONLY | O_CREAT | O_TRUNC);
}
+#ifdef GIT_WIN32
+
+#include "win32/utf-conv.h"
+
+char *cl_getenv(const char *name)
+{
+ wchar_t *name_utf16 = gitwin_to_utf16(name);
+ DWORD value_len, alloc_len;
+ wchar_t *value_utf16;
+ char *value_utf8;
+
+ cl_assert(name_utf16);
+ alloc_len = GetEnvironmentVariableW(name_utf16, NULL, 0);
+ if (alloc_len <= 0)
+ return NULL;
+
+ cl_assert(value_utf16 = git__calloc(alloc_len, sizeof(wchar_t)));
+
+ value_len = GetEnvironmentVariableW(name_utf16, value_utf16, alloc_len);
+ cl_assert_equal_i(value_len, alloc_len - 1);
+
+ cl_assert(value_utf8 = gitwin_from_utf16(value_utf16));
+
+ git__free(value_utf16);
+
+ return value_utf8;
+}
+
+int cl_setenv(const char *name, const char *value)
+{
+ wchar_t *name_utf16 = gitwin_to_utf16(name);
+ wchar_t *value_utf16 = value ? gitwin_to_utf16(value) : NULL;
+
+ cl_assert(name_utf16);
+ cl_assert(SetEnvironmentVariableW(name_utf16, value_utf16));
+
+ git__free(name_utf16);
+ git__free(value_utf16);
+
+ return 0;
+
+}
+#else
+
+#include <stdlib.h>
+char *cl_getenv(const char *name)
+{
+ return getenv(name);
+}
+
+int cl_setenv(const char *name, const char *value)
+{
+ return (value == NULL) ? unsetenv(name) : setenv(name, value, 1);
+}
+#endif
+
static const char *_cl_sandbox = NULL;
static git_repository *_cl_repo = NULL;
@@ -98,3 +154,4 @@ void cl_git_sandbox_cleanup(void)
_cl_sandbox = NULL;
}
}
+