Skip to content

Commit 4f0b0f2

Browse files
committed
test: fix 8.5 language tests
Signed-off-by: Alexandre Rulleau <[email protected]>
1 parent 2f7591a commit 4f0b0f2

File tree

3 files changed

+52
-5
lines changed

3 files changed

+52
-5
lines changed

dockerfiles/ci/xfail_tests/8.5.list

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ Zend/tests/arginfo_zpp_mismatch_strict.phpt
44
Zend/tests/bug63882_2.phpt
55
Zend/tests/bug69315.phpt
66
Zend/tests/bug70258.phpt
7-
Zend/tests/bug70805.phpt
8-
Zend/tests/bug70805_1.phpt
9-
Zend/tests/bug70805_2.phpt
7+
Zend/tests/gc/bug70805.phpt
8+
Zend/tests/gc/bug70805_1.phpt
9+
Zend/tests/gc/bug70805_2.phpt
10+
Zend/tests/disable_classes_warning.phpt
1011
Zend/tests/bug71539_5.phpt
1112
Zend/tests/bug72038.phpt
1213
Zend/tests/bug75921.phpt
@@ -18,8 +19,8 @@ Zend/tests/fibers/out-of-memory-in-fiber.phpt
1819
Zend/tests/fibers/out-of-memory-in-nested-fiber.phpt
1920
Zend/tests/fibers/out-of-memory-in-recursive-fiber.phpt
2021
Zend/tests/gc_031.phpt
21-
Zend/tests/gc_037.phpt
22-
Zend/tests/gc_045.phpt
22+
Zend/tests/gc/gc_037.phpt
23+
Zend/tests/gc/gc_045.phpt
2324
Zend/tests/get_defined_functions_basic.phpt
2425
Zend/tests/get_required_files.phpt
2526
Zend/tests/gh7958.phpt

dockerfiles/ci/xfail_tests/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,9 @@ The exact PHP version that a given test checks this env var varies, but these
211211
are some tests which are skipped for older versions which don't check it:
212212

213213
- `ext/sockets/tests/socket_shutdown.phpt`
214+
215+
## `Zend/tests/disable_classes_warning.phpt`
216+
217+
Disabled on versions: `8.5+`.
218+
219+
PHP 8.5 completely removed the `disable_classes` INI directive (see [RFC](https://wiki.php.net/rfc/remove_disable_classes)). This test verifies warning behavior when using the removed directive. The test expects 0 warnings but with the DD tracer loaded it returns 1, likely due to the tracer initialization triggering an unrelated warning.

ext/handlers_exception.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ static zif_handler dd_http_response_code = NULL;
2525
static zif_handler dd_set_error_handler = NULL;
2626
static zif_handler dd_set_exception_handler = NULL;
2727
static zif_handler dd_restore_exception_handler = NULL;
28+
#if PHP_VERSION_ID >= 80500
29+
static zif_handler dd_get_error_handler = NULL;
30+
static zif_handler dd_get_exception_handler = NULL;
31+
#endif
2832

2933
static void dd_check_exception_in_header(int old_response_code) {
3034
int new_response_code = SG(sapi_headers).http_response_code;
@@ -197,6 +201,38 @@ static PHP_FUNCTION(ddtrace_restore_exception_handler) {
197201
}
198202
}
199203

204+
#if PHP_VERSION_ID >= 80500
205+
static PHP_FUNCTION(ddtrace_get_error_handler) {
206+
dd_get_error_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU);
207+
208+
// Unwrap the handler if it's our wrapper
209+
if (Z_TYPE_P(return_value) == IS_OBJECT && Z_OBJCE_P(return_value) == &dd_exception_or_error_handler_ce) {
210+
zval *handler = dd_exception_or_error_handler_handler(Z_OBJ_P(return_value));
211+
zval_ptr_dtor(return_value);
212+
if (Z_ISUNDEF_P(handler)) {
213+
ZVAL_NULL(return_value);
214+
} else {
215+
ZVAL_COPY(return_value, handler);
216+
}
217+
}
218+
}
219+
220+
static PHP_FUNCTION(ddtrace_get_exception_handler) {
221+
dd_get_exception_handler(INTERNAL_FUNCTION_PARAM_PASSTHRU);
222+
223+
// Unwrap the handler if it's our wrapper
224+
if (Z_TYPE_P(return_value) == IS_OBJECT && Z_OBJCE_P(return_value) == &dd_exception_or_error_handler_ce) {
225+
zval *handler = dd_exception_or_error_handler_handler(Z_OBJ_P(return_value));
226+
zval_ptr_dtor(return_value);
227+
if (Z_ISUNDEF_P(handler)) {
228+
ZVAL_NULL(return_value);
229+
} else {
230+
ZVAL_COPY(return_value, handler);
231+
}
232+
}
233+
}
234+
#endif
235+
200236
static zend_internal_function ddtrace_exception_or_error_handler;
201237

202238
ZEND_BEGIN_ARG_INFO_EX(arginfo_ddtrace_exception_or_error_handler, 0, 0, 1)
@@ -497,6 +533,10 @@ void ddtrace_exception_handlers_startup(void) {
497533
{ZEND_STRL("set_exception_handler"), &dd_set_exception_handler, ZEND_FN(ddtrace_set_exception_handler)},
498534
{ZEND_STRL("restore_exception_handler"), &dd_restore_exception_handler,
499535
ZEND_FN(ddtrace_restore_exception_handler)},
536+
#if PHP_VERSION_ID >= 80500
537+
{ZEND_STRL("get_error_handler"), &dd_get_error_handler, ZEND_FN(ddtrace_get_error_handler)},
538+
{ZEND_STRL("get_exception_handler"), &dd_get_exception_handler, ZEND_FN(ddtrace_get_exception_handler)},
539+
#endif
500540
};
501541
size_t handlers_len = sizeof handlers / sizeof handlers[0];
502542
for (size_t i = 0; i < handlers_len; ++i) {

0 commit comments

Comments
 (0)