1*f8369d7dSTobias Sarnowski<?php 2*f8369d7dSTobias Sarnowski/** 3*f8369d7dSTobias Sarnowski * Test Suite bootstrapping for DokuWiki 4*f8369d7dSTobias Sarnowski */ 5*f8369d7dSTobias Sarnowski 6*f8369d7dSTobias Sarnowskiif(!defined('DOKU_UNITTEST')) define('DOKU_UNITTEST',dirname(__FILE__).'/'); 7*f8369d7dSTobias Sarnowskirequire_once DOKU_UNITTEST.'core/phpQuery-onefile.php'; 8*f8369d7dSTobias Sarnowskirequire_once DOKU_UNITTEST.'core/DokuWikiTest.php'; 9*f8369d7dSTobias Sarnowskirequire_once DOKU_UNITTEST.'core/TestResponse.php'; 10*f8369d7dSTobias Sarnowskirequire_once DOKU_UNITTEST.'core/TestRequest.php'; 11*f8369d7dSTobias Sarnowskirequire_once DOKU_UNITTEST.'core/TestUtils.php'; 12*f8369d7dSTobias Sarnowski 13*f8369d7dSTobias Sarnowski 14*f8369d7dSTobias Sarnowski// backward compatibility to old test suite 15*f8369d7dSTobias Sarnowskidefine('SIMPLE_TEST', true); 16*f8369d7dSTobias Sarnowski 17*f8369d7dSTobias Sarnowski// basic behaviours 18*f8369d7dSTobias Sarnowskierror_reporting(E_ALL); 19*f8369d7dSTobias Sarnowskiset_time_limit(0); 20*f8369d7dSTobias Sarnowskiini_set('memory_limit','2048M'); 21*f8369d7dSTobias Sarnowski 22*f8369d7dSTobias Sarnowski// prepare temporary directories 23*f8369d7dSTobias Sarnowskidefine('DOKU_INC', dirname(dirname(__FILE__)).'/'); 24*f8369d7dSTobias Sarnowskidefine('TMP_DIR', sys_get_temp_dir().'/dwtests-'.microtime(true)); 25*f8369d7dSTobias Sarnowskidefine('DOKU_CONF', TMP_DIR.'/conf/'); 26*f8369d7dSTobias Sarnowskidefine('DOKU_TMP_DATA', TMP_DIR.'/data/'); 27*f8369d7dSTobias Sarnowski 28*f8369d7dSTobias Sarnowski// default plugins 29*f8369d7dSTobias Sarnowski$default_plugins = array( 30*f8369d7dSTobias Sarnowski 'acl', 31*f8369d7dSTobias Sarnowski 'config', 32*f8369d7dSTobias Sarnowski 'info', 33*f8369d7dSTobias Sarnowski 'plugin', 34*f8369d7dSTobias Sarnowski 'popularity', 35*f8369d7dSTobias Sarnowski 'revert', 36*f8369d7dSTobias Sarnowski 'safefnrecode', 37*f8369d7dSTobias Sarnowski 'usermanager' 38*f8369d7dSTobias Sarnowski); 39*f8369d7dSTobias Sarnowski 40*f8369d7dSTobias Sarnowski// default server variables 41*f8369d7dSTobias Sarnowski$default_server_vars = array( 42*f8369d7dSTobias Sarnowski 'QUERY_STRING' => '?id=', 43*f8369d7dSTobias Sarnowski 'REQUEST_METHOD' => 'GET', 44*f8369d7dSTobias Sarnowski 'CONTENT_TYPE' => '', 45*f8369d7dSTobias Sarnowski 'CONTENT_LENGTH' => '', 46*f8369d7dSTobias Sarnowski 'SCRIPT_NAME' => '/doku.php', 47*f8369d7dSTobias Sarnowski 'REQUEST_URI' => '/doku.php?id=', 48*f8369d7dSTobias Sarnowski 'DOCUMENT_URI' => '/doku.php', 49*f8369d7dSTobias Sarnowski 'DOCUMENT_ROOT' => DOKU_INC, 50*f8369d7dSTobias Sarnowski 'SERVER_PROTOCOL' => 'HTTP/1.1', 51*f8369d7dSTobias Sarnowski 'SERVER_SOFTWARE' => 'nginx/0.7.67', 52*f8369d7dSTobias Sarnowski 'REMOTE_ADDR' => '87.142.120.6', 53*f8369d7dSTobias Sarnowski 'REMOTE_PORT' => '21418', 54*f8369d7dSTobias Sarnowski 'SERVER_ADDR' => '46.38.241.24', 55*f8369d7dSTobias Sarnowski 'SERVER_PORT' => '443', 56*f8369d7dSTobias Sarnowski 'SERVER_NAME' => 'wiki.example.com', 57*f8369d7dSTobias Sarnowski 'REDIRECT_STATUS' => '200', 58*f8369d7dSTobias Sarnowski 'SCRIPT_FILENAME' => DOKU_INC.'doku.php', 59*f8369d7dSTobias Sarnowski 'HTTP_HOST' => 'wiki.example.com', 60*f8369d7dSTobias Sarnowski 'HTTP_USER_AGENT' => 'Mozilla/5.0 (X11; OpenBSD amd64; rv:11.0) Gecko/20100101 Firefox/11.0', 61*f8369d7dSTobias Sarnowski 'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 62*f8369d7dSTobias Sarnowski 'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5', 63*f8369d7dSTobias Sarnowski 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate', 64*f8369d7dSTobias Sarnowski 'HTTP_CONNECTION' => 'keep-alive', 65*f8369d7dSTobias Sarnowski 'HTTP_CACHE_CONTROL' => 'max-age=0', 66*f8369d7dSTobias Sarnowski 'PHP_SELF' => '/doku.php', 67*f8369d7dSTobias Sarnowski 'REQUEST_TIME' => time(), 68*f8369d7dSTobias Sarnowski); 69*f8369d7dSTobias Sarnowski 70*f8369d7dSTobias Sarnowski// create temp directories 71*f8369d7dSTobias Sarnowskimkdir(TMP_DIR); 72*f8369d7dSTobias Sarnowski 73*f8369d7dSTobias Sarnowski// cleanup dir after exit 74*f8369d7dSTobias Sarnowskiregister_shutdown_function(function() { 75*f8369d7dSTobias Sarnowski TestUtils::rdelete(TMP_DIR); 76*f8369d7dSTobias Sarnowski}); 77*f8369d7dSTobias Sarnowski 78*f8369d7dSTobias Sarnowski// populate default dirs 79*f8369d7dSTobias SarnowskiTestUtils::rcopy(TMP_DIR, dirname(__FILE__).'/conf'); 80*f8369d7dSTobias SarnowskiTestUtils::rcopy(TMP_DIR, dirname(__FILE__).'/data'); 81*f8369d7dSTobias Sarnowski 82*f8369d7dSTobias Sarnowski// disable all non-default plugins by default 83*f8369d7dSTobias Sarnowski$dh = dir(DOKU_INC.'lib/plugins/'); 84*f8369d7dSTobias Sarnowskiwhile (false !== ($entry = $dh->read())) { 85*f8369d7dSTobias Sarnowski if ($entry == '.' || $entry == '..') { 86*f8369d7dSTobias Sarnowski continue; 87*f8369d7dSTobias Sarnowski } 88*f8369d7dSTobias Sarnowski 89*f8369d7dSTobias Sarnowski if (!is_dir(DOKU_INC.'lib/plugins/'.$entry)) { 90*f8369d7dSTobias Sarnowski continue; 91*f8369d7dSTobias Sarnowski } 92*f8369d7dSTobias Sarnowski 93*f8369d7dSTobias Sarnowski if (!in_array($entry, $default_plugins)) { 94*f8369d7dSTobias Sarnowski // disable this plugin 95*f8369d7dSTobias Sarnowski TestUtils::fappend(DOKU_CONF.'plugins.local.php', "\$plugins['$entry'] = 0;\n"); 96*f8369d7dSTobias Sarnowski } 97*f8369d7dSTobias Sarnowski} 98*f8369d7dSTobias Sarnowski$dh->close(); 99*f8369d7dSTobias Sarnowski 100*f8369d7dSTobias Sarnowski// load dw 101*f8369d7dSTobias Sarnowskirequire_once(DOKU_INC.'inc/init.php'); 102*f8369d7dSTobias Sarnowski 103