48 lines
1.7 KiB
PHP
Executable File
Generated
48 lines
1.7 KiB
PHP
Executable File
Generated
#!/usr/bin/env php
|
|
<?php
|
|
// This file is auto-generated by alef — DO NOT EDIT.
|
|
// alef:hash:4e15143f4af1ae8bafbdb1506ef057da924484c66a19483966333558ad437e75
|
|
// To regenerate: alef generate
|
|
// To verify freshness: alef verify --exit-code
|
|
// Issues & docs: https://github.com/kreuzberg-dev/alef
|
|
|
|
declare(strict_types=1);
|
|
|
|
// Determine platform-specific extension suffix.
|
|
$extSuffix = match (PHP_OS_FAMILY) {
|
|
'Darwin' => '.dylib',
|
|
default => '.so',
|
|
};
|
|
$extPath = __DIR__ . '/../../target/release/libkreuzberg_php' . $extSuffix;
|
|
|
|
// If the locally-built extension exists and we have not already restarted with it,
|
|
// re-exec PHP with the freshly-built extension loaded explicitly via `-d extension=`.
|
|
// The system php.ini is kept (no `-n`) so PHPUnit's required extensions — dom, json,
|
|
// libxml, mbstring, tokenizer, xml, xmlwriter — remain available. `-n` drops every
|
|
// shared module, which breaks PHPUnit on distributions that ship those as shared
|
|
// extensions (e.g. Debian/Ubuntu); they only survive `-n` where compiled statically.
|
|
if (file_exists($extPath) && !getenv('ALEF_PHP_LOCAL_EXT_LOADED')) {
|
|
putenv('ALEF_PHP_LOCAL_EXT_LOADED=1');
|
|
$php = PHP_BINARY;
|
|
$phpunitPath = __DIR__ . '/vendor/bin/phpunit';
|
|
|
|
$cmd = array_merge(
|
|
[$php, '-d', 'extension=' . $extPath],
|
|
[$phpunitPath],
|
|
array_slice($GLOBALS['argv'], 1)
|
|
);
|
|
|
|
passthru(implode(' ', array_map('escapeshellarg', $cmd)), $exitCode);
|
|
exit($exitCode);
|
|
}
|
|
|
|
// Extension is now loaded (via the restart above).
|
|
// Invoke PHPUnit normally.
|
|
$phpunitPath = __DIR__ . '/vendor/bin/phpunit';
|
|
if (!file_exists($phpunitPath)) {
|
|
echo "PHPUnit not found at $phpunitPath. Run 'composer install' first.\n";
|
|
exit(1);
|
|
}
|
|
|
|
require $phpunitPath;
|