Skip to content

Commit bbb7c36

Browse files
committed
Unit test fixed
1 parent ad15eda commit bbb7c36

2 files changed

Lines changed: 68 additions & 29 deletions

File tree

test/sync/test_sync.c

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,25 @@
2222
#include <stdio.h>
2323
#include <stdlib.h>
2424
#include <string.h>
25-
#include <unistd.h>
2625
#include "sqlite-memory.h"
2726

27+
#ifdef _WIN32
28+
#include <io.h>
29+
#define unlink_p(path) _unlink(path)
30+
#ifndef TEST_TMP_DIR
31+
#define TEST_TMP_DIR "build"
32+
#endif
33+
#else
34+
#include <unistd.h>
35+
#define unlink_p(path) unlink(path)
36+
#ifndef TEST_TMP_DIR
37+
#define TEST_TMP_DIR "/tmp"
38+
#endif
39+
#endif
40+
2841
// Temporary database files (cleaned up at start and end)
29-
#define AGENT_A_DB "/tmp/agent_a_memory_test.db"
30-
#define AGENT_B_DB "/tmp/agent_b_memory_test.db"
42+
#define AGENT_A_DB TEST_TMP_DIR "/agent_a_memory_test.db"
43+
#define AGENT_B_DB TEST_TMP_DIR "/agent_b_memory_test.db"
3144

3245
// ============================================================================
3346
// Agent A content: James Webb Space Telescope (context: "space")
@@ -530,8 +543,8 @@ int main(void) {
530543
}
531544

532545
// Clean up stale databases from previous runs
533-
unlink(AGENT_A_DB);
534-
unlink(AGENT_B_DB);
546+
unlink_p(AGENT_A_DB);
547+
unlink_p(AGENT_B_DB);
535548

536549
printf("\nSync integration test: JWST (Agent A) + Great Barrier Reef (Agent B)\n");
537550
printf("=======================================================================\n\n");
@@ -566,8 +579,8 @@ int main(void) {
566579
// Cleanup
567580
if (db_a) sqlite3_close(db_a);
568581
if (db_b) sqlite3_close(db_b);
569-
unlink(AGENT_A_DB);
570-
unlink(AGENT_B_DB);
582+
unlink_p(AGENT_A_DB);
583+
unlink_p(AGENT_B_DB);
571584

572585
printf("\n=== Sync Test Results ===\n");
573586
printf("Tests run: %d\n", tests_run);

test/unittest.c

Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -389,12 +389,34 @@ TEST(dbmem_parse_mdx_keeps_import_export_prose_and_indented_code) {
389389
}
390390

391391
TEST(dbmem_parse_mdx_real_docs_file) {
392-
const char *path = "/Users/marco/SQLiteCloud/website/docs-website/content/docs/sqlite-cloud/multi-code-example.mdx";
393-
if (!dbmem_file_exists(path)) return;
394-
395-
int64_t len = 0;
396-
char *input = dbmem_file_read(path, &len);
397-
ASSERT(input != NULL);
392+
const char *input =
393+
"---\n"
394+
"title: Multi Code Component Examples\n"
395+
"description: Multi Code Component Examples\n"
396+
"slug: multicode\n"
397+
"---\n"
398+
"import MultiCode from '@commons-components/Code/MultiCode.astro';\n"
399+
"\n"
400+
"In this examples, we will show how to use the `MultiCode` component:\n"
401+
"\n"
402+
"---\n"
403+
"## First example\n"
404+
"\n"
405+
"export const WebliteSourceCode = `<script>\n"
406+
" async function searchData(event) {\n"
407+
" const query = document.getElementById('query').value;\n"
408+
" }\n"
409+
"</script>`;\n"
410+
"\n"
411+
"export const codeExamplesOne = [\n"
412+
" {\n"
413+
" sliderItem: \"Web\",\n"
414+
" codeLines: WebliteSourceCode,\n"
415+
" lang: \"html\",\n"
416+
" }\n"
417+
"];\n"
418+
"\n"
419+
"<MultiCode id=\"first\" copyCode={true} codeItems={codeExamplesOne} />\n";
398420

399421
dbmem_parse_settings settings = default_settings();
400422
settings.mdx_mode = true;
@@ -403,7 +425,7 @@ TEST(dbmem_parse_mdx_real_docs_file) {
403425
settings.callback = test_callback;
404426
settings.xdata = &ctx;
405427

406-
int rc = dbmem_parse(input, (size_t)len, &settings);
428+
int rc = dbmem_parse(input, strlen(input), &settings);
407429
ASSERT_EQ(rc, 0);
408430
ASSERT(ctx.count >= 1);
409431
ASSERT(test_ctx_contains(&ctx, "Multi Code Component Examples"));
@@ -412,7 +434,6 @@ TEST(dbmem_parse_mdx_real_docs_file) {
412434
ASSERT(!test_ctx_contains(&ctx, "WebliteSourceCode"));
413435
ASSERT(!test_ctx_contains(&ctx, "codeExamplesOne"));
414436

415-
dbmemory_free(input);
416437
free_test_ctx(&ctx);
417438
}
418439

@@ -1973,12 +1994,13 @@ TEST(sqlite_sync_directory_removes_deleted) {
19731994
sqlite3 *db = open_test_db();
19741995
ASSERT(db != NULL);
19751996

1976-
const char *test_dir = "/tmp/dbmem_test_sync_del";
1977-
const char *file_keep = "/tmp/dbmem_test_sync_del/keep.md";
1997+
const char *test_dir = TEST_TMP_DIR "/dbmem_test_sync_del";
1998+
const char *file_keep = TEST_TMP_DIR "/dbmem_test_sync_del/keep.md";
1999+
const char *file_gone = TEST_TMP_DIR "/dbmem_test_sync_del/gone.md";
19782000

19792001
// Clean up
19802002
remove(file_keep);
1981-
remove("/tmp/dbmem_test_sync_del/gone.md");
2003+
remove(file_gone);
19822004
rmdir_p(test_dir);
19832005

19842006
// Create directory with one file
@@ -1996,7 +2018,7 @@ TEST(sqlite_sync_directory_removes_deleted) {
19962018
int rc = insert_fake_content(db, keep_hash, file_keep, NULL, len);
19972019
ASSERT_EQ(rc, SQLITE_OK);
19982020

1999-
rc = insert_fake_content(db, 99999, "/tmp/dbmem_test_sync_del/gone.md", NULL, 4);
2021+
rc = insert_fake_content(db, 99999, file_gone, NULL, 4);
20002022
ASSERT_EQ(rc, SQLITE_OK);
20012023

20022024
// Verify 2 entries before sync
@@ -2007,7 +2029,7 @@ TEST(sqlite_sync_directory_removes_deleted) {
20072029

20082030
// Sync — should remove the entry for gone.md, skip keep.md (hash match)
20092031
sqlite3_int64 result;
2010-
rc = exec_get_int(db, "SELECT memory_add_directory('/tmp/dbmem_test_sync_del');", &result);
2032+
rc = exec_get_int(db, "SELECT memory_add_directory('" TEST_TMP_DIR "/dbmem_test_sync_del');", &result);
20112033
ASSERT_EQ(rc, SQLITE_OK);
20122034

20132035
// Only keep.md entry should remain
@@ -2030,17 +2052,21 @@ TEST(sqlite_sync_directory_removes_all_deleted) {
20302052
sqlite3 *db = open_test_db();
20312053
ASSERT(db != NULL);
20322054

2033-
const char *test_dir = "/tmp/dbmem_test_sync_allgone";
2034-
remove("/tmp/dbmem_test_sync_allgone/x.md");
2055+
const char *test_dir = TEST_TMP_DIR "/dbmem_test_sync_allgone";
2056+
const char *file_a = TEST_TMP_DIR "/dbmem_test_sync_allgone/a.md";
2057+
const char *file_b = TEST_TMP_DIR "/dbmem_test_sync_allgone/b.md";
2058+
const char *file_c = TEST_TMP_DIR "/dbmem_test_sync_allgone/c.md";
2059+
2060+
remove(TEST_TMP_DIR "/dbmem_test_sync_allgone/x.md");
20352061
rmdir_p(test_dir);
20362062
mkdir_p(test_dir); // empty directory
20372063

20382064
// Insert fake entries pointing to files that don't exist
2039-
int rc = insert_fake_content(db, 1001, "/tmp/dbmem_test_sync_allgone/a.md", "ctx", 4);
2065+
int rc = insert_fake_content(db, 1001, file_a, "ctx", 4);
20402066
ASSERT_EQ(rc, SQLITE_OK);
2041-
rc = insert_fake_content(db, 1002, "/tmp/dbmem_test_sync_allgone/b.md", "ctx", 4);
2067+
rc = insert_fake_content(db, 1002, file_b, "ctx", 4);
20422068
ASSERT_EQ(rc, SQLITE_OK);
2043-
rc = insert_fake_content(db, 1003, "/tmp/dbmem_test_sync_allgone/c.md", "ctx", 4);
2069+
rc = insert_fake_content(db, 1003, file_c, "ctx", 4);
20442070
ASSERT_EQ(rc, SQLITE_OK);
20452071

20462072
// Also insert vault entries to verify cascade delete
@@ -2059,7 +2085,7 @@ TEST(sqlite_sync_directory_removes_all_deleted) {
20592085

20602086
// Sync — all files gone, all entries should be removed
20612087
sqlite3_int64 result;
2062-
rc = exec_get_int(db, "SELECT memory_add_directory('/tmp/dbmem_test_sync_allgone');", &result);
2088+
rc = exec_get_int(db, "SELECT memory_add_directory('" TEST_TMP_DIR "/dbmem_test_sync_allgone');", &result);
20632089
ASSERT_EQ(rc, SQLITE_OK);
20642090

20652091
rc = exec_get_int(db, "SELECT COUNT(*) FROM dbmem_content;", &count);
@@ -2080,8 +2106,8 @@ TEST(sqlite_sync_directory_skips_unchanged) {
20802106
sqlite3 *db = open_test_db();
20812107
ASSERT(db != NULL);
20822108

2083-
const char *test_dir = "/tmp/dbmem_test_sync_skip";
2084-
const char *file = "/tmp/dbmem_test_sync_skip/note.md";
2109+
const char *test_dir = TEST_TMP_DIR "/dbmem_test_sync_skip";
2110+
const char *file = TEST_TMP_DIR "/dbmem_test_sync_skip/note.md";
20852111
const char *content = "# My Note\nSome content.";
20862112

20872113
remove(file);
@@ -2096,7 +2122,7 @@ TEST(sqlite_sync_directory_skips_unchanged) {
20962122

20972123
// Sync — file exists with matching hash, should be skipped
20982124
sqlite3_int64 result;
2099-
rc = exec_get_int(db, "SELECT memory_add_directory('/tmp/dbmem_test_sync_skip', 'notes');", &result);
2125+
rc = exec_get_int(db, "SELECT memory_add_directory('" TEST_TMP_DIR "/dbmem_test_sync_skip', 'notes');", &result);
21002126
ASSERT_EQ(rc, SQLITE_OK);
21012127

21022128
// Entry still exists unchanged (no duplication)

0 commit comments

Comments
 (0)