AllTests.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category ZendX
  16. * @package ZendX_Db
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id: $
  21. */
  22. if (!defined('PHPUnit_MAIN_METHOD')) {
  23. define('PHPUnit_MAIN_METHOD', 'ZendX_Db_AllTests::main');
  24. }
  25. /**
  26. * Test helper
  27. */
  28. require_once dirname(__FILE__) . '/../../TestHelper.php';
  29. /**
  30. * PHPUnit_Framework_TestSuite
  31. */
  32. require_once 'PHPUnit/Framework/TestSuite.php';
  33. /**
  34. * PHPUnit_TextUI_TestRunner
  35. */
  36. require_once 'PHPUnit/TextUI/TestRunner.php';
  37. /**
  38. * @see Zend_Loader
  39. */
  40. require_once 'Zend/Loader.php';
  41. /**
  42. * @see Zend_Db_SkipTests
  43. */
  44. require_once 'ZendX/Db/SkipTests.php';
  45. /**
  46. * @see ZendX_Db_Profiler_AllTests
  47. */
  48. require_once 'Zend/Db/Profiler/AllTests.php';
  49. /**
  50. * @category ZendX
  51. * @package ZendX_Db
  52. * @subpackage UnitTests
  53. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  54. * @license http://framework.zend.com/license/new-bsd New BSD License
  55. */
  56. class ZendX_Db_AllTests
  57. {
  58. protected static $_skipTestSuite = null;
  59. public static function main()
  60. {
  61. PHPUnit_TextUI_TestRunner::run(self::suite());
  62. }
  63. public static function suite()
  64. {
  65. $suite = new PHPUnit_Framework_TestSuite('Zend Framework - ZendX_Db');
  66. /**
  67. * Static tests should always be enabled,
  68. * but if they're not, don't throw an error.
  69. */
  70. if (!defined('TESTS_ZENDX_DB_ADAPTER_STATIC_ENABLED')) {
  71. define('TESTS_ZENDX_DB_ADAPTER_STATIC_ENABLED', false);
  72. }
  73. self::_addDbTestSuites($suite, 'Firebird');
  74. /**
  75. * @todo self::_addDbTestSuites($suite, 'Odbc');
  76. */
  77. if (self::$_skipTestSuite !== null) {
  78. $suite->addTest(self::$_skipTestSuite);
  79. }
  80. $suite->addTest(Zend_Db_Profiler_AllTests::suite());
  81. return $suite;
  82. }
  83. protected static function _addDbTestSuites($suite, $driver)
  84. {
  85. $DRIVER = strtoupper($driver);
  86. $enabledConst = "TESTS_ZEND_DB_ADAPTER_{$DRIVER}_ENABLED";
  87. if (!defined($enabledConst) || constant($enabledConst) != true) {
  88. self::_skipTestSuite($driver, "this Adapter is not enabled in TestConfiguration.php");
  89. return;
  90. }
  91. $ext = array(
  92. 'Firebird' => 'interbase',
  93. /**
  94. * @todo 'Odbc'
  95. */
  96. );
  97. if (isset($ext[$driver]) && !extension_loaded($ext[$driver])) {
  98. self::_skipTestSuite($driver, "extension '{$ext[$driver]}' is not loaded");
  99. return;
  100. }
  101. if (preg_match('/^pdo_(.*)/i', $driver, $matches)) {
  102. // check for PDO extension
  103. if (!extension_loaded('pdo')) {
  104. self::_skipTestSuite($driver, "extension 'PDO' is not loaded");
  105. return;
  106. }
  107. // check the PDO driver is available
  108. $pdo_driver = strtolower($matches[1]);
  109. if (!in_array($pdo_driver, PDO::getAvailableDrivers())) {
  110. self::_skipTestSuite($driver, "PDO driver '{$pdo_driver}' is not available");
  111. return;
  112. }
  113. }
  114. try {
  115. Zend_Loader::loadClass("ZendX_Db_Adapter_{$driver}Test");
  116. Zend_Loader::loadClass("ZendX_Db_Profiler_{$driver}Test");
  117. Zend_Loader::loadClass("ZendX_Db_Statement_{$driver}Test");
  118. Zend_Loader::loadClass("ZendX_Db_Select_{$driver}Test");
  119. Zend_Loader::loadClass("ZendX_Db_Table_{$driver}Test");
  120. Zend_Loader::loadClass("ZendX_Db_Table_Select_{$driver}Test");
  121. Zend_Loader::loadClass("ZendX_Db_Table_Rowset_{$driver}Test");
  122. Zend_Loader::loadClass("ZendX_Db_Table_Row_{$driver}Test");
  123. Zend_Loader::loadClass("ZendX_Db_Table_Relationships_{$driver}Test");
  124. // if we get this far, there have been no exceptions loading classes
  125. // so we can add them as test suites
  126. $suite->addTestSuite("ZendX_Db_Adapter_{$driver}Test");
  127. $suite->addTestSuite("ZendX_Db_Profiler_{$driver}Test");
  128. $suite->addTestSuite("ZendX_Db_Statement_{$driver}Test");
  129. $suite->addTestSuite("ZendX_Db_Select_{$driver}Test");
  130. $suite->addTestSuite("ZendX_Db_Table_{$driver}Test");
  131. $suite->addTestSuite("Zendx_Db_Table_Select_{$driver}Test");
  132. $suite->addTestSuite("ZendX_Db_Table_Rowset_{$driver}Test");
  133. $suite->addTestSuite("ZendX_Db_Table_Row_{$driver}Test");
  134. $suite->addTestSuite("ZendX_Db_Table_Relationships_{$driver}Test");
  135. } catch (Zend_Exception $e) {
  136. self::_skipTestSuite($driver, "cannot load test classes: " . $e->getMessage());
  137. }
  138. }
  139. protected static function _skipTestSuite($driver, $message = '')
  140. {
  141. $skipTestClass = "ZendX_Db_Skip_{$driver}Test";
  142. $skipTest = new $skipTestClass();
  143. $skipTest->message = $message;
  144. if (self::$_skipTestSuite === null) {
  145. self::$_skipTestSuite = new PHPUnit_Framework_TestSuite('ZendX_Db skipped test suites');
  146. }
  147. self::$_skipTestSuite->addTest($skipTest);
  148. }
  149. }
  150. if (PHPUnit_MAIN_METHOD == 'Zend_DbX_AllTests::main') {
  151. Zend_Db_AllTests::main();
  152. }