@@ -4,6 +4,7 @@ import path from 'path';
44import { URL } from 'url' ;
55import { MessageChannel , MessagePort } from './MessageChannel' ;
66import psList from 'ps-list' ;
7+ import child_process from 'child_process' ;
78
89console . log = jest . fn ( ) ;
910jest . setTimeout ( 10000 ) ;
@@ -112,6 +113,87 @@ describe('DenoWorker', () => {
112113 message : 'Hello' ,
113114 } ) ;
114115 } ) ;
116+
117+ describe ( 'denoUnstable' , async ( ) => {
118+ afterEach ( ( ) => {
119+ jest . clearAllMocks ( ) ;
120+ } ) ;
121+
122+ it ( 'should not include the --unstable flag by default' , async ( ) => {
123+ const spawnSpy = jest . spyOn ( child_process , 'spawn' ) ;
124+
125+ worker = new DenoWorker ( echoScript ) ;
126+
127+ let resolve : any ;
128+ let promise = new Promise ( ( res , rej ) => {
129+ resolve = res ;
130+ } ) ;
131+ worker . onmessage = ( e ) => {
132+ resolve ( ) ;
133+ } ;
134+
135+ worker . postMessage ( {
136+ type : 'echo' ,
137+ message : 'Hello' ,
138+ } ) ;
139+
140+ await promise ;
141+
142+ const call = spawnSpy . mock . calls [ 0 ] ;
143+ const [ _deno , args ] = call ;
144+ expect ( args ) . not . toContain ( '--unstable' ) ;
145+ } ) ;
146+
147+ it ( 'should not include the --unstable flag by when denoUnstable is false' , async ( ) => {
148+ const spawnSpy = jest . spyOn ( child_process , 'spawn' ) ;
149+
150+ worker = new DenoWorker ( echoScript , { denoUnstable : false } ) ;
151+
152+ let resolve : any ;
153+ let promise = new Promise ( ( res , rej ) => {
154+ resolve = res ;
155+ } ) ;
156+ worker . onmessage = ( e ) => {
157+ resolve ( ) ;
158+ } ;
159+
160+ worker . postMessage ( {
161+ type : 'echo' ,
162+ message : 'Hello' ,
163+ } ) ;
164+
165+ await promise ;
166+
167+ const call = spawnSpy . mock . calls [ 0 ] ;
168+ const [ _deno , args ] = call ;
169+ expect ( args ) . not . toContain ( '--unstable' ) ;
170+ } ) ;
171+
172+ it ( 'should allow include the --unstable flag when denoUnstable is true' , async ( ) => {
173+ const spawnSpy = jest . spyOn ( child_process , 'spawn' ) ;
174+
175+ worker = new DenoWorker ( echoScript , { denoUnstable : true } ) ;
176+
177+ let resolve : any ;
178+ let promise = new Promise ( ( res , rej ) => {
179+ resolve = res ;
180+ } ) ;
181+ worker . onmessage = ( e ) => {
182+ resolve ( ) ;
183+ } ;
184+
185+ worker . postMessage ( {
186+ type : 'echo' ,
187+ message : 'Hello' ,
188+ } ) ;
189+
190+ await promise ;
191+
192+ const call = spawnSpy . mock . calls [ 0 ] ;
193+ const [ _deno , args ] = call ;
194+ expect ( args ) . toContain ( '--unstable' ) ;
195+ } ) ;
196+ } ) ;
115197 } ) ;
116198
117199 describe ( 'data types' , ( ) => {
@@ -440,6 +522,8 @@ describe('DenoWorker', () => {
440522
441523async function getDenoProcesses ( ) {
442524 const list = await psList ( ) ;
443- const denoProcesses = list . filter ( ( p ) => / ^ d e n o / . test ( p . name ) ) ;
525+ const denoProcesses = list . filter (
526+ ( p ) => / ^ d e n o / . test ( p . name ) && p . cmd !== 'deno lsp'
527+ ) ;
444528 return denoProcesses ;
445529}
0 commit comments