@@ -18,36 +18,38 @@ const sampleState: WorkflowState = {
1818
1919describe ( "workflow state persistence" , ( ) => {
2020 let cwd : string ;
21+ let home : string ;
2122
2223 beforeEach ( async ( ) => {
2324 cwd = await mkdtemp ( join ( tmpdir ( ) , "wf-state-" ) ) ;
25+ home = await mkdtemp ( join ( tmpdir ( ) , "wf-state-home-" ) ) ;
2426 } ) ;
2527
2628 afterEach ( async ( ) => {
27- await rm ( sessionDir ( cwd , SESSION_ID ) , { recursive : true , force : true } ) . catch ( ( ) => undefined ) ;
2829 await rm ( cwd , { recursive : true , force : true } ) ;
30+ await rm ( home , { recursive : true , force : true } ) ;
2931 } ) ;
3032
3133 test ( "saveWorkflowState then loadWorkflowState returns an equal object" , async ( ) => {
32- await saveWorkflowState ( cwd , SESSION_ID , sampleState ) ;
33- const loaded = await loadWorkflowState ( cwd , SESSION_ID ) ;
34+ await saveWorkflowState ( cwd , SESSION_ID , sampleState , home ) ;
35+ const loaded = await loadWorkflowState ( cwd , SESSION_ID , home ) ;
3436 expect ( loaded ) . toEqual ( sampleState ) ;
3537 } ) ;
3638
3739 test ( "loadWorkflowState on missing file returns null" , async ( ) => {
38- expect ( await loadWorkflowState ( cwd , "nope" ) ) . toBeNull ( ) ;
40+ expect ( await loadWorkflowState ( cwd , "nope" , home ) ) . toBeNull ( ) ;
3941 } ) ;
4042
4143 test ( "loadWorkflowState with truncated JSON returns null instead of throwing" , async ( ) => {
42- const dir = sessionDir ( cwd , SESSION_ID ) ;
44+ const dir = sessionDir ( cwd , SESSION_ID , home ) ;
4345 await mkdir ( dir , { recursive : true } ) ;
4446 await writeFile ( join ( dir , "workflow.json" ) , '{ "completed": false, "stack": [' ) ;
4547
46- expect ( await loadWorkflowState ( cwd , SESSION_ID ) ) . toBeNull ( ) ;
48+ expect ( await loadWorkflowState ( cwd , SESSION_ID , home ) ) . toBeNull ( ) ;
4749 } ) ;
4850
4951 test ( "loadWorkflowState rejects invalid stepIndex values" , async ( ) => {
50- const dir = sessionDir ( cwd , SESSION_ID ) ;
52+ const dir = sessionDir ( cwd , SESSION_ID , home ) ;
5153 await mkdir ( dir , { recursive : true } ) ;
5254 await writeFile (
5355 join ( dir , "workflow.json" ) ,
@@ -57,11 +59,11 @@ describe("workflow state persistence", () => {
5759 } ) ,
5860 ) ;
5961
60- expect ( await loadWorkflowState ( cwd , SESSION_ID ) ) . toBeNull ( ) ;
62+ expect ( await loadWorkflowState ( cwd , SESSION_ID , home ) ) . toBeNull ( ) ;
6163 } ) ;
6264
6365 test ( "loadWorkflowState rejects unknown step statuses" , async ( ) => {
64- const dir = sessionDir ( cwd , SESSION_ID ) ;
66+ const dir = sessionDir ( cwd , SESSION_ID , home ) ;
6567 await mkdir ( dir , { recursive : true } ) ;
6668 await writeFile (
6769 join ( dir , "workflow.json" ) ,
@@ -71,30 +73,30 @@ describe("workflow state persistence", () => {
7173 } ) ,
7274 ) ;
7375
74- expect ( await loadWorkflowState ( cwd , SESSION_ID ) ) . toBeNull ( ) ;
76+ expect ( await loadWorkflowState ( cwd , SESSION_ID , home ) ) . toBeNull ( ) ;
7577 } ) ;
7678
7779 test ( "saveWorkflowState leaves no .tmp file after successful write" , async ( ) => {
78- await saveWorkflowState ( cwd , SESSION_ID , sampleState ) ;
79- const files = await readdir ( sessionDir ( cwd , SESSION_ID ) ) ;
80+ await saveWorkflowState ( cwd , SESSION_ID , sampleState , home ) ;
81+ const files = await readdir ( sessionDir ( cwd , SESSION_ID , home ) ) ;
8082 expect ( files . filter ( ( f ) => f . includes ( ".tmp" ) ) ) . toHaveLength ( 0 ) ;
8183 } ) ;
8284
8385 test ( "saveWorkflowState overwrites a pre-existing file with well-formed JSON" , async ( ) => {
84- await saveWorkflowState ( cwd , SESSION_ID , sampleState ) ;
86+ await saveWorkflowState ( cwd , SESSION_ID , sampleState , home ) ;
8587 const updated : WorkflowState = { ...sampleState , completed : true , stack : [ ] } ;
86- await saveWorkflowState ( cwd , SESSION_ID , updated ) ;
87- const raw = await readFile ( join ( sessionDir ( cwd , SESSION_ID ) , "workflow.json" ) , "utf8" ) ;
88+ await saveWorkflowState ( cwd , SESSION_ID , updated , home ) ;
89+ const raw = await readFile ( join ( sessionDir ( cwd , SESSION_ID , home ) , "workflow.json" ) , "utf8" ) ;
8890 expect ( JSON . parse ( raw ) ) . toEqual ( updated ) ;
8991 } ) ;
9092
9193 test ( "concurrent saveWorkflowState calls serialize and leave valid JSON" , async ( ) => {
9294 await Promise . all ( [
93- saveWorkflowState ( cwd , SESSION_ID , sampleState ) ,
94- saveWorkflowState ( cwd , SESSION_ID , { ...sampleState , completed : true } ) ,
95- saveWorkflowState ( cwd , SESSION_ID , sampleState ) ,
95+ saveWorkflowState ( cwd , SESSION_ID , sampleState , home ) ,
96+ saveWorkflowState ( cwd , SESSION_ID , { ...sampleState , completed : true } , home ) ,
97+ saveWorkflowState ( cwd , SESSION_ID , sampleState , home ) ,
9698 ] ) ;
97- const loaded = await loadWorkflowState ( cwd , SESSION_ID ) ;
99+ const loaded = await loadWorkflowState ( cwd , SESSION_ID , home ) ;
98100 expect ( loaded ) . not . toBeNull ( ) ;
99101 expect ( loaded ?. stack ) . toEqual ( sampleState . stack ) ;
100102 } ) ;
0 commit comments