xref: /dokuwiki/_test/bootstrap.php (revision f8369d7d6e37248d6523fdac6e1d760fca4f1b52)
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