mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00

We are adding extra (non-phpt) test suites in [1] and [2]. In order to avoid touching CI files too often (which are maintained in 8.1 and merged in upper branches), we add a single entry point to call the extra tests. The entry point can be updated in branches without synchronizing all the way from 8.1. CI files still need to be touched to install dependencies of these tests, but this should be manageable as these do not change often and are the same in every branch. Closes GH-19242. [1] https://github.com/php/php-src/pull/16987 [2] https://github.com/php/php-src/pull/18939
123 lines
3.2 KiB
PHP
Executable file
123 lines
3.2 KiB
PHP
Executable file
#!/usr/bin/env php
|
|
<?php
|
|
/*
|
|
+----------------------------------------------------------------------+
|
|
| Copyright (c) The PHP Group |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to version 3.01 of the PHP license, |
|
|
| that is bundled with this package in the file LICENSE, and is |
|
|
| available through the world-wide-web at the following url: |
|
|
| https://www.php.net/license/3_01.txt |
|
|
| If you did not receive a copy of the PHP license and are unable to |
|
|
| obtain it through the world-wide-web, please send a note to |
|
|
| license@php.net so we can mail you a copy immediately. |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
/* This is a single entrypoint for non-phpt tests. */
|
|
|
|
class Environment
|
|
{
|
|
public function __construct(
|
|
public string $os,
|
|
public string $cpuArch,
|
|
public bool $zts,
|
|
public bool $debug,
|
|
public bool $githubAction,
|
|
) {}
|
|
}
|
|
|
|
function show_usage(): void
|
|
{
|
|
echo <<<HELP
|
|
Synopsis:
|
|
php run-extra-tests.php
|
|
|
|
Environment variables:
|
|
TEST_PHP_OS: One of 'Windows NT', 'Linux', 'FreeBSD', 'Darwin'
|
|
TEST_PHP_CPU_ARCH: One of 'x86', 'x86_64', 'aarch64'
|
|
|
|
HELP;
|
|
}
|
|
|
|
function main(int $argc, array $argv): void
|
|
{
|
|
if ($argc !== 1) {
|
|
show_usage();
|
|
exit(1);
|
|
}
|
|
|
|
$environment = new Environment(
|
|
detect_os(),
|
|
detect_cpu_arch(),
|
|
PHP_ZTS,
|
|
PHP_DEBUG,
|
|
getenv('GITHUB_ACTIONS') === 'true',
|
|
);
|
|
|
|
echo "=====================================================================\n";
|
|
echo "OS: {$environment->os}\n";
|
|
echo "CPU Arch: {$environment->cpuArch}\n";
|
|
echo "ZTS: " . ($environment->zts ? 'Yes' : 'No') . "\n";
|
|
echo "DEBUG: " . ($environment->debug ? 'Yes' : 'No') . "\n";
|
|
echo "=====================================================================\n";
|
|
|
|
echo "No tests in this branch yet.\n";
|
|
|
|
echo "All OK\n";
|
|
}
|
|
|
|
function output_group_start(Environment $environment, string $name): void
|
|
{
|
|
if ($environment->githubAction) {
|
|
printf("::group::%s\n", $name);
|
|
} else {
|
|
printf("%s\n", $name);
|
|
}
|
|
}
|
|
|
|
function output_group_end(Environment $environment): void
|
|
{
|
|
if ($environment->githubAction) {
|
|
printf("::endgroup::\n");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns getenv('TEST_PHP_OS') if defined, otherwise returns one of
|
|
* 'Windows NT', 'Linux', 'FreeBSD', 'Darwin', ...
|
|
*/
|
|
function detect_os(): string
|
|
{
|
|
$os = (string) getenv('TEST_PHP_OS');
|
|
if ($os !== '') {
|
|
return $os;
|
|
}
|
|
|
|
return php_uname('s');
|
|
}
|
|
|
|
/**
|
|
* Returns getenv('TEST_PHP_CPU_ARCH') if defined, otherwise returns one of
|
|
* 'x86', 'x86_64', 'aarch64', ...
|
|
*/
|
|
function detect_cpu_arch(): string
|
|
{
|
|
$cpu = (string) getenv('TEST_PHP_CPU_ARCH');
|
|
if ($cpu !== '') {
|
|
return $cpu;
|
|
}
|
|
|
|
$cpu = php_uname('m');
|
|
if (strtolower($cpu) === 'amd64') {
|
|
$cpu = 'x86_64';
|
|
} else if (in_array($cpu, ['i386', 'i686'])) {
|
|
$cpu = 'x86';
|
|
} else if ($cpu === 'arm64') {
|
|
$cpu = 'aarch64';
|
|
}
|
|
|
|
return $cpu;
|
|
}
|
|
|
|
main($argc, $argv);
|