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