@@ -7,6 +7,7 @@ import * as NodeEvents from "node:events";
77import * as NodeURL from "node:url" ;
88import { assert , describe , it } from "@effect/vitest" ;
99import * as NodeServices from "@effect/platform-node/NodeServices" ;
10+ import * as ProcessRunner from "./processRunner.ts" ;
1011import * as Effect from "effect/Effect" ;
1112import * as FileSystem from "effect/FileSystem" ;
1213import * as Layer from "effect/Layer" ;
@@ -19,6 +20,8 @@ import * as Schema from "effect/Schema";
1920import * as ServerRuntimeState from "./serverRuntimeState.ts" ;
2021import { acquireServerOwnership , persistServerRuntimeState } from "./serverOwnership.ts" ;
2122
23+ const TestPlatformLayer = ProcessRunner . layer . pipe ( Layer . provideMerge ( NodeServices . layer ) ) ;
24+
2225const encodeRuntimeState = Schema . encodeSync (
2326 Schema . fromJsonString ( ServerRuntimeState . PersistedServerRuntimeState ) ,
2427) ;
@@ -55,7 +58,7 @@ describe("serverRuntimeState", () => {
5558 const { ownerId, ...restoredState } = Option . getOrThrow ( restored ) ;
5659 assert . isString ( ownerId ) ;
5760 assert . deepEqual ( restoredState , state ) ;
58- } ) . pipe ( Effect . provide ( NodeServices . layer ) ) ,
61+ } ) . pipe ( Effect . provide ( TestPlatformLayer ) ) ,
5962 ) ;
6063
6164 it . effect ( "records the dev web URL when the server fronts a dev server" , ( ) =>
@@ -89,7 +92,7 @@ describe("serverRuntimeState", () => {
8992 ) ;
9093
9194 assert . isTrue ( Option . isNone ( restored ) ) ;
92- } ) . pipe ( Effect . provide ( NodeServices . layer ) ) ,
95+ } ) . pipe ( Effect . provide ( TestPlatformLayer ) ) ,
9396 ) ;
9497
9598 it . effect ( "preserves malformed state decode failures" , ( ) => {
@@ -193,7 +196,7 @@ describe("serverRuntimeState", () => {
193196 assert . equal ( error . statePath , statePath ) ;
194197 assert . instanceOf ( error . cause , Error ) ;
195198 }
196- } ) . pipe ( Effect . provide ( NodeServices . layer ) ) ,
199+ } ) . pipe ( Effect . provide ( TestPlatformLayer ) ) ,
197200 ) ;
198201} ) ;
199202
@@ -203,6 +206,9 @@ const ownerProcessSource = `
203206import * as Effect from "effect/Effect";
204207import * as NodeServices from "@effect/platform-node/NodeServices";
205208import { acquireServerOwnership } from "./src/serverOwnership.ts";
209+ import * as ProcessRunner from "./src/processRunner.ts";
210+ import * as Layer from "effect/Layer";
211+ const TestPlatformLayer = ProcessRunner.layer.pipe(Layer.provideMerge(NodeServices.layer));
206212let stop;
207213const stopped = new Promise(resolve => { stop = resolve; });
208214process.on("message", message => {
@@ -214,7 +220,7 @@ process.on("message", message => {
214220 origin: "http://127.0.0.1:45731", startedAt: "2026-09-04T00:00:00.000Z" });
215221 process.send("acquired");
216222 yield* Effect.promise(() => stopped);
217- })).pipe(Effect.provide(NodeServices.layer ))).then(
223+ })).pipe(Effect.provide(TestPlatformLayer ))).then(
218224 () => process.exit(0),
219225 error => { process.send(error._tag ?? error.message); process.exit(1); },
220226 );
@@ -358,7 +364,7 @@ it.live("refuses a live legacy owner and replaces stale ownership despite PID re
358364 } ) ,
359365 ) ;
360366 yield * Effect . scoped ( acquireServerOwnership ( statePath ) ) ;
361- } ) . pipe ( Effect . provide ( NodeServices . layer ) ) ,
367+ } ) . pipe ( Effect . provide ( TestPlatformLayer ) ) ,
362368) ;
363369
364370it . effect ( "rejects publication after ownership has been released" , ( ) =>
@@ -382,5 +388,5 @@ it.effect("rejects publication after ownership has been released", () =>
382388 const failure = yield * stalePublish . pipe ( Effect . flip ) ;
383389 assert . equal ( failure . _tag , "ServerOwnershipReleasedError" ) ;
384390 assert . equal ( yield * fs . readFileString ( statePath ) , before ) ;
385- } ) . pipe ( Effect . provide ( NodeServices . layer ) ) ,
391+ } ) . pipe ( Effect . provide ( TestPlatformLayer ) ) ,
386392) ;
0 commit comments