Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
c12bbd4
Zend: Add tests for offsets and containers
Girgias Nov 19, 2023
282c5bb
Add an appending test
Girgias Nov 20, 2023
f1eb4a7
Generate tests comparing compile time to runtime offset behaviour
Girgias Nov 20, 2023
35fc83a
Generate tests for invalid containers and check output
Girgias Nov 28, 2023
38087dd
Generate tests for null container and check output
Girgias Nov 29, 2023
a49c505
Use helper file
Girgias Nov 29, 2023
b490523
Generate tests for object container and check output
Girgias Nov 29, 2023
355e65b
Generate tests for false container and check output
Girgias Nov 29, 2023
f2bd69d
Generate tests for array container and check output
Girgias Nov 29, 2023
fe2e94f
Generate tests for string container and check output
Girgias Nov 29, 2023
79aa4e0
Revert run test
Girgias Nov 29, 2023
fc1a3a2
Add unset()
Girgias Dec 2, 2023
fc7aa51
Add more containers
Girgias Dec 3, 2023
a0425d5
Add more offsets
Girgias Dec 3, 2023
81fb17a
Fix string container behaviour test
Girgias Dec 3, 2023
d9ff087
Add empty array as offset in tests
Girgias Dec 10, 2023
b5bb4b8
Unify the var_export helper
Girgias Dec 10, 2023
53c32f3
Add objects as offset in tests
Girgias Dec 10, 2023
083c5e5
Add STDERR resource as offset in tests
Girgias Dec 10, 2023
b03a539
Add dimension handler internal object to zend_test
Girgias Jan 15, 2024
405d7eb
Add test demonstrating internal objects need to opt-in to supporting …
Girgias Jan 15, 2024
ab562c6
Fix wording/comments
Girgias Jan 16, 2024
7ecc1fd
Use arithmetic operation instead of concat
Girgias Jan 16, 2024
898a0ec
Add tests for nesting dimensions
Girgias Jan 16, 2024
fe0f6e5
Add test for no offset in read op
Girgias Jan 17, 2024
b766187
Address review comments
Girgias Jan 17, 2024
ff2a92a
Improve test for internal handlers
Girgias Jan 17, 2024
0ebbd7d
Add container test for ArrayAccess
Girgias Jan 18, 2024
b12bdf2
Add container test for ArrayObject
Girgias Jan 18, 2024
7daec93
Check also extended ArrayObject
Girgias Jan 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix string container behaviour test
  • Loading branch information
Girgias committed Jan 18, 2024
commit 81fb17aa057c63a2ba230ed66fbfa6f488f99b61
114 changes: 107 additions & 7 deletions Zend/tests/offsets/string_container_offset_behaviour.phpt
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
--TEST--
String containers behaviour with offsets
--XFAIL--
INF offset on string doesn't behave like other floats for isset()/empty()
--FILE--
<?php

Expand Down Expand Up @@ -30,6 +28,33 @@ OUTPUT;

$EXPECTED_OUTPUT_VALID_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT_VALID_OFFSETS) . '$/s';

const EXPECTED_OUTPUT_VALID_OFFSETS_OUT_OF_RANGE = <<<OUTPUT
Read before write:

Warning: Uninitialized string offset %i in %s on line 8
string(0) ""
Write:

Warning: Illegal string offset %i in %s on line 15
Read:

Warning: Uninitialized string offset %i in %s on line 22
string(0) ""
Read-Write:
Cannot use assign-op operators with string offsets
isset():
bool(false)
empty():
bool(true)
Coalesce():
string(7) "default"
unset():
Cannot unset string offsets

OUTPUT;

$EXPECTED_OUTPUT_VALID_OFFSETS_OUT_OF_RANGE_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT_VALID_OFFSETS_OUT_OF_RANGE) . '$/s';

const EXPECTED_OUTPUT_STRING_CAST_OFFSETS = <<<OUTPUT
Read before write:

Expand Down Expand Up @@ -61,6 +86,41 @@ OUTPUT;

$EXPECTED_OUTPUT_STRING_CAST_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT_STRING_CAST_OFFSETS) . '$/s';

const EXPECTED_OUTPUT_STRING_CAST_OFFSETS_OUT_OF_RANGE = <<<OUTPUT
Read before write:

Warning: String offset cast occurred in %s on line 8

Warning: Uninitialized string offset %i in %s on line 8
string(0) ""
Write:

Warning: String offset cast occurred in %s on line 15

Warning: Illegal string offset %i in %s on line 15
Read:

Warning: String offset cast occurred in %s on line 22

Warning: Uninitialized string offset %i in %s on line 22
string(0) ""
Read-Write:

Warning: String offset cast occurred in %s on line 29
Cannot use assign-op operators with string offsets
isset():
bool(false)
empty():
bool(true)
Coalesce():
string(7) "default"
unset():
Cannot unset string offsets

OUTPUT;

$EXPECTED_OUTPUT_STRING_CAST_OFFSETS_OUT_OF_RANGE_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT_STRING_CAST_OFFSETS_OUT_OF_RANGE) . '$/s';

const EXPECTF_OUTPUT_FLOAT_OFFSETS = <<<OUTPUT
Read before write:

Expand Down Expand Up @@ -88,16 +148,53 @@ empty():
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 42
bool(false)
Coalesce():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 48
string(7) "vappend"
string(1) "v"
unset():
Cannot unset string offsets

OUTPUT;

$EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTF_OUTPUT_FLOAT_OFFSETS) . '$/s';

const EXPECTF_OUTPUT_FLOAT_OFFSETS_OUT_OF_RANGE = <<<OUTPUT
Read before write:

Warning: String offset cast occurred in %s on line 8

Warning: Uninitialized string offset %i in %s on line 8
string(0) ""
Write:

Warning: String offset cast occurred in %s on line 15

Warning: Illegal string offset %i in %s on line 15
Read:

Warning: String offset cast occurred in %s on line 22

Warning: Uninitialized string offset %i in %s on line 22
string(0) ""
Read-Write:

Warning: String offset cast occurred in %s on line 29
Cannot use assign-op operators with string offsets
isset():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 36
bool(false)
empty():

Deprecated: Implicit conversion from float %F to int loses precision in %s on line 42
bool(true)
Coalesce():
string(7) "default"
unset():
Cannot unset string offsets

OUTPUT;

$EXPECTF_OUTPUT_FLOAT_OFFSETS_OUT_OF_RANGE_REGEX = '/^' . expectf_to_regex(EXPECTF_OUTPUT_FLOAT_OFFSETS_OUT_OF_RANGE) . '$/s';

const EXPECTED_OUTPUT_INVALID_OFFSETS = <<<OUTPUT
Read before write:
Cannot access offset of type %s on string
Expand Down Expand Up @@ -189,13 +286,16 @@ foreach ($offsets as $dimension) {

if (
!preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_REGEX, $varOutput)
&& !preg_match($EXPECTED_OUTPUT_VALID_OFFSETS_OUT_OF_RANGE_REGEX, $varOutput)
&& !preg_match($EXPECTED_OUTPUT_STRING_CAST_OFFSETS_REGEX, $varOutput)
&& !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput)
&& !preg_match($EXPECTED_OUTPUT_STRING_CAST_OFFSETS_OUT_OF_RANGE_REGEX, $varOutput)
&& !preg_match($EXPECTED_OUTPUT_FLOAT_OFFSETS_REGEX, $varOutput)
&& !preg_match($EXPECTF_OUTPUT_FLOAT_OFFSETS_OUT_OF_RANGE_REGEX, $varOutput)
&& !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_REGEX, $varOutput)
&& $varOutput !== EXPECTED_OUTPUT_INVALID_OFFSETS_AS_STRINGS
&& !preg_match($EXPECTED_OUTPUT_INVALID_OFFSETS_AS_LEADING_NUMERIC_STRINGS_REGEX, $varOutput)
) {
//file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_string_container_{$failuresNb}.txt", $varOutput);
file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "debug_string_container_{$failuresNb}.txt", $varOutput);
++$failuresNb;
$failures[] = $error;
}
Expand Down