bug_44159.phpt 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --TEST--
  2. PDO Common: Bug #44159 (Crash: $pdo->setAttribute(PDO::STATEMENT_ATTR_CLASS, NULL))
  3. --EXTENSIONS--
  4. pdo
  5. --SKIPIF--
  6. <?php
  7. $dir = getenv('REDIR_TEST_DIR');
  8. if (false == $dir) die('skip no driver');
  9. require_once $dir . 'pdo_test.inc';
  10. PDOTest::skip();
  11. ?>
  12. --FILE--
  13. <?php
  14. if (getenv('REDIR_TEST_DIR') === false) putenv('REDIR_TEST_DIR='.__DIR__ . '/../../pdo/tests/');
  15. require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc';
  16. $pdo = PDOTest::factory();
  17. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  18. $attrs = array(PDO::ATTR_STATEMENT_CLASS, PDO::ATTR_STRINGIFY_FETCHES);
  19. foreach ($attrs as $attr) {
  20. try {
  21. var_dump($pdo->setAttribute($attr, NULL));
  22. } catch (\Error $e) {
  23. echo get_class($e), ': ', $e->getMessage(), \PHP_EOL;
  24. }
  25. try {
  26. var_dump($pdo->setAttribute($attr, 1));
  27. } catch (\Error $e) {
  28. echo get_class($e), ': ', $e->getMessage(), \PHP_EOL;
  29. }
  30. try {
  31. var_dump($pdo->setAttribute($attr, 'nonsense'));
  32. } catch (\Error $e) {
  33. echo get_class($e), ': ', $e->getMessage(), \PHP_EOL;
  34. }
  35. }
  36. @unlink(__DIR__."/foo.db");
  37. ?>
  38. --EXPECT--
  39. TypeError: PDO::ATTR_STATEMENT_CLASS value must be of type array, null given
  40. TypeError: PDO::ATTR_STATEMENT_CLASS value must be of type array, int given
  41. TypeError: PDO::ATTR_STATEMENT_CLASS value must be of type array, string given
  42. TypeError: Attribute value must be of type bool for selected attribute, null given
  43. bool(true)
  44. TypeError: Attribute value must be of type bool for selected attribute, string given