bootstrap.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?php
  2. use Cake\Cache\Cache;
  3. use Cake\Core\Configure;
  4. use Cake\Core\Plugin;
  5. use Cake\Datasource\ConnectionManager;
  6. use Cake\Log\Log;
  7. use Cake\Mailer\Mailer;
  8. use Cake\Mailer\TransportFactory;
  9. use Cake\Routing\Route\DashedRoute;
  10. use Cake\Routing\Router;
  11. use Cake\TestSuite\Fixture\SchemaLoader;
  12. use Cake\Utility\Security;
  13. use Shim\Filesystem\Folder;
  14. use TestApp\Controller\AppController;
  15. use Tools\ToolsPlugin;
  16. use function Cake\Core\env;
  17. if (!defined('DS')) {
  18. define('DS', DIRECTORY_SEPARATOR);
  19. }
  20. if (!defined('WINDOWS')) {
  21. if (DS === '\\' || substr(PHP_OS, 0, 3) === 'WIN') {
  22. define('WINDOWS', true);
  23. } else {
  24. define('WINDOWS', false);
  25. }
  26. }
  27. define('ROOT', dirname(__DIR__));
  28. define('TMP', ROOT . DS . 'tmp' . DS);
  29. define('LOGS', TMP . 'logs' . DS);
  30. define('CACHE', TMP . 'cache' . DS);
  31. define('APP', sys_get_temp_dir());
  32. define('APP_DIR', 'src');
  33. define('CAKE_CORE_INCLUDE_PATH', ROOT . '/vendor/cakephp/cakephp');
  34. define('CORE_PATH', CAKE_CORE_INCLUDE_PATH . DS);
  35. define('CAKE', CORE_PATH . APP_DIR . DS);
  36. define('TESTS', ROOT . DS . 'tests' . DS);
  37. define('WWW_ROOT', ROOT . DS . 'webroot' . DS);
  38. define('CONFIG', __DIR__ . DS . 'config' . DS);
  39. define('TEST_FILES', ROOT . DS . 'tests' . DS . 'test_files' . DS);
  40. ini_set('intl.default_locale', 'de_DE');
  41. require_once 'vendor/autoload.php';
  42. require_once CAKE_CORE_INCLUDE_PATH . DS . 'src' . DS . 'functions.php';
  43. Configure::write('App', [
  44. 'namespace' => 'TestApp',
  45. 'encoding' => 'UTF-8',
  46. 'fullBaseUrl' => '//localhost',
  47. 'paths' => [
  48. 'templates' => [
  49. TESTS . 'templates' . DS,
  50. ],
  51. ],
  52. ]);
  53. Configure::write('debug', true);
  54. Configure::write('Config', [
  55. 'adminEmail' => 'test@example.com',
  56. 'adminName' => 'Mark',
  57. ]);
  58. Mailer::setConfig('default', ['transport' => 'Debug']);
  59. TransportFactory::setConfig('Debug', [
  60. 'className' => 'Debug',
  61. ]);
  62. mb_internal_encoding('UTF-8');
  63. $Tmp = new Folder(TMP);
  64. $Tmp->create(TMP . 'cache/models', 0770);
  65. $Tmp->create(TMP . 'cache/persistent', 0770);
  66. $Tmp->create(TMP . 'cache/views', 0770);
  67. $cache = [
  68. 'default' => [
  69. 'engine' => 'File',
  70. 'path' => CACHE,
  71. ],
  72. '_cake_core_' => [
  73. 'className' => 'File',
  74. 'prefix' => 'crud_myapp_cake_core_',
  75. 'path' => CACHE . 'persistent/',
  76. 'serialize' => true,
  77. 'duration' => '+10 seconds',
  78. ],
  79. '_cake_model_' => [
  80. 'className' => 'File',
  81. 'prefix' => 'crud_my_app_cake_model_',
  82. 'path' => CACHE . 'models/',
  83. 'serialize' => 'File',
  84. 'duration' => '+10 seconds',
  85. ],
  86. ];
  87. Cache::setConfig($cache);
  88. Log::setConfig('debug', [
  89. 'className' => 'Cake\Log\Engine\FileLog',
  90. 'path' => LOGS,
  91. 'file' => 'debug',
  92. 'scopes' => null,
  93. 'levels' => ['notice', 'info', 'debug'],
  94. 'url' => env('LOG_DEBUG_URL', null),
  95. ]);
  96. Log::setConfig('error', [
  97. 'className' => 'Cake\Log\Engine\FileLog',
  98. 'path' => LOGS,
  99. 'file' => 'error',
  100. 'scopes' => null,
  101. 'levels' => ['warning', 'error', 'critical', 'alert', 'emergency'],
  102. 'url' => env('LOG_ERROR_URL', null),
  103. ]);
  104. Security::setSalt('foo');
  105. // Why is this required?
  106. require ROOT . DS . 'config' . DS . 'bootstrap.php';
  107. Router::defaultRouteClass(DashedRoute::class);
  108. class_alias(AppController::class, 'App\Controller\AppController');
  109. Plugin::getCollection()->add(new ToolsPlugin());
  110. // Ensure default test connection is defined
  111. if (!getenv('DB_URL')) {
  112. putenv('DB_URL=sqlite:///:memory:');
  113. }
  114. ConnectionManager::setConfig('test', [
  115. 'url' => getenv('DB_URL') ?: null,
  116. 'timezone' => 'UTC',
  117. 'quoteIdentifiers' => true,
  118. 'cacheMetadata' => true,
  119. ]);
  120. if (env('FIXTURE_SCHEMA_METADATA')) {
  121. $loader = new SchemaLoader();
  122. $loader->loadInternalFile(env('FIXTURE_SCHEMA_METADATA'));
  123. }