mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-01 15:14:11 +01:00
Package operations: 2 installs, 23 updates, 0 removals - Updating psr/log (1.1.0 => 1.1.2) - Updating symfony/debug (v3.4.30 => v3.4.35) - Updating symfony/console (v3.4.30 => v3.4.35) - Updating symfony/dotenv (v3.4.30 => v3.4.35) - Updating symfony/routing (v3.4.30 => v3.4.35) - Updating symfony/finder (v3.4.30 => v3.4.35) - Updating symfony/filesystem (v3.4.30 => v3.4.35) - Installing symfony/polyfill-util (v1.12.0) - Installing symfony/polyfill-php56 (v1.12.0) - Updating symfony/http-foundation (v3.4.30 => v3.4.35) - Updating symfony/event-dispatcher (v3.4.30 => v3.4.35) - Updating symfony/http-kernel (v3.4.30 => v3.4.35) - Updating symfony/config (v3.4.30 => v3.4.35) - Updating symfony/dependency-injection (v3.4.30 => v3.4.35) - Updating symfony/class-loader (v3.4.30 => v3.4.35) - Updating symfony/cache (v3.4.30 => v3.4.35) - Updating symfony/framework-bundle (v3.4.30 => v3.4.35) - Updating twig/twig (v1.42.2 => v1.42.4) - Updating symfony/twig-bridge (v3.4.30 => v3.4.35) - Updating symfony/twig-bundle (v3.4.30 => v3.4.35) - Updating symfony/yaml (v3.4.30 => v3.4.35) - Updating symfony/stopwatch (v3.4.30 => v3.4.35) - Updating symfony/var-dumper (v3.4.30 => v3.4.35) - Updating symfony/web-profiler-bundle (v3.4.30 => v3.4.35) - Updating symfony/css-selector (v3.4.30 => v3.4.35)
176 lines
5.2 KiB
PHP
176 lines
5.2 KiB
PHP
<?php
|
|
|
|
namespace Symfony\Component\Console\Tests\Helper;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use Symfony\Component\Console\Helper\ProgressIndicator;
|
|
use Symfony\Component\Console\Output\StreamOutput;
|
|
|
|
/**
|
|
* @group time-sensitive
|
|
*/
|
|
class ProgressIndicatorTest extends TestCase
|
|
{
|
|
public function testDefaultIndicator()
|
|
{
|
|
$bar = new ProgressIndicator($output = $this->getOutputStream());
|
|
$bar->start('Starting...');
|
|
usleep(101000);
|
|
$bar->advance();
|
|
usleep(101000);
|
|
$bar->advance();
|
|
usleep(101000);
|
|
$bar->advance();
|
|
usleep(101000);
|
|
$bar->advance();
|
|
usleep(101000);
|
|
$bar->advance();
|
|
usleep(101000);
|
|
$bar->setMessage('Advancing...');
|
|
$bar->advance();
|
|
$bar->finish('Done...');
|
|
$bar->start('Starting Again...');
|
|
usleep(101000);
|
|
$bar->advance();
|
|
$bar->finish('Done Again...');
|
|
|
|
rewind($output->getStream());
|
|
|
|
$this->assertEquals(
|
|
$this->generateOutput(' - Starting...').
|
|
$this->generateOutput(' \\ Starting...').
|
|
$this->generateOutput(' | Starting...').
|
|
$this->generateOutput(' / Starting...').
|
|
$this->generateOutput(' - Starting...').
|
|
$this->generateOutput(' \\ Starting...').
|
|
$this->generateOutput(' \\ Advancing...').
|
|
$this->generateOutput(' | Advancing...').
|
|
$this->generateOutput(' | Done...').
|
|
PHP_EOL.
|
|
$this->generateOutput(' - Starting Again...').
|
|
$this->generateOutput(' \\ Starting Again...').
|
|
$this->generateOutput(' \\ Done Again...').
|
|
PHP_EOL,
|
|
stream_get_contents($output->getStream())
|
|
);
|
|
}
|
|
|
|
public function testNonDecoratedOutput()
|
|
{
|
|
$bar = new ProgressIndicator($output = $this->getOutputStream(false));
|
|
|
|
$bar->start('Starting...');
|
|
$bar->advance();
|
|
$bar->advance();
|
|
$bar->setMessage('Midway...');
|
|
$bar->advance();
|
|
$bar->advance();
|
|
$bar->finish('Done...');
|
|
|
|
rewind($output->getStream());
|
|
|
|
$this->assertEquals(
|
|
' Starting...'.PHP_EOL.
|
|
' Midway...'.PHP_EOL.
|
|
' Done...'.PHP_EOL.PHP_EOL,
|
|
stream_get_contents($output->getStream())
|
|
);
|
|
}
|
|
|
|
public function testCustomIndicatorValues()
|
|
{
|
|
$bar = new ProgressIndicator($output = $this->getOutputStream(), null, 100, ['a', 'b', 'c']);
|
|
|
|
$bar->start('Starting...');
|
|
usleep(101000);
|
|
$bar->advance();
|
|
usleep(101000);
|
|
$bar->advance();
|
|
usleep(101000);
|
|
$bar->advance();
|
|
|
|
rewind($output->getStream());
|
|
|
|
$this->assertEquals(
|
|
$this->generateOutput(' a Starting...').
|
|
$this->generateOutput(' b Starting...').
|
|
$this->generateOutput(' c Starting...').
|
|
$this->generateOutput(' a Starting...'),
|
|
stream_get_contents($output->getStream())
|
|
);
|
|
}
|
|
|
|
public function testCannotSetInvalidIndicatorCharacters()
|
|
{
|
|
$this->expectException('InvalidArgumentException');
|
|
$this->expectExceptionMessage('Must have at least 2 indicator value characters.');
|
|
new ProgressIndicator($this->getOutputStream(), null, 100, ['1']);
|
|
}
|
|
|
|
public function testCannotStartAlreadyStartedIndicator()
|
|
{
|
|
$this->expectException('LogicException');
|
|
$this->expectExceptionMessage('Progress indicator already started.');
|
|
$bar = new ProgressIndicator($this->getOutputStream());
|
|
$bar->start('Starting...');
|
|
$bar->start('Starting Again.');
|
|
}
|
|
|
|
public function testCannotAdvanceUnstartedIndicator()
|
|
{
|
|
$this->expectException('LogicException');
|
|
$this->expectExceptionMessage('Progress indicator has not yet been started.');
|
|
$bar = new ProgressIndicator($this->getOutputStream());
|
|
$bar->advance();
|
|
}
|
|
|
|
public function testCannotFinishUnstartedIndicator()
|
|
{
|
|
$this->expectException('LogicException');
|
|
$this->expectExceptionMessage('Progress indicator has not yet been started.');
|
|
$bar = new ProgressIndicator($this->getOutputStream());
|
|
$bar->finish('Finished');
|
|
}
|
|
|
|
/**
|
|
* @dataProvider provideFormat
|
|
*/
|
|
public function testFormats($format)
|
|
{
|
|
$bar = new ProgressIndicator($output = $this->getOutputStream(), $format);
|
|
$bar->start('Starting...');
|
|
$bar->advance();
|
|
|
|
rewind($output->getStream());
|
|
|
|
$this->assertNotEmpty(stream_get_contents($output->getStream()));
|
|
}
|
|
|
|
/**
|
|
* Provides each defined format.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function provideFormat()
|
|
{
|
|
return [
|
|
['normal'],
|
|
['verbose'],
|
|
['very_verbose'],
|
|
['debug'],
|
|
];
|
|
}
|
|
|
|
protected function getOutputStream($decorated = true, $verbosity = StreamOutput::VERBOSITY_NORMAL)
|
|
{
|
|
return new StreamOutput(fopen('php://memory', 'r+', false), $verbosity, $decorated);
|
|
}
|
|
|
|
protected function generateOutput($expected)
|
|
{
|
|
$count = substr_count($expected, "\n");
|
|
|
|
return "\x0D\x1B[2K".($count ? sprintf("\033[%dA", $count) : '').$expected;
|
|
}
|
|
}
|