|
|
|
|
@ -43,18 +43,42 @@ class ServerEnvironmentTest extends TestCase |
|
|
|
|
$method = new ReflectionMethod(Translator::class, 'registerServerEnvironment'); |
|
|
|
|
$code = $method->invoke($compiler, 'C:\\project\\"quoted"\\main.php'); |
|
|
|
|
|
|
|
|
|
$this->assertStringContainsString( |
|
|
|
|
'const char *value = "' . $compiler->escapeString('C:\\project\\"quoted"\\main.php') . '";', |
|
|
|
|
$code |
|
|
|
|
); |
|
|
|
|
$this->assertStringContainsString('php::Var &_SERVER = _global_var__SERVER;', $code); |
|
|
|
|
$this->assertStringContainsString('php::Str php_self = "PHP_SELF";', $code); |
|
|
|
|
$this->assertStringContainsString('php::Str script_name = "SCRIPT_NAME";', $code); |
|
|
|
|
$this->assertStringContainsString('php::Str script_filename = "SCRIPT_FILENAME";', $code); |
|
|
|
|
$this->assertStringContainsString('php::Str path_translated = "PATH_TRANSLATED";', $code); |
|
|
|
|
$this->assertStringContainsString('php::Str document_root = "DOCUMENT_ROOT";', $code); |
|
|
|
|
$this->assertStringContainsString('_SERVER.item("PHP_SELF", true) = value;', $code); |
|
|
|
|
$this->assertStringContainsString('_SERVER.item("SCRIPT_NAME", true) = value;', $code); |
|
|
|
|
$this->assertStringContainsString('_SERVER.item("SCRIPT_FILENAME", true) = value;', $code); |
|
|
|
|
$this->assertStringContainsString('_SERVER.item("PATH_TRANSLATED", true) = value;', $code); |
|
|
|
|
$this->assertStringContainsString('_SERVER.item("DOCUMENT_ROOT", true) = "";', $code); |
|
|
|
|
$this->assertStringNotContainsString('php::Str', $code); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testCaseInsensitiveMainWrapperInitializesServerEnvironment(): void |
|
|
|
|
{ |
|
|
|
|
global $translator; |
|
|
|
|
$previousTranslator = $translator ?? null; |
|
|
|
|
$file = $this->testDir . '/uppercase-main.php'; |
|
|
|
|
file_put_contents($file, "<?php\nfunction MAIN(): void {}\n");
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
$compiler = CompilerTest::create($this->testDir); |
|
|
|
|
$translator = $compiler; |
|
|
|
|
$compiler->addFiles([$file]); |
|
|
|
|
$compiler->prepareFile($file); |
|
|
|
|
$cppFile = $compiler->convertFile($file); |
|
|
|
|
$code = file_get_contents($cppFile); |
|
|
|
|
} finally { |
|
|
|
|
$translator = $previousTranslator; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$this->assertStringContainsString( |
|
|
|
|
'php::Str value = "' . $compiler->escapeString('C:\\project\\"quoted"\\main.php') . '";', |
|
|
|
|
'const char *value = "' . $compiler->escapeString(realpath($file)) . '";', |
|
|
|
|
$code |
|
|
|
|
); |
|
|
|
|
$this->assertStringContainsString('_SERVER.item(path_translated, true) = value;', $code); |
|
|
|
|
$this->assertStringContainsString('_SERVER.item(document_root, true) = "";', $code); |
|
|
|
|
$this->assertStringContainsString('_SERVER.item("PHP_SELF", true) = value;', $code); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public function testServerGlobalIsForcedOnlyForBinaryBuilds(): void |
|
|
|
|
|