php-src/tests/output/sapi_windows_vt100_support.inc
Michele Locati 33301d5bae Add VT100 support for Windows
Fix function names prefix

Use Unicode version of GetFinalPathNameByHandle

Use EG(windows_version_info) instead of RtlGetVersion

Use the specified handle_id instead of STD_OUTPUT_HANDLE

Switch from stream name to stream resource

Allow running tests capturing only stdout and/or stderr

Add tests for stream_vt100_support function

Export Win32 console functions

Fix x64 build

Use zend_long instead of long long, use GetConsole instead of GetFinalPathNameByHandleW to check if a handle is a valid console stream

Always use zend_long on any platform

Use _get_osfhandle to determine the standard handle

Accept stream names

Raise warnings in case of invalid stream parameter

Return true if disabling VT100 support on a not-console/redirected stream or on old Windows versions

Remove php_win32_console_os_supports_vt100

Differentiate stdin vs stdout/stderr

Simplify setting flag

Allow avoid piping STDIN

Let stream_vt100_support accept only resources

Fix run-tests

Revert console flags in case of failure

Simplify logic of stream_vt100_support when setting the flag

Return true if succeeded, false otherwise

Drop support for STDIN

More comprehensive tests for stream_vt100_support

Remove old tests

Fix name of included file and use absolute paths

Enable ENABLE_VIRTUAL_TERMINAL_PROCESSING on Windows by default

Remove tests for stream_vt100_support

Split stream_vt100_support into stream_isatty+sapi_windows_vt100_support

Add tests for stream_isatty

Add tests for sapi_windows_vt100_support

Return null from stream_isatty is neither Windows nor Posix

Fallback to S_ISCHR if neither Windows nor Posix

Avoid defining argc since it's only used once

Better comment about php_win32_console_fileno_is_console

Use events instead of cNumberOfEvents

Do not restore previous console mode

We need to restore previous console mode on failing SetConsole calls only for STDIN

Don't configure STDOUT/STDERR on Windows with PHP_CLI_WIN32_NO_CONSOLE
2016-10-28 19:23:00 +02:00

66 lines
2.2 KiB
PHP

<?php
function resetVT100State()
{
$state = array(
sapi_windows_vt100_support(STDIN),
sapi_windows_vt100_support(STDOUT),
sapi_windows_vt100_support(STDERR),
);
sapi_windows_vt100_support(STDIN, false);
sapi_windows_vt100_support(STDOUT, false);
sapi_windows_vt100_support(STDERR, false);
return $state;
}
function restoreVT100State(array $state)
{
sapi_windows_vt100_support(STDIN, $state[0]);
sapi_windows_vt100_support(STDOUT, $state[1]);
sapi_windows_vt100_support(STDERR, $state[2]);
}
function testToStdOut()
{
$state = resetVT100State();
$sampleStreams = array(
'STDIN (constant)' => STDIN,
'STDIN (fopen)' => fopen('php://stdin', 'rb'),
'STDIN (php://fd/0)' => fopen('php://fd/0', 'rb'),
'STDOUT (constant)' => STDOUT,
'STDOUT (fopen)' => fopen('php://stdout', 'wb'),
'STDOUT (php://fd/1)' => fopen('php://fd/1', 'wb'),
'STDERR (constant)' => STDERR,
'STDERR (fopen)' => fopen('php://stderr', 'wb'),
'STDERR (php://fd/2)' => fopen('php://fd/2', 'wb'),
'Not a stream' => 'foo',
'Invalid stream (php://temp)' => fopen('php://temp', 'wb'),
'Invalid stream (php://input)' => fopen('php://input', 'wb'),
'Invalid stream (php://memory)' => fopen('php://memory', 'wb'),
'File stream' => $closeMe = fopen(__FILE__, 'rb'),
);
foreach ($sampleStreams as $name => $stream) {
echo "$name:\n";
echo "- current value : "; var_dump(sapi_windows_vt100_support($stream));
echo "- enabling VT100 : "; var_dump(sapi_windows_vt100_support($stream, true));
echo "- current value : "; var_dump(sapi_windows_vt100_support($stream));
echo "- disabling VT100: "; var_dump(sapi_windows_vt100_support($stream, false));
echo "- current value : "; var_dump(sapi_windows_vt100_support($stream));
}
fclose($closeMe);
restoreVT100State($state);
}
function testToStdErr()
{
ob_start();
testToStdOut();
$result = ob_get_contents();
ob_end_clean();
fwrite(STDERR, $result);
}