From 95baf779a124fe399cbd61f81cbd3dedb6f69f8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C5=BEuris?= Date: Thu, 7 Sep 2023 10:45:20 +0300 Subject: [PATCH 1/5] Skip double redirects --- run-tests.php | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/run-tests.php b/run-tests.php index 6f10e4090bdbf..841caa4ff2dd8 100755 --- a/run-tests.php +++ b/run-tests.php @@ -1892,6 +1892,12 @@ function run_test(string $php, $file, array $env): string $junit->markTestAs('BORK', $shortname, $tested_file, 0, $ex->getMessage()); return 'BORKED'; + } catch (RedirectException $ex) { + show_result("SKIP", $ex->getMessage(), $tested_file); + + $junit->markTestAs('SKIP', $shortname, $tested_file, 0, $ex->getMessage()); + + return 'SKIPPED'; } $tested = $test->getName(); @@ -3296,6 +3302,10 @@ class BorkageException extends Exception { } +class RedirectException extends Exception +{ +} + class JUnit { private bool $enabled = true; @@ -3735,7 +3745,7 @@ class TestFile ]; /** - * @throws BorkageException + * @throws BorkageException|RedirectException */ public function __construct(string $fileName, bool $inRedirect) { @@ -3880,7 +3890,7 @@ private function readFile(): void } /** - * @throws BorkageException + * @throws BorkageException|RedirectException */ private function validateAndProcess(bool $inRedirect): void { @@ -3888,7 +3898,7 @@ private function validateAndProcess(bool $inRedirect): void // a given test dir if ($this->hasSection('REDIRECTTEST')) { if ($inRedirect) { - throw new BorkageException("Can't redirect a test from within a redirected test"); + throw new RedirectException("Can't redirect a test from within a redirected test"); } return; } From bca54e5a1a3a4115c15bf39e47dba388d1cf74f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C5=BEuris?= Date: Thu, 7 Sep 2023 10:47:21 +0300 Subject: [PATCH 2/5] Allow having PDO::connect in the PDO test factory --- ext/pdo/tests/pdo_test.inc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ext/pdo/tests/pdo_test.inc b/ext/pdo/tests/pdo_test.inc index ba9f159228fc2..3c924ec54c35c 100644 --- a/ext/pdo/tests/pdo_test.inc +++ b/ext/pdo/tests/pdo_test.inc @@ -23,6 +23,8 @@ class PDOTest { $user = getenv('PDOTEST_USER'); $pass = getenv('PDOTEST_PASS'); $attr = getenv('PDOTEST_ATTR'); + $useConnect = getenv('PDOTEST_USECONNECT'); + if (is_string($attr) && strlen($attr)) { $attr = unserialize($attr); } else { @@ -32,7 +34,11 @@ class PDOTest { if ($user === false) $user = NULL; if ($pass === false) $pass = NULL; - $db = new $classname($dsn, $user, $pass, $attr); + if ($useConnect) { + $db = $classname::connect($dsn, $user, $pass, $attr); + } else { + $db = new $classname($dsn, $user, $pass, $attr); + } if (!$db) { die("Could not create PDO object (DSN=$dsn, user=$user)\n"); From 54054b849b79754c3a5980c037f653417cb78d9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C5=BEuris?= Date: Thu, 7 Sep 2023 10:50:29 +0300 Subject: [PATCH 3/5] Redirect PDO & PGSQL tests to PDO::connect --- .../tests/subclass_through_pdo_suite.phpt | 27 +++++++++++++++++++ .../tests/subclass_through_pgsql_suite.phpt | 27 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 ext/pdo_pgsql/tests/subclass_through_pdo_suite.phpt create mode 100644 ext/pdo_pgsql/tests/subclass_through_pgsql_suite.phpt diff --git a/ext/pdo_pgsql/tests/subclass_through_pdo_suite.phpt b/ext/pdo_pgsql/tests/subclass_through_pdo_suite.phpt new file mode 100644 index 0000000000000..4803ba211e898 --- /dev/null +++ b/ext/pdo_pgsql/tests/subclass_through_pdo_suite.phpt @@ -0,0 +1,27 @@ +--TEST-- +Postgres subclass +--EXTENSIONS-- +pdo_pgsql +--REDIRECTTEST-- +# Executes the pdo testsuite using PDO::connect() + +$config = [ + 'TESTS' => __DIR__ . '/ext/pdo/tests', + 'ENV' => [ + 'PDOTEST_USECONNECT' => true, + ], +]; + +if (false !== getenv('PDO_PGSQL_TEST_DSN')) { + # user set them from their shell + $config['ENV']['PDOTEST_DSN'] = getenv('PDO_PGSQL_TEST_DSN'); + if (false !== getenv('PDO_PGSQL_TEST_ATTR')) { + $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_PGSQL_TEST_ATTR'); + } +} else { + $config['ENV']['PDOTEST_DSN'] = 'pgsql:host=localhost port=5432 dbname=test user=postgres password=postgres'; + $config['ENV']['PDOTEST_USER'] = 'postgres'; + $config['ENV']['PDOTEST_PASS'] = 'postgres'; +} + +return $config; diff --git a/ext/pdo_pgsql/tests/subclass_through_pgsql_suite.phpt b/ext/pdo_pgsql/tests/subclass_through_pgsql_suite.phpt new file mode 100644 index 0000000000000..3556b18293946 --- /dev/null +++ b/ext/pdo_pgsql/tests/subclass_through_pgsql_suite.phpt @@ -0,0 +1,27 @@ +--TEST-- +Postgres subclass +--EXTENSIONS-- +pdo_pgsql +--REDIRECTTEST-- +# Executes the pdo_pgsql testsuite using PDO::connect() + +$config = [ + 'TESTS' => __DIR__ . '/ext/pdo_pgsql/tests', + 'ENV' => [ + 'PDOTEST_USECONNECT' => true, + ], +]; + +if (false !== getenv('PDO_PGSQL_TEST_DSN')) { + # user set them from their shell + $config['ENV']['PDOTEST_DSN'] = getenv('PDO_PGSQL_TEST_DSN'); + if (false !== getenv('PDO_PGSQL_TEST_ATTR')) { + $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_PGSQL_TEST_ATTR'); + } +} else { + $config['ENV']['PDOTEST_DSN'] = 'pgsql:host=localhost port=5432 dbname=test user=postgres password=postgres'; + $config['ENV']['PDOTEST_USER'] = 'postgres'; + $config['ENV']['PDOTEST_PASS'] = 'postgres'; +} + +return $config; From 0b91fd4fba47961d689abfe9e340d25de2397435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C5=BEuris?= Date: Thu, 7 Sep 2023 10:51:31 +0300 Subject: [PATCH 4/5] Skip unneeded double testing --- ext/pdo_pgsql/tests/subclasses/pdopgsql_001.phpt | 8 ++++++++ ext/pdo_pgsql/tests/subclasses/pdopgsql_002.phpt | 8 ++++++++ ext/pdo_pgsql/tests/subclasses/pdopgsql_003.phpt | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/ext/pdo_pgsql/tests/subclasses/pdopgsql_001.phpt b/ext/pdo_pgsql/tests/subclasses/pdopgsql_001.phpt index 91ddb4a6f9fc0..6a6c1de49159f 100644 --- a/ext/pdo_pgsql/tests/subclasses/pdopgsql_001.phpt +++ b/ext/pdo_pgsql/tests/subclasses/pdopgsql_001.phpt @@ -2,6 +2,14 @@ PdoPgsql subclass basic --EXTENSIONS-- pdo_mysql +--SKIPIF-- + --FILE-- --FILE-- --FILE-- Date: Thu, 7 Sep 2023 10:54:27 +0300 Subject: [PATCH 5/5] Exclude aunapplicable PDO tests from PDO::connect redirect --- ext/pdo/tests/bug_43663.phpt | 6 ++++++ ext/pdo/tests/bug_72788.phpt | 6 ++++++ ext/pdo/tests/bug_77849.phpt | 6 ++++++ ext/pdo/tests/pdo_023.phpt | 6 ++++++ ext/pdo/tests/pdo_026.phpt | 6 ++++++ ext/pdo/tests/pdo_029.phpt | 6 ++++++ ext/pdo/tests/pdo_030.phpt | 6 ++++++ ext/pdo/tests/pecl_bug_5217.phpt | 6 ++++++ 8 files changed, 48 insertions(+) diff --git a/ext/pdo/tests/bug_43663.phpt b/ext/pdo/tests/bug_43663.phpt index dddf87748957f..7cb655a842d1c 100644 --- a/ext/pdo/tests/bug_43663.phpt +++ b/ext/pdo/tests/bug_43663.phpt @@ -8,6 +8,12 @@ $dir = getenv('REDIR_TEST_DIR'); if (false == $dir) die('skip no driver'); require_once $dir . 'pdo_test.inc'; PDOTest::skip(); + +if (getenv('PDOTEST_USECONNECT')) { + die('skip Test not customized for PDO::connect()'); +} + +echo 'nocache'; ?> --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE-- --FILE--