@@ -11,6 +11,10 @@ import {
1111import { assertReleaseAssets } from '../../scripts/release/check-assets.mjs' ;
1212import { assertVersionConsistency , collectReleaseVersionState } from '../../scripts/release/check-version.mjs' ;
1313import { createReleaseManifest } from '../../scripts/release/write-release-manifest.mjs' ;
14+ import {
15+ buildDevStackRuntimeEnv ,
16+ resetDevStackRuntimeState ,
17+ } from '../../scripts/test/dev-stack-runtime.mjs' ;
1418
1519test ( 'release assets required for packaging are present' , async ( ) => {
1620 await assertReleaseAssets ( ) ;
@@ -76,3 +80,28 @@ test('release manifest writer emits checksums for tarballs', async () => {
7680 await fs . rm ( tempRoot , { recursive : true , force : true } ) ;
7781 }
7882} ) ;
83+
84+ test ( 'dev stack runtime defaults to an isolated repo-local state dir' , ( ) => {
85+ const root = '/tmp/coder-studio-root' ;
86+ const result = buildDevStackRuntimeEnv ( root , { } ) ;
87+
88+ assert . equal ( result . stateDir , path . join ( root , '.tmp' , 'dev-stack-runtime' ) ) ;
89+ assert . equal ( result . env . CODER_STUDIO_HOME , path . join ( root , '.tmp' , 'dev-stack-runtime' ) ) ;
90+ } ) ;
91+
92+ test ( 'dev stack runtime reset clears prior state contents' , async ( ) => {
93+ const tempRoot = await fs . mkdtemp ( path . join ( os . tmpdir ( ) , 'coder-studio-dev-stack-' ) ) ;
94+ const stateDir = path . join ( tempRoot , 'state' ) ;
95+
96+ try {
97+ await fs . mkdir ( path . join ( stateDir , 'nested' ) , { recursive : true } ) ;
98+ await fs . writeFile ( path . join ( stateDir , 'nested' , 'stale.txt' ) , 'stale' , 'utf8' ) ;
99+
100+ await resetDevStackRuntimeState ( stateDir ) ;
101+
102+ const entries = await fs . readdir ( stateDir ) ;
103+ assert . deepEqual ( entries , [ ] ) ;
104+ } finally {
105+ await fs . rm ( tempRoot , { recursive : true , force : true } ) ;
106+ }
107+ } ) ;
0 commit comments