Skip to content

Commit 27d7c93

Browse files
authored
Merge pull request #6 from sopaco/v2
Add test serialization and fix current directory handling
2 parents 61a24d0 + 0cc49fd commit 27d7c93

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

crates/cowork-core/src/storage/storage_test.rs

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,42 @@ mod tests {
33
use crate::storage::*;
44
use tempfile::TempDir;
55
use std::env;
6+
use std::path::PathBuf;
7+
use std::sync::Mutex;
8+
9+
// Use a global mutex to serialize tests that modify current directory
10+
static TEST_MUTEX: Mutex<()> = Mutex::new(());
611

7-
fn setup_test_env() -> TempDir {
12+
fn setup_test_env() -> (TempDir, PathBuf) {
13+
let original_dir = env::current_dir().unwrap();
814
let temp_dir = TempDir::new().unwrap();
915
env::set_current_dir(temp_dir.path()).unwrap();
10-
temp_dir
16+
(temp_dir, original_dir)
17+
}
18+
19+
fn cleanup_test_env(original_dir: PathBuf) {
20+
let _ = env::set_current_dir(original_dir);
1121
}
1222

1323
#[test]
1424
fn test_get_cowork_dir_creates_structure() {
15-
let _temp = setup_test_env();
25+
let _guard = TEST_MUTEX.lock().unwrap();
26+
let (_temp, original_dir) = setup_test_env();
1627

1728
let dir = get_cowork_dir().unwrap();
1829
assert!(dir.exists());
1930
assert!(dir.join("data").exists());
2031
assert!(dir.join("artifacts").exists());
2132
assert!(dir.join("session").exists());
2233
assert!(dir.join("logs").exists());
34+
35+
cleanup_test_env(original_dir);
2336
}
2437

2538
#[test]
2639
fn test_save_and_load_requirements() {
27-
let _temp = setup_test_env();
40+
let _guard = TEST_MUTEX.lock().unwrap();
41+
let (_temp, original_dir) = setup_test_env();
2842
get_cowork_dir().unwrap();
2943

3044
let mut reqs = Requirements::new();
@@ -44,11 +58,14 @@ mod tests {
4458
assert_eq!(loaded.requirements.len(), 1);
4559
assert_eq!(loaded.requirements[0].id, "REQ-001");
4660
assert_eq!(loaded.requirements[0].title, "Test Requirement");
61+
62+
cleanup_test_env(original_dir);
4763
}
4864

4965
#[test]
5066
fn test_save_and_load_feature_list() {
51-
let _temp = setup_test_env();
67+
let _guard = TEST_MUTEX.lock().unwrap();
68+
let (_temp, original_dir) = setup_test_env();
5269
get_cowork_dir().unwrap();
5370

5471
let mut features = FeatureList::new();
@@ -70,14 +87,19 @@ mod tests {
7087

7188
assert_eq!(loaded.features.len(), 1);
7289
assert_eq!(loaded.features[0].id, "FEAT-001");
90+
91+
cleanup_test_env(original_dir);
7392
}
7493

7594
#[test]
7695
fn test_cowork_dir_exists() {
77-
let _temp = setup_test_env();
96+
let _guard = TEST_MUTEX.lock().unwrap();
97+
let (_temp, original_dir) = setup_test_env();
7898

7999
assert!(!cowork_dir_exists());
80100
get_cowork_dir().unwrap();
81101
assert!(cowork_dir_exists());
102+
103+
cleanup_test_env(original_dir);
82104
}
83105
}

0 commit comments

Comments
 (0)