Browse Source

tests: fix Windows build — SKIP fork-based e2e, cross-platform mkdtemp/setenv

proxy
evgeny 2 weeks ago
parent
commit
d1432b7d19
  1. 5
      tests/test_call.c
  2. 5
      tests/test_call_headless.c
  3. 3
      tests/test_chat_join.c
  4. 13
      tests/test_chat_join_e2e.c
  5. 9
      tests/test_dm_e2e.c
  6. 5
      tests/test_radio.c
  7. 5
      tests/test_radio_headless.c
  8. 5
      tests/test_radio_mesh.c
  9. 10
      tests/test_utils.h

5
tests/test_call.c

@ -25,6 +25,7 @@
#include "../lib/debug_config.h"
#include "../lib/mem.h"
#include "../lib/platform_compat.h"
#include "test_utils.h"
#include <sqlite3.h>
#define OPENSSL_API_COMPAT 0x10100000L
@ -408,8 +409,8 @@ int main(int argc, char** argv) {
srand((unsigned)time(NULL));
char dir[512]; snprintf(dir, sizeof(dir), "/tmp/utun_call_XXXXXX");
if (!mkdtemp(dir)) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
setenv("UTUN_TEST_DIR", dir, 1);
if (test_mkdtemp(dir) != 0) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
test_setenv("UTUN_TEST_DIR", dir, 1);
fill_shared(56000 + (getpid() % 2000));
write_configs(dir);

5
tests/test_call_headless.c

@ -29,6 +29,7 @@
#include "../lib/mem.h"
#include "../lib/socket_compat.h"
#include "../lib/platform_compat.h"
#include "test_utils.h"
#include <sqlite3.h>
#define OPENSSL_API_COMPAT 0x10100000L
@ -456,8 +457,8 @@ int main(int argc, char** argv) {
srand((unsigned)time(NULL));
char dir[512]; snprintf(dir, sizeof(dir), "/tmp/utun_call_hl_XXXXXX");
if (!mkdtemp(dir)) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
setenv("UTUN_TEST_DIR", dir, 1);
if (test_mkdtemp(dir) != 0) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
test_setenv("UTUN_TEST_DIR", dir, 1);
fill_shared(56000 + (getpid() % 2000));
write_configs(dir);

3
tests/test_chat_join.c

@ -23,6 +23,7 @@
#include "../lib/u_async.h"
#include "../lib/debug_config.h"
#include "../lib/mem.h"
#include "test_utils.h"
#include <sqlite3.h>
#define OPENSSL_API_COMPAT 0x10100000L
@ -558,7 +559,7 @@ int main(void) {
srand((unsigned)time(NULL));
printf("=== test_chat_join ===\n");
{ char t[256] = "/tmp/utun_cj_XXXXXX";
(void)!mkdtemp(t); snprintf(g_tdir, sizeof(g_tdir), "%s", t); }
(void)test_mkdtemp(t); snprintf(g_tdir, sizeof(g_tdir), "%s", t); }
g_ua = uasync_create();
if (!g_ua) { printf("FAIL: uasync_create\n"); return 1; }

13
tests/test_chat_join_e2e.c

@ -38,8 +38,19 @@
#include <string.h>
#include <stdarg.h>
#include <time.h>
#ifndef _WIN32
#include <unistd.h>
#include <sys/wait.h>
#endif
#ifdef _WIN32
int main(void) {
printf("[SKIP] test_chat_join_e2e — fork() not available on Windows\n");
return 0;
}
#else
#define POLL_MS 5
#define CH_NAME "test-channel"
@ -481,3 +492,5 @@ int main(int argc, char** argv) {
}
return parent_main();
}
#endif /* !_WIN32 */

9
tests/test_dm_e2e.c

@ -26,6 +26,7 @@
#include "../lib/debug_config.h"
#include "../lib/mem.h"
#include "../lib/platform_compat.h"
#include "test_utils.h"
#include <sqlite3.h>
#define OPENSSL_API_COMPAT 0x10100000L
@ -497,8 +498,8 @@ int main(int argc, char** argv) {
srand((unsigned)time(NULL));
char dir[512]; snprintf(dir, sizeof(dir), "/tmp/utun_dm_e2e_XXXXXX");
if (!mkdtemp(dir)) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
setenv("UTUN_TEST_DIR", dir, 1);
if (test_mkdtemp(dir) != 0) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
test_setenv("UTUN_TEST_DIR", dir, 1);
fill_shared(58000 + (getpid() % 2000));
write_configs(dir);
@ -551,8 +552,8 @@ int main(int argc, char** argv) {
/* сценарий 2: отдельная топология (свежие ключи/БД) */
char dir2[512]; snprintf(dir2, sizeof(dir2), "/tmp/utun_dm_e2e2_XXXXXX");
if (!mkdtemp(dir2)) { fprintf(stderr, "mkdtemp dir2 failed\n"); return 1; }
setenv("UTUN_TEST_DIR", dir2, 1);
if (test_mkdtemp(dir2) != 0) { fprintf(stderr, "mkdtemp dir2 failed\n"); return 1; }
test_setenv("UTUN_TEST_DIR", dir2, 1);
fill_shared(70000 + (getpid() % 2000));
write_configs(dir2);

5
tests/test_radio.c

@ -26,6 +26,7 @@
#include "../lib/debug_config.h"
#include "../lib/mem.h"
#include "../lib/platform_compat.h"
#include "test_utils.h"
#include <sqlite3.h>
#define OPENSSL_API_COMPAT 0x10100000L
@ -388,8 +389,8 @@ int main(int argc, char** argv) {
srand((unsigned)time(NULL));
char dir[512]; snprintf(dir, sizeof(dir), "/tmp/utun_radio_XXXXXX");
if (!mkdtemp(dir)) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
setenv("UTUN_TEST_DIR", dir, 1);
if (test_mkdtemp(dir) != 0) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
test_setenv("UTUN_TEST_DIR", dir, 1);
fill_shared(58000 + (getpid() % 2000));
write_configs(dir);

5
tests/test_radio_headless.c

@ -27,6 +27,7 @@
#include "../lib/mem.h"
#include "../lib/socket_compat.h"
#include "../lib/platform_compat.h"
#include "test_utils.h"
#include <sqlite3.h>
#define OPENSSL_API_COMPAT 0x10100000L
@ -415,8 +416,8 @@ int main(int argc, char** argv) {
srand((unsigned)time(NULL));
char dir[512]; snprintf(dir, sizeof(dir), "/tmp/utun_radio_hl_XXXXXX");
if (!mkdtemp(dir)) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
setenv("UTUN_TEST_DIR", dir, 1);
if (test_mkdtemp(dir) != 0) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
test_setenv("UTUN_TEST_DIR", dir, 1);
fill_shared(59000 + (getpid() % 2000));
write_configs(dir);

5
tests/test_radio_mesh.c

@ -30,6 +30,7 @@
#include "../lib/debug_config.h"
#include "../lib/mem.h"
#include "../lib/platform_compat.h"
#include "test_utils.h"
#include <sqlite3.h>
#define OPENSSL_API_COMPAT 0x10100000L
@ -418,8 +419,8 @@ int main(int argc, char** argv) {
srand((unsigned)time(NULL));
char dir[512]; snprintf(dir, sizeof(dir), "/tmp/utun_radio_mesh_XXXXXX");
if (!mkdtemp(dir)) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
setenv("UTUN_TEST_DIR", dir, 1);
if (test_mkdtemp(dir) != 0) { fprintf(stderr, "mkdtemp failed\n"); return 1; }
test_setenv("UTUN_TEST_DIR", dir, 1);
fill_shared(59000 + (getpid() % 2000));
write_configs(dir);

10
tests/test_utils.h

@ -42,6 +42,12 @@ static inline int test_mkdtemp(char *template_str) {
return -1; // Failed after 100 attempts
}
// Cross-platform setenv for Windows (updates _environ, видим через getenv)
static inline int test_setenv(const char *name, const char *value, int overwrite) {
if (!overwrite && getenv(name)) return 0;
return _putenv_s(name, value); /* 0 = success, errno_t != 0 = error */
}
// Cross-platform unlink for Windows
static inline int test_unlink(const char *path) {
return _unlink(path);
@ -60,6 +66,10 @@ static inline int test_mkdtemp(char *template_str) {
return (mkdtemp(template_str) == NULL) ? -1 : 0;
}
static inline int test_setenv(const char *name, const char *value, int overwrite) {
return setenv(name, value, overwrite);
}
static inline int test_unlink(const char *path) {
return unlink(path);
}

Loading…
Cancel
Save