mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
44b0baf705
* ext/dba/tests/setup/setup_dba_tests.inc: sort test output Iterating through a database with firstkey() and nextkey() is guaranteed to retrieve all rows, but apparently not in any particular order. This is causing a test failure for at least one user, so we steal the sort() approach from GDBM to ensure that the output is predictable. * ext/dba/tests/dba_*.phpt: sort expected test output The actual output is now sorted for consistency, so we need to update the expected output as well. As a nice side effect, some differences in the expected outputs for the various engines have been eliminated. Closes GH-14786 * ext/pgsql/tests/80_bug14383.phpt: sort expected test output This test uses a routine from ext/dba that now sorts its (actual) output, so we have to sort the expected output here as well. * ext/dba/tests/setup/setup_dba_tests.inc: update comment After doing some more digging, it looks like GDBM isn't the only engine where the iteration order with firstkey() and nextkey() might change unexpectedly.
84 lines
1.9 KiB
PHP
84 lines
1.9 KiB
PHP
--TEST--
|
|
Bug #14383 (8.0+) (using postgres with DBA causes DBA not to be able to find any keys)
|
|
--EXTENSIONS--
|
|
dba
|
|
pgsql
|
|
--SKIPIF--
|
|
<?php
|
|
require_once dirname(__DIR__, 2) . '/dba/tests/setup/setup_dba_tests.inc';
|
|
check_skip_any();
|
|
require_once('inc/skipif.inc');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
require_once('inc/config.inc');
|
|
|
|
$dbh = @pg_connect($conn_str);
|
|
if (!$dbh) {
|
|
die ("Could not connect to the server");
|
|
}
|
|
pg_close($dbh);
|
|
|
|
require_once dirname(__DIR__, 2) . '/dba/tests/setup/setup_dba_tests.inc';
|
|
$name = 'bug14383.db';
|
|
|
|
$handler = get_any_handler($name);
|
|
run_standard_tests($handler, $name);
|
|
?>
|
|
--CLEAN--
|
|
<?php
|
|
require_once dirname(__DIR__, 2) . '/dba/tests/setup/setup_dba_tests.inc';
|
|
$name = 'bug14383.db';
|
|
cleanup_standard_db($name);
|
|
?>
|
|
--EXPECTF--
|
|
Using handler: "%s"
|
|
=== RUNNING WITH FILE LOCK ===
|
|
Remove key 1 and 3
|
|
bool(true)
|
|
bool(true)
|
|
Try to remove key 1 again
|
|
bool(false)
|
|
[key10]name10: Content String 10
|
|
[key30]name30: Content String 30
|
|
key2: Content String 2
|
|
key4: Another Content String
|
|
key5: The last content string
|
|
name9: Content String 9
|
|
Total keys: 6
|
|
Key 1 exists? N
|
|
Key 2 exists? Y
|
|
Key 3 exists? N
|
|
Key 4 exists? Y
|
|
Key 5 exists? Y
|
|
Replace second key data
|
|
bool(true)
|
|
Content 2 replaced
|
|
Read during write: not allowed
|
|
Expected: Added a new data entry
|
|
Expected: Failed to insert data for already used key
|
|
Replace second key data
|
|
bool(true)
|
|
Delete "key4"
|
|
bool(true)
|
|
Fetch "key2": Content 2 replaced 2nd time
|
|
Fetch "key number 6": The 6th value
|
|
array(6) {
|
|
["[key10]name10"]=>
|
|
string(17) "Content String 10"
|
|
["[key30]name30"]=>
|
|
string(17) "Content String 30"
|
|
["key number 6"]=>
|
|
string(13) "The 6th value"
|
|
["key2"]=>
|
|
string(27) "Content 2 replaced 2nd time"
|
|
["key5"]=>
|
|
string(23) "The last content string"
|
|
["name9"]=>
|
|
string(16) "Content String 9"
|
|
}
|
|
=== RUNNING WITH DB LOCK (default) ===
|
|
SAME OUTPUT AS PREVIOUS RUN
|
|
=== RUNNING WITH NO LOCK ===
|
|
SAME OUTPUT AS PREVIOUS RUN (modulo read during write due to no lock)
|