@@ -109,4 +109,140 @@ describe("executeCommand", () => {
109109
110110 expect ( output . some ( ( line ) => line . includes ( "test" ) ) ) . toBe ( true ) ;
111111 } ) ;
112+
113+ test ( "quiet mode suppresses output on success" , async ( ) => {
114+ const originalCLAUDECODE = process . env . CLAUDECODE ;
115+ const originalWrite = process . stdout . write ;
116+ let stdoutWritten = false ;
117+
118+ // biome-ignore lint/suspicious/noExplicitAny: Test mocking requires any
119+ process . stdout . write = mock ( ( _chunk : any ) => {
120+ stdoutWritten = true ;
121+ return true ;
122+ } ) ;
123+
124+ try {
125+ process . env . CLAUDECODE = "true" ;
126+ await executeCommand ( "echo" , [ "quiet mode test" ] ) ;
127+ expect ( stdoutWritten ) . toBe ( false ) ;
128+ } finally {
129+ process . stdout . write = originalWrite ;
130+ if ( originalCLAUDECODE === undefined ) {
131+ delete process . env . CLAUDECODE ;
132+ } else {
133+ process . env . CLAUDECODE = originalCLAUDECODE ;
134+ }
135+ }
136+ } ) ;
137+
138+ test ( "quiet mode shows output on error" , async ( ) => {
139+ const originalCLAUDECODE = process . env . CLAUDECODE ;
140+ const originalStdoutWrite = process . stdout . write ;
141+ const originalStderrWrite = process . stderr . write ;
142+ let outputShown = false ;
143+
144+ // biome-ignore lint/suspicious/noExplicitAny: Test mocking requires any
145+ process . stdout . write = mock ( ( _chunk : any ) => {
146+ outputShown = true ;
147+ return true ;
148+ } ) ;
149+
150+ // biome-ignore lint/suspicious/noExplicitAny: Test mocking requires any
151+ process . stderr . write = mock ( ( _chunk : any ) => {
152+ outputShown = true ;
153+ return true ;
154+ } ) ;
155+
156+ try {
157+ process . env . CLAUDECODE = "true" ;
158+ await expect ( ( ) =>
159+ executeCommand ( "node" , [ "-e" , "console.log('output'); console.error('error'); process.exit(1);" ] ) ,
160+ ) . toThrow ( ) ;
161+ // Output should be shown on error even in quiet mode
162+ expect ( outputShown ) . toBe ( true ) ;
163+ } finally {
164+ process . stdout . write = originalStdoutWrite ;
165+ process . stderr . write = originalStderrWrite ;
166+ if ( originalCLAUDECODE === undefined ) {
167+ delete process . env . CLAUDECODE ;
168+ } else {
169+ process . env . CLAUDECODE = originalCLAUDECODE ;
170+ }
171+ }
172+ } ) ;
173+
174+ test ( "quiet mode respects silent: false to force output" , async ( ) => {
175+ const originalCLAUDECODE = process . env . CLAUDECODE ;
176+ const originalWrite = process . stdout . write ;
177+ let stdoutWritten = false ;
178+
179+ // biome-ignore lint/suspicious/noExplicitAny: Test mocking requires any
180+ process . stdout . write = mock ( ( _chunk : any ) => {
181+ stdoutWritten = true ;
182+ return true ;
183+ } ) ;
184+
185+ try {
186+ process . env . CLAUDECODE = "true" ;
187+ await executeCommand ( "echo" , [ "force output in quiet mode" ] , { silent : false } ) ;
188+ expect ( stdoutWritten ) . toBe ( true ) ;
189+ } finally {
190+ process . stdout . write = originalWrite ;
191+ if ( originalCLAUDECODE === undefined ) {
192+ delete process . env . CLAUDECODE ;
193+ } else {
194+ process . env . CLAUDECODE = originalCLAUDECODE ;
195+ }
196+ }
197+ } ) ;
198+
199+ test ( "quiet mode works with REPL_ID environment variable" , async ( ) => {
200+ const originalREPL_ID = process . env . REPL_ID ;
201+ const originalWrite = process . stdout . write ;
202+ let stdoutWritten = false ;
203+
204+ // biome-ignore lint/suspicious/noExplicitAny: Test mocking requires any
205+ process . stdout . write = mock ( ( _chunk : any ) => {
206+ stdoutWritten = true ;
207+ return true ;
208+ } ) ;
209+
210+ try {
211+ process . env . REPL_ID = "test-repl" ;
212+ await executeCommand ( "echo" , [ "repl quiet test" ] ) ;
213+ expect ( stdoutWritten ) . toBe ( false ) ;
214+ } finally {
215+ process . stdout . write = originalWrite ;
216+ if ( originalREPL_ID === undefined ) {
217+ delete process . env . REPL_ID ;
218+ } else {
219+ process . env . REPL_ID = originalREPL_ID ;
220+ }
221+ }
222+ } ) ;
223+
224+ test ( "quiet mode works with AGENT environment variable" , async ( ) => {
225+ const originalAGENT = process . env . AGENT ;
226+ const originalWrite = process . stdout . write ;
227+ let stdoutWritten = false ;
228+
229+ // biome-ignore lint/suspicious/noExplicitAny: Test mocking requires any
230+ process . stdout . write = mock ( ( _chunk : any ) => {
231+ stdoutWritten = true ;
232+ return true ;
233+ } ) ;
234+
235+ try {
236+ process . env . AGENT = "true" ;
237+ await executeCommand ( "echo" , [ "agent quiet test" ] ) ;
238+ expect ( stdoutWritten ) . toBe ( false ) ;
239+ } finally {
240+ process . stdout . write = originalWrite ;
241+ if ( originalAGENT === undefined ) {
242+ delete process . env . AGENT ;
243+ } else {
244+ process . env . AGENT = originalAGENT ;
245+ }
246+ }
247+ } ) ;
112248} ) ;
0 commit comments