arginfo_zpp_mismatch.phpt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. --TEST--
  2. Test that there is no arginfo/zpp mismatch
  3. --SKIPIF--
  4. <?php
  5. if (getenv('SKIP_MSAN')) die("skip msan misses interceptors for some functions");
  6. ?>
  7. --FILE--
  8. <?php
  9. require __DIR__ . "/arginfo_zpp_mismatch.inc";
  10. function test($function) {
  11. if (skipFunction($function)) {
  12. return;
  13. }
  14. ob_start();
  15. if (is_string($function)) {
  16. echo "Testing $function\n";
  17. } else {
  18. echo "Testing " . get_class($function[0]) . "::$function[1]\n";
  19. }
  20. try {
  21. @$function();
  22. } catch (Throwable) {
  23. }
  24. try {
  25. @$function(null);
  26. } catch (Throwable) {
  27. }
  28. try {
  29. @$function(null, null);
  30. } catch (Throwable) {
  31. }
  32. try {
  33. @$function(null, null, null);
  34. } catch (Throwable) {
  35. }
  36. try {
  37. @$function(null, null, null, null);
  38. } catch (Throwable) {
  39. }
  40. try {
  41. @$function(null, null, null, null, null);
  42. } catch (Throwable) {
  43. }
  44. try {
  45. @$function(null, null, null, null, null, null);
  46. } catch (Throwable) {
  47. }
  48. try {
  49. @$function(null, null, null, null, null, null, null);
  50. } catch (Throwable) {
  51. }
  52. try {
  53. @$function(null, null, null, null, null, null, null, null);
  54. } catch (Throwable) {
  55. }
  56. ob_end_clean();
  57. }
  58. foreach (get_defined_functions()["internal"] as $function) {
  59. test($function);
  60. }
  61. foreach (get_declared_classes() as $class) {
  62. try {
  63. $rc = new ReflectionClass($class);
  64. $obj = $rc->newInstanceWithoutConstructor();
  65. } catch (Throwable) {
  66. continue;
  67. }
  68. foreach (get_class_methods($class) as $method) {
  69. test([$obj, $method]);
  70. }
  71. }
  72. // var_dump() and debug_zval_dump() print all arguments
  73. ?>
  74. ===DONE===
  75. --EXPECT--
  76. ===DONE===