public function isTerminal()
{
$isTerminal = self::$isTerminal;
if ($isTerminal === null) {
$isTerminal = $this->adapter->defined('STDOUT');
if ($isTerminal === true) {
$stdoutStat = $this->adapter->fstat($this->adapter->constant('STDOUT'));
$isTerminal = ($stdoutStat['mode'] & 0170000) === 020000;
// See <sys/stat.h> for more information.
if ($isTerminal === true && $this->adapter->defined('PHP_WINDOWS_VERSION_BUILD') === true) {
$isTerminal = $isTerminal && $this->adapter->getenv('ANSICON') == true;
}
}
}
return $isTerminal;
}
public function testIsTerminalWhenForceTerminalWasUsedBeforeFirstCallToConstructor() { $this->if(\mageekguy\atoum\cli::forceTerminal())->and($adapter = new atoum\test\adapter())->and($adapter->defined = function ($constant) { switch ($constant) { case 'PHP_WINDOWS_VERSION_BUILD': return false; case 'STDOUT': return false; } })->and($cli = new atoum\cli($adapter))->then->boolean($cli->isTerminal())->isTrue()->if($otherCli = new atoum\cli())->then->boolean($otherCli->isTerminal())->isTrue(); }