From 35b5bff97702ba2aca44b0c9541c15e2eefabd1e Mon Sep 17 00:00:00 2001 From: Christiano Becker Date: Mon, 20 Feb 2023 14:59:41 -0300 Subject: [PATCH] * Added test tests/php_exceptions_007.phpt --- tests/php_exceptions_007.phpt | 54 +++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 tests/php_exceptions_007.phpt diff --git a/tests/php_exceptions_007.phpt b/tests/php_exceptions_007.phpt new file mode 100644 index 0000000..a02c69e --- /dev/null +++ b/tests/php_exceptions_007.phpt @@ -0,0 +1,54 @@ +--TEST-- +Test V8::executeString() : PHP Exception handling (throwed inside magic method) +--SKIPIF-- + +--FILE-- +triggerException(); + } +} + +function execute($code, $flags = V8Js::FLAG_NONE) { + $js = new V8Js(); + $js->output = new stdClass(); + $js->SomeClassInstance = new SomeClass(); + try { + $js->executeString(" + try { + $code + } catch(e) { + PHP.output.result = 'Caught exception at javascript level : ' + e.getMessage(); + } + ", '', $flags); + print($js->output->result.PHP_EOL); + } catch (Exception $e) { + print( "Caught exception at php level : ".$e->getMessage().PHP_EOL); + } +} + +execute("PHP.SomeClassInstance.triggerException();"); +execute("PHP.SomeClassInstance.someMethod(PHP.SomeClassInstance.TriggerMagicMethod);"); +execute("PHP.SomeClassInstance.TriggerMagicMethod;"); +execute("PHP.SomeClassInstance.triggerException();", V8Js::FLAG_PROPAGATE_PHP_EXCEPTIONS); +execute("PHP.SomeClassInstance.someMethod(PHP.SomeClassInstance.TriggerMagicMethod);", V8Js::FLAG_PROPAGATE_PHP_EXCEPTIONS); +execute("PHP.SomeClassInstance.TriggerMagicMethod;", V8Js::FLAG_PROPAGATE_PHP_EXCEPTIONS); +?> +===EOF=== +--EXPECTF-- +Caught exception at php level : Some exception +Caught exception at php level : Some exception +Caught exception at php level : Some exception +Caught exception at javascript level : Some exception +Caught exception at javascript level : Some exception +Caught exception at javascript level : Some exception +===EOF===