diff options
author | Sammy Kaye Powers <sammyk@php.net> | 2020-10-23 13:38:42 -0700 |
---|---|---|
committer | Sammy Kaye Powers <sammyk@php.net> | 2020-10-26 15:15:17 -0700 |
commit | 4a6932c0766f4fa94febad70801503146d714ab3 (patch) | |
tree | 39cff116f9d38b8ea91d1135a1821024a168a88f | |
parent | ba525a68d9a76f8b4c9109a7b9f75f796b84586c (diff) | |
download | php-git-4a6932c0766f4fa94febad70801503146d714ab3.tar.gz |
Add missing observer tests
Closes GH-6378
-rw-r--r-- | ext/zend_test/tests/observer_call_user_func_01.phpt | 40 | ||||
-rw-r--r-- | ext/zend_test/tests/observer_call_user_func_02.phpt | 40 | ||||
-rw-r--r-- | ext/zend_test/tests/observer_call_user_func_03.phpt | 39 | ||||
-rw-r--r-- | ext/zend_test/tests/observer_call_user_func_04.phpt | 39 | ||||
-rw-r--r-- | ext/zend_test/tests/observer_generator_05.phpt | 53 | ||||
-rw-r--r-- | ext/zend_test/tests/observer_types_01.phpt | 28 |
6 files changed, 239 insertions, 0 deletions
diff --git a/ext/zend_test/tests/observer_call_user_func_01.phpt b/ext/zend_test/tests/observer_call_user_func_01.phpt new file mode 100644 index 0000000000..0f12fa6835 --- /dev/null +++ b/ext/zend_test/tests/observer_call_user_func_01.phpt @@ -0,0 +1,40 @@ +--TEST-- +Observer: call_user_func() from root namespace +--SKIPIF-- +<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?> +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +--FILE-- +<?php +namespace Test { + final class MyClass + { + public static function myMethod() + { + echo 'MyClass::myMethod called' . PHP_EOL; + } + } + + function my_function() + { + echo 'my_function called' . PHP_EOL; + } +} +namespace { + call_user_func('Test\\MyClass::myMethod'); + call_user_func('Test\\my_function'); +} +?> +--EXPECTF-- +<!-- init '%s/observer_call_user_func_%d.php' --> +<file '%s/observer_call_user_func_%d.php'> + <!-- init Test\MyClass::myMethod() --> + <Test\MyClass::myMethod> +MyClass::myMethod called + </Test\MyClass::myMethod> + <!-- init Test\my_function() --> + <Test\my_function> +my_function called + </Test\my_function> +</file '%s/observer_call_user_func_%d.php'> diff --git a/ext/zend_test/tests/observer_call_user_func_02.phpt b/ext/zend_test/tests/observer_call_user_func_02.phpt new file mode 100644 index 0000000000..28dd6a9825 --- /dev/null +++ b/ext/zend_test/tests/observer_call_user_func_02.phpt @@ -0,0 +1,40 @@ +--TEST-- +Observer: call_user_func_array() from root namespace +--SKIPIF-- +<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?> +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +--FILE-- +<?php +namespace Test { + final class MyClass + { + public static function myMethod(string $msg) + { + echo 'MyClass::myMethod ' . $msg . PHP_EOL; + } + } + + function my_function(string $msg) + { + echo 'my_function ' . $msg . PHP_EOL; + } +} +namespace { + call_user_func_array('Test\\MyClass::myMethod', ['called']); + call_user_func_array('Test\\my_function', ['called']); +} +?> +--EXPECTF-- +<!-- init '%s/observer_call_user_func_%d.php' --> +<file '%s/observer_call_user_func_%d.php'> + <!-- init Test\MyClass::myMethod() --> + <Test\MyClass::myMethod> +MyClass::myMethod called + </Test\MyClass::myMethod> + <!-- init Test\my_function() --> + <Test\my_function> +my_function called + </Test\my_function> +</file '%s/observer_call_user_func_%d.php'> diff --git a/ext/zend_test/tests/observer_call_user_func_03.phpt b/ext/zend_test/tests/observer_call_user_func_03.phpt new file mode 100644 index 0000000000..1ff841d434 --- /dev/null +++ b/ext/zend_test/tests/observer_call_user_func_03.phpt @@ -0,0 +1,39 @@ +--TEST-- +Observer: call_user_func() from namespace +--SKIPIF-- +<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?> +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +--FILE-- +<?php +namespace Test { + final class MyClass + { + public static function myMethod() + { + echo 'MyClass::myMethod called' . PHP_EOL; + } + } + + function my_function() + { + echo 'my_function called' . PHP_EOL; + } + + call_user_func('Test\\MyClass::myMethod'); + call_user_func('Test\\my_function'); +} +?> +--EXPECTF-- +<!-- init '%s/observer_call_user_func_%d.php' --> +<file '%s/observer_call_user_func_%d.php'> + <!-- init Test\MyClass::myMethod() --> + <Test\MyClass::myMethod> +MyClass::myMethod called + </Test\MyClass::myMethod> + <!-- init Test\my_function() --> + <Test\my_function> +my_function called + </Test\my_function> +</file '%s/observer_call_user_func_%d.php'> diff --git a/ext/zend_test/tests/observer_call_user_func_04.phpt b/ext/zend_test/tests/observer_call_user_func_04.phpt new file mode 100644 index 0000000000..9df131db4d --- /dev/null +++ b/ext/zend_test/tests/observer_call_user_func_04.phpt @@ -0,0 +1,39 @@ +--TEST-- +Observer: call_user_func_array() from namespace +--SKIPIF-- +<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?> +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +--FILE-- +<?php +namespace Test { + final class MyClass + { + public static function myMethod(string $msg) + { + echo 'MyClass::myMethod ' . $msg . PHP_EOL; + } + } + + function my_function(string $msg) + { + echo 'my_function ' . $msg . PHP_EOL; + } + + call_user_func_array('Test\\MyClass::myMethod', ['called']); + call_user_func_array('Test\\my_function', ['called']); +} +?> +--EXPECTF-- +<!-- init '%s/observer_call_user_func_%d.php' --> +<file '%s/observer_call_user_func_%d.php'> + <!-- init Test\MyClass::myMethod() --> + <Test\MyClass::myMethod> +MyClass::myMethod called + </Test\MyClass::myMethod> + <!-- init Test\my_function() --> + <Test\my_function> +my_function called + </Test\my_function> +</file '%s/observer_call_user_func_%d.php'> diff --git a/ext/zend_test/tests/observer_generator_05.phpt b/ext/zend_test/tests/observer_generator_05.phpt new file mode 100644 index 0000000000..d13f6fa39b --- /dev/null +++ b/ext/zend_test/tests/observer_generator_05.phpt @@ -0,0 +1,53 @@ +--TEST-- +Observer: Generator with uncaught exception +--SKIPIF-- +<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?> +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +zend_test.observer.show_return_value=1 +--FILE-- +<?php +function fooResults() { + yield 0; + yield 1; + throw new RuntimeException('Oops!'); +} + +function doSomething() { + $generator = fooResults(); + foreach ($generator as $value) { + echo $value . PHP_EOL; + } + + return 'You should not see this'; +} + +echo doSomething() . PHP_EOL; +?> +--EXPECTF-- +<!-- init '%s/observer_generator_%d.php' --> +<file '%s/observer_generator_%d.php'> + <!-- init doSomething() --> + <doSomething> + <!-- init fooResults() --> + <fooResults> + </fooResults:0> +0 + <fooResults> + </fooResults:1> +1 + <fooResults> + <!-- Exception: RuntimeException --> + </fooResults:NULL> + <!-- Exception: RuntimeException --> + </doSomething:NULL> + <!-- Exception: RuntimeException --> +</file '%s/observer_generator_%d.php'> + +Fatal error: Uncaught RuntimeException: Oops! in %s/observer_generator_%d.php:%d +Stack trace: +#0 %s/observer_generator_%d.php(%d): fooResults() +#1 %s/observer_generator_%d.php(%d): doSomething() +#2 {main} + thrown in %s/observer_generator_%d.php on line %d diff --git a/ext/zend_test/tests/observer_types_01.phpt b/ext/zend_test/tests/observer_types_01.phpt new file mode 100644 index 0000000000..31c1206714 --- /dev/null +++ b/ext/zend_test/tests/observer_types_01.phpt @@ -0,0 +1,28 @@ +--TEST-- +Observer: Observe basic TypeError +--SKIPIF-- +<?php if (!extension_loaded('zend-test')) die('skip: zend-test extension required'); ?> +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +zend_test.observer.show_return_value=1 +--FILE-- +<?php +function foo(array $a) { return 1; } +foo(42); +?> +--EXPECTF-- +<!-- init '%s/observer_types_%d.php' --> +<file '%s/observer_types_%d.php'> + <!-- init foo() --> + <foo> + <!-- Exception: TypeError --> + </foo:NULL> + <!-- Exception: TypeError --> +</file '%s/observer_types_%d.php'> + +Fatal error: Uncaught TypeError: foo(): Argument #1 ($a) must be of type array, int given, called in %s:%d +Stack trace: +#0 %s/observer_types_%d.php(%d): foo(42) +#1 {main} + thrown in %s/observer_types_%d.php on line %d |