summaryrefslogtreecommitdiff
path: root/Omni
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-11-26 09:40:59 -0500
committerBen Sima <ben@bensima.com>2025-11-26 09:40:59 -0500
commit32e5b5b097c50d0b1d8a3dbcf93163aabf1ee8fb (patch)
treef97e3434d1909b078fdc28ff43bc1403602bee69 /Omni
parentb13c42cc5566aa7365118fddc7f327b4c774a910 (diff)
Fix test database isolation: TASK_TEST_MODE takes precedence
Tests were polluting production database because TASK_DB_PATH took precedence over TASK_TEST_MODE. Now test mode always uses .tasks/tasks-test.db regardless of TASK_DB_PATH setting.
Diffstat (limited to 'Omni')
-rw-r--r--Omni/Task/Core.hs6
-rw-r--r--Omni/Task/RaceTest.hs8
2 files changed, 5 insertions, 9 deletions
diff --git a/Omni/Task/Core.hs b/Omni/Task/Core.hs
index 4f7a3d3..2110170 100644
--- a/Omni/Task/Core.hs
+++ b/Omni/Task/Core.hs
@@ -237,9 +237,9 @@ getTasksDbPath :: IO FilePath
getTasksDbPath = do
customPath <- lookupEnv "TASK_DB_PATH"
testMode <- lookupEnv "TASK_TEST_MODE"
- let path = case (customPath, testMode) of
- (Just p, _) -> p -- Custom path wins (even in test mode, to allow specific test DBs)
- (_, Just "1") -> ".tasks/tasks-test.db"
+ let path = case (testMode, customPath) of
+ (Just "1", _) -> ".tasks/tasks-test.db" -- Test mode always uses test db
+ (_, Just p) -> p -- Custom path for production
_ -> ".tasks/tasks.db"
pure path
diff --git a/Omni/Task/RaceTest.hs b/Omni/Task/RaceTest.hs
index 860272d..5dd7fa1 100644
--- a/Omni/Task/RaceTest.hs
+++ b/Omni/Task/RaceTest.hs
@@ -18,15 +18,11 @@ test = Test.group "Omni.Task.Race" [raceTest]
raceTest :: Test.Tree
raceTest =
Test.unit "concurrent child creation (race condition)" <| do
- -- Set up test mode
+ -- Set up test mode (uses .tasks/tasks-test.db)
setEnv "TASK_TEST_MODE" "1"
- -- Unset TASK_DB_PATH to ensure we use the test mode default (or set it to .tasks/race-test.db)
- -- Actually, since Core.hs respects TASK_DB_PATH if set, we should unset it or set it to our target.
- -- Let's set it to .tasks/race-test.db for isolation.
- setEnv "TASK_DB_PATH" ".tasks/race-test.db"
-- Clean up test database
- let testFile = ".tasks/race-test.db"
+ let testFile = ".tasks/tasks-test.db"
exists <- doesFileExist testFile
when exists <| removeFile testFile
initTaskDb