TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
54 lines
2.0 KiB
<?php
|
|
|
|
namespace TypePhp\Tests;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class CliUsageTest extends TestCase
|
|
{
|
|
public function testHelpSeparatesSubcommandsFromCompilationOptions(): void
|
|
{
|
|
$process = proc_open(
|
|
[PHP_BINARY, TYPEPHP_ROOT_PATH . '/bin/tpc.php', '--help'],
|
|
[
|
|
1 => ['pipe', 'w'],
|
|
2 => ['pipe', 'w'],
|
|
],
|
|
$pipes,
|
|
TYPEPHP_ROOT_PATH,
|
|
);
|
|
self::assertIsResource($process);
|
|
|
|
$output = stream_get_contents($pipes[1]);
|
|
$error = stream_get_contents($pipes[2]);
|
|
fclose($pipes[1]);
|
|
fclose($pipes[2]);
|
|
$status = proc_close($process);
|
|
|
|
self::assertSame(0, $status, $error);
|
|
self::assertIsString($output);
|
|
|
|
$subcommands = self::section($output, 'SUBCOMMANDS:', 'EXAMPLES:');
|
|
self::assertStringContainsString('--gen-python-helper', $subcommands);
|
|
self::assertStringContainsString('--convert-python-to-php', $subcommands);
|
|
self::assertStringContainsString('--generate-completion=bash', $subcommands);
|
|
|
|
$compilationOptions = self::section($output, 'COMPILATION OPTIONS:', 'GENERAL OPTIONS:');
|
|
self::assertStringContainsString('--nano', $compilationOptions);
|
|
self::assertStringContainsString('--wasm[=browser|component]', $compilationOptions);
|
|
self::assertStringNotContainsString('--gen-python-helper', $compilationOptions);
|
|
self::assertStringNotContainsString('--convert-python-to-php', $compilationOptions);
|
|
self::assertStringNotContainsString('--generate-completion', $compilationOptions);
|
|
}
|
|
|
|
private static function section(string $output, string $start, string $end): string
|
|
{
|
|
$startOffset = strpos($output, $start);
|
|
$endOffset = strpos($output, $end);
|
|
self::assertNotFalse($startOffset);
|
|
self::assertNotFalse($endOffset);
|
|
self::assertGreaterThan($startOffset, $endOffset);
|
|
|
|
return substr($output, $startOffset, $endOffset - $startOffset);
|
|
}
|
|
}
|
|
|