1--TEST--
2pcntl_sigwaitinfo() errors
3--EXTENSIONS--
4pcntl
5--SKIPIF--
6<?php if (!function_exists("pcntl_sigwaitinfo")) die("skip pcntl_sigtimedwait() not available"); ?>
7--INI--
8max_execution_time=0
9--FILE--
10<?php
11
12try {
13    /* This used to return -1 prior to PHP 8.4.0 */
14    $signals = [];
15    $signal_no = pcntl_sigwaitinfo($signals, $signal_infos);
16    var_dump($signal_no);
17} catch (\Throwable $e) {
18    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
19}
20
21try {
22    $signals = [0];
23    $signal_no = pcntl_sigwaitinfo($signals, $signal_infos);
24    var_dump($signal_no);
25} catch (\Throwable $e) {
26    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
27}
28try {
29    $signals = [-1];
30    $signal_no = pcntl_sigwaitinfo($signals, $signal_infos);
31    var_dump($signal_no);
32} catch (\Throwable $e) {
33    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
34}
35
36try {
37    $signals = ["not a signal"];
38    $signal_no = pcntl_sigwaitinfo($signals, $signal_infos);
39    var_dump($signal_no);
40} catch (\Throwable $e) {
41    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
42}
43
44/* Unlikely valid signal */
45try {
46    $signals = [2**10];
47    $signal_no = pcntl_sigwaitinfo($signals, $signal_infos);
48    var_dump($signal_no);
49} catch (\Throwable $e) {
50    echo $e::class, ': ', $e->getMessage(), PHP_EOL;
51}
52?>
53--EXPECTF--
54ValueError: pcntl_sigwaitinfo(): Argument #1 ($signals) cannot be empty
55ValueError: pcntl_sigwaitinfo(): Argument #1 ($signals) signals must be between 1 and %d
56ValueError: pcntl_sigwaitinfo(): Argument #1 ($signals) signals must be between 1 and %d
57TypeError: pcntl_sigwaitinfo(): Argument #1 ($signals) signals must be of type int, string given
58ValueError: pcntl_sigwaitinfo(): Argument #1 ($signals) signals must be between 1 and %d
59