@@ -300,4 +300,60 @@ public function testNestedPausing()
300300 }//end testNestedPausing()
301301
302302
303+ /**
304+ * Verify that resuming more often than the StatusWriter is paused, won't block future pauses.
305+ *
306+ * @return void
307+ */
308+ public function testResumingMoreOftenThanPaused ()
309+ {
310+ $ this ->expectNoStdoutOutput ();
311+
312+ $ messageA = 'This message should not be printed when the StatusWriter is paused ' ;
313+ $ messageB = 'Once the StatusWriter is resumed, messages should be printed again ' ;
314+ $ expected = $ messageB .PHP_EOL .$ messageB .PHP_EOL ;
315+
316+ $ this ->assertFalse (StatusWriter::isPaused ());
317+
318+ // Pause 1.
319+ StatusWriter::pause ();
320+ $ this ->assertTrue (StatusWriter::isPaused ());
321+
322+ StatusWriter::write ($ messageA );
323+
324+ // Pause 2.
325+ StatusWriter::pause ();
326+ $ this ->assertTrue (StatusWriter::isPaused ());
327+
328+ StatusWriter::write ($ messageA );
329+
330+ // Resume 2.
331+ StatusWriter::resume ();
332+ $ this ->assertTrue (StatusWriter::isPaused ());
333+
334+ StatusWriter::write ($ messageA );
335+
336+ // Resume 1.
337+ StatusWriter::resume ();
338+ $ this ->assertFalse (StatusWriter::isPaused ());
339+
340+ StatusWriter::write ($ messageB );
341+
342+ // Resume too much - this resume should not change the pause counter.
343+ StatusWriter::resume ();
344+ $ this ->assertFalse (StatusWriter::isPaused ());
345+
346+ StatusWriter::write ($ messageB );
347+
348+ // Pause after "resume too much", still pauses the StatusWriter.
349+ StatusWriter::pause ();
350+ $ this ->assertTrue (StatusWriter::isPaused ());
351+
352+ StatusWriter::write ($ messageA );
353+
354+ $ this ->assertStderrOutputSameString ($ expected );
355+
356+ }//end testResumingMoreOftenThanPaused()
357+
358+
303359}//end class
0 commit comments