@@ -416,6 +416,81 @@ public function testOverwriteWithSectionOutput()
416
416
);
417
417
}
418
418
419
+ public function testOverwriteWithSectionOutputAndEol ()
420
+ {
421
+ $ sections = [];
422
+ $ stream = $ this ->getOutputStream (true );
423
+ $ output = new ConsoleSectionOutput ($ stream ->getStream (), $ sections , $ stream ->getVerbosity (), $ stream ->isDecorated (), new OutputFormatter ());
424
+
425
+ $ bar = new ProgressBar ($ output , 50 , 0 );
426
+ $ bar ->setFormat ('[%bar%] %percent:3s%% ' . PHP_EOL . '%message% ' . PHP_EOL );
427
+ $ bar ->setMessage ('' );
428
+ $ bar ->start ();
429
+ $ bar ->display ();
430
+ $ bar ->setMessage ('Doing something... ' );
431
+ $ bar ->advance ();
432
+ $ bar ->setMessage ('Doing something foo... ' );
433
+ $ bar ->advance ();
434
+
435
+ rewind ($ output ->getStream ());
436
+ $ this ->assertEquals (escapeshellcmd (
437
+ '[>---------------------------] 0% ' .\PHP_EOL .\PHP_EOL .
438
+ "\x1b[2A \x1b[0J " .'[>---------------------------] 2% ' .\PHP_EOL . 'Doing something... ' . \PHP_EOL .
439
+ "\x1b[2A \x1b[0J " .'[=>--------------------------] 4% ' .\PHP_EOL . 'Doing something foo... ' . \PHP_EOL ),
440
+ escapeshellcmd (stream_get_contents ($ output ->getStream ()))
441
+ );
442
+ }
443
+
444
+ public function testOverwriteWithSectionOutputAndEolWithEmptyMessage ()
445
+ {
446
+ $ sections = [];
447
+ $ stream = $ this ->getOutputStream (true );
448
+ $ output = new ConsoleSectionOutput ($ stream ->getStream (), $ sections , $ stream ->getVerbosity (), $ stream ->isDecorated (), new OutputFormatter ());
449
+
450
+ $ bar = new ProgressBar ($ output , 50 , 0 );
451
+ $ bar ->setFormat ('[%bar%] %percent:3s%% ' . PHP_EOL . '%message% ' );
452
+ $ bar ->setMessage ('Start ' );
453
+ $ bar ->start ();
454
+ $ bar ->display ();
455
+ $ bar ->setMessage ('' );
456
+ $ bar ->advance ();
457
+ $ bar ->setMessage ('Doing something... ' );
458
+ $ bar ->advance ();
459
+
460
+ rewind ($ output ->getStream ());
461
+ $ this ->assertEquals (escapeshellcmd (
462
+ '[>---------------------------] 0% ' .\PHP_EOL .'Start ' .\PHP_EOL .
463
+ "\x1b[2A \x1b[0J " .'[>---------------------------] 2% ' .\PHP_EOL .
464
+ "\x1b[1A \x1b[0J " .'[=>--------------------------] 4% ' .\PHP_EOL . 'Doing something... ' . \PHP_EOL ),
465
+ escapeshellcmd (stream_get_contents ($ output ->getStream ()))
466
+ );
467
+ }
468
+
469
+ public function testOverwriteWithSectionOutputAndEolWithEmptyMessageComment ()
470
+ {
471
+ $ sections = [];
472
+ $ stream = $ this ->getOutputStream (true );
473
+ $ output = new ConsoleSectionOutput ($ stream ->getStream (), $ sections , $ stream ->getVerbosity (), $ stream ->isDecorated (), new OutputFormatter ());
474
+
475
+ $ bar = new ProgressBar ($ output , 50 , 0 );
476
+ $ bar ->setFormat ('[%bar%] %percent:3s%% ' . PHP_EOL . '<comment>%message%</comment> ' );
477
+ $ bar ->setMessage ('Start ' );
478
+ $ bar ->start ();
479
+ $ bar ->display ();
480
+ $ bar ->setMessage ('' );
481
+ $ bar ->advance ();
482
+ $ bar ->setMessage ('Doing something... ' );
483
+ $ bar ->advance ();
484
+
485
+ rewind ($ output ->getStream ());
486
+ $ this ->assertEquals (escapeshellcmd (
487
+ '[>---------------------------] 0% ' .\PHP_EOL ."\x1b[33mStart \x1b[39m " .\PHP_EOL .
488
+ "\x1b[2A \x1b[0J " .'[>---------------------------] 2% ' .\PHP_EOL .
489
+ "\x1b[1A \x1b[0J " .'[=>--------------------------] 4% ' .\PHP_EOL . "\x1b[33mDoing something... \x1b[39m " . \PHP_EOL ),
490
+ escapeshellcmd (stream_get_contents ($ output ->getStream ()))
491
+ );
492
+ }
493
+
419
494
public function testOverwriteWithAnsiSectionOutput ()
420
495
{
421
496
// output has 43 visible characters plus 2 invisible ANSI characters
0 commit comments