Yaffs site version 1.1
[yaffs-website] / vendor / phpunit / phpunit / tests / Util / ConfigurationTest.php
1 <?php
2 /*
3  * This file is part of PHPUnit.
4  *
5  * (c) Sebastian Bergmann <sebastian@phpunit.de>
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 /**
12  * @since      Class available since Release 3.3.0
13  */
14 class Util_ConfigurationTest extends PHPUnit_Framework_TestCase
15 {
16     protected $configuration;
17
18     protected function setUp()
19     {
20         $this->configuration = PHPUnit_Util_Configuration::getInstance(
21             dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.xml'
22         );
23     }
24
25     /**
26      * @covers PHPUnit_Util_Configuration::getInstance
27      * @expectedException PHPUnit_Framework_Exception
28      */
29     public function testExceptionIsThrownForNotExistingConfigurationFile()
30     {
31         PHPUnit_Util_Configuration::getInstance('not_existing_file.xml');
32     }
33
34     /**
35      * @covers PHPUnit_Util_Configuration::getPHPUnitConfiguration
36      */
37     public function testShouldReadColorsWhenTrueInConfigurationfile()
38     {
39         $configurationFilename =  dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.colors.true.xml';
40         $configurationInstance = PHPUnit_Util_Configuration::getInstance($configurationFilename);
41         $configurationValues   = $configurationInstance->getPHPUnitConfiguration();
42
43         $this->assertEquals(PHPUnit_TextUI_ResultPrinter::COLOR_AUTO, $configurationValues['colors']);
44     }
45
46     /**
47      * @covers PHPUnit_Util_Configuration::getPHPUnitConfiguration
48      */
49     public function testShouldReadColorsWhenFalseInConfigurationfile()
50     {
51         $configurationFilename =  dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.colors.false.xml';
52         $configurationInstance = PHPUnit_Util_Configuration::getInstance($configurationFilename);
53         $configurationValues   = $configurationInstance->getPHPUnitConfiguration();
54
55         $this->assertEquals(PHPUnit_TextUI_ResultPrinter::COLOR_NEVER, $configurationValues['colors']);
56     }
57
58     /**
59      * @covers PHPUnit_Util_Configuration::getPHPUnitConfiguration
60      */
61     public function testShouldReadColorsWhenEmptyInConfigurationfile()
62     {
63         $configurationFilename =  dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.colors.empty.xml';
64         $configurationInstance = PHPUnit_Util_Configuration::getInstance($configurationFilename);
65         $configurationValues   = $configurationInstance->getPHPUnitConfiguration();
66
67         $this->assertEquals(PHPUnit_TextUI_ResultPrinter::COLOR_NEVER, $configurationValues['colors']);
68     }
69
70     /**
71      * @covers PHPUnit_Util_Configuration::getPHPUnitConfiguration
72      */
73     public function testShouldReadColorsWhenInvalidInConfigurationfile()
74     {
75         $configurationFilename =  dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration.colors.invalid.xml';
76         $configurationInstance = PHPUnit_Util_Configuration::getInstance($configurationFilename);
77         $configurationValues   = $configurationInstance->getPHPUnitConfiguration();
78
79         $this->assertEquals(PHPUnit_TextUI_ResultPrinter::COLOR_NEVER, $configurationValues['colors']);
80     }
81
82     /**
83      * @covers PHPUnit_Util_Configuration::getFilterConfiguration
84      */
85     public function testFilterConfigurationIsReadCorrectly()
86     {
87         $this->assertEquals(
88             array(
89             'blacklist' =>
90             array(
91               'include' =>
92               array(
93                 'directory' =>
94                 array(
95                   0 =>
96                   array(
97                     'path'   => '/path/to/files',
98                     'prefix' => '',
99                     'suffix' => '.php',
100                     'group'  => 'DEFAULT'
101                   ),
102                 ),
103                 'file' =>
104                 array(
105                   0 => '/path/to/file',
106                   1 => '/path/to/file',
107                 ),
108               ),
109               'exclude' =>
110               array(
111                 'directory' =>
112                 array(
113                   0 =>
114                   array(
115                     'path'   => '/path/to/files',
116                     'prefix' => '',
117                     'suffix' => '.php',
118                     'group'  => 'DEFAULT'
119                   ),
120                 ),
121                 'file' =>
122                 array(
123                   0 => '/path/to/file',
124                 ),
125               ),
126             ),
127             'whitelist' =>
128             array(
129               'addUncoveredFilesFromWhitelist'     => true,
130               'processUncoveredFilesFromWhitelist' => false,
131               'include'                            =>
132               array(
133                 'directory' =>
134                 array(
135                   0 =>
136                   array(
137                     'path'   => '/path/to/files',
138                     'prefix' => '',
139                     'suffix' => '.php',
140                     'group'  => 'DEFAULT'
141                   ),
142                 ),
143                 'file' =>
144                 array(
145                   0 => '/path/to/file',
146                 ),
147               ),
148               'exclude' =>
149               array(
150                 'directory' =>
151                 array(
152                   0 =>
153                   array(
154                     'path'   => '/path/to/files',
155                     'prefix' => '',
156                     'suffix' => '.php',
157                     'group'  => 'DEFAULT'
158                   ),
159                 ),
160                 'file' =>
161                 array(
162                   0 => '/path/to/file',
163                 ),
164               ),
165             ),
166             ),
167             $this->configuration->getFilterConfiguration()
168         );
169     }
170
171     /**
172      * @covers PHPUnit_Util_Configuration::getGroupConfiguration
173      */
174     public function testGroupConfigurationIsReadCorrectly()
175     {
176         $this->assertEquals(
177             array(
178             'include' =>
179             array(
180               0 => 'name',
181             ),
182             'exclude' =>
183             array(
184               0 => 'name',
185             ),
186             ),
187             $this->configuration->getGroupConfiguration()
188         );
189     }
190
191     /**
192      * @covers PHPUnit_Util_Configuration::getListenerConfiguration
193      */
194     public function testListenerConfigurationIsReadCorrectly()
195     {
196         $dir         = __DIR__;
197         $includePath = ini_get('include_path');
198
199         ini_set('include_path', $dir . PATH_SEPARATOR . $includePath);
200
201         $this->assertEquals(
202             array(
203             0 =>
204             array(
205               'class'     => 'MyListener',
206               'file'      => '/optional/path/to/MyListener.php',
207               'arguments' =>
208               array(
209                 0 =>
210                 array(
211                   0 => 'Sebastian',
212                 ),
213                 1 => 22,
214                 2 => 'April',
215                 3 => 19.78,
216                 4 => null,
217                 5 => new stdClass,
218                 6 => dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'MyTestFile.php',
219                 7 => dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'MyRelativePath',
220               ),
221             ),
222             array(
223               'class'     => 'IncludePathListener',
224               'file'      => __FILE__,
225               'arguments' => array()
226             ),
227             array(
228               'class'     => 'CompactArgumentsListener',
229               'file'      => '/CompactArgumentsListener.php',
230               'arguments' =>
231               array(
232                 0 => 42
233               ),
234             ),
235             ),
236             $this->configuration->getListenerConfiguration()
237         );
238
239         ini_set('include_path', $includePath);
240     }
241
242     /**
243      * @covers PHPUnit_Util_Configuration::getLoggingConfiguration
244      */
245     public function testLoggingConfigurationIsReadCorrectly()
246     {
247         $this->assertEquals(
248             array(
249             'lowUpperBound'        => '50',
250             'highLowerBound'       => '90',
251             'coverage-html'        => '/tmp/report',
252             'coverage-clover'      => '/tmp/clover.xml',
253             'json'                 => '/tmp/logfile.json',
254             'plain'                => '/tmp/logfile.txt',
255             'tap'                  => '/tmp/logfile.tap',
256             'logIncompleteSkipped' => false,
257             'junit'                => '/tmp/logfile.xml',
258             'testdox-html'         => '/tmp/testdox.html',
259             'testdox-text'         => '/tmp/testdox.txt',
260             ),
261             $this->configuration->getLoggingConfiguration()
262         );
263     }
264
265     /**
266      * @covers PHPUnit_Util_Configuration::getPHPConfiguration
267      */
268     public function testPHPConfigurationIsReadCorrectly()
269     {
270         $this->assertEquals(
271             array(
272             'include_path' =>
273             array(
274               dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . '.',
275               '/path/to/lib'
276             ),
277             'ini'    => array('foo' => 'bar'),
278             'const'  => array('FOO' => false, 'BAR' => true),
279             'var'    => array('foo' => false),
280             'env'    => array('foo' => true),
281             'post'   => array('foo' => 'bar'),
282             'get'    => array('foo' => 'bar'),
283             'cookie' => array('foo' => 'bar'),
284             'server' => array('foo' => 'bar'),
285             'files'  => array('foo' => 'bar'),
286             'request'=> array('foo' => 'bar'),
287             ),
288             $this->configuration->getPHPConfiguration()
289         );
290     }
291
292     /**
293      * @backupGlobals enabled
294      * @covers PHPUnit_Util_Configuration::handlePHPConfiguration
295      */
296     public function testPHPConfigurationIsHandledCorrectly()
297     {
298         $this->configuration->handlePHPConfiguration();
299
300         $path = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . '.' . PATH_SEPARATOR . '/path/to/lib';
301         $this->assertStringStartsWith($path, ini_get('include_path'));
302         $this->assertEquals(false, FOO);
303         $this->assertEquals(true, BAR);
304         $this->assertEquals(false, $GLOBALS['foo']);
305         $this->assertEquals(true, $_ENV['foo']);
306         $this->assertEquals(true, getenv('foo'));
307         $this->assertEquals('bar', $_POST['foo']);
308         $this->assertEquals('bar', $_GET['foo']);
309         $this->assertEquals('bar', $_COOKIE['foo']);
310         $this->assertEquals('bar', $_SERVER['foo']);
311         $this->assertEquals('bar', $_FILES['foo']);
312         $this->assertEquals('bar', $_REQUEST['foo']);
313     }
314
315     /**
316      * @backupGlobals enabled
317      *
318      * @see https://github.com/sebastianbergmann/phpunit/issues/1181
319      */
320     public function testHandlePHPConfigurationDoesNotOverwrittenExistingEnvArrayVariables()
321     {
322         $_ENV['foo'] = false;
323         $this->configuration->handlePHPConfiguration();
324
325         $this->assertEquals(false, $_ENV['foo']);
326         $this->assertEquals(true, getenv('foo'));
327     }
328
329     /**
330      * @backupGlobals enabled
331      *
332      * @see https://github.com/sebastianbergmann/phpunit/issues/1181
333      */
334     public function testHandlePHPConfigurationDoesNotOverriteVariablesFromPutEnv()
335     {
336         putenv('foo=putenv');
337         $this->configuration->handlePHPConfiguration();
338
339         $this->assertEquals(true, $_ENV['foo']);
340         $this->assertEquals('putenv', getenv('foo'));
341     }
342
343     /**
344      * @covers PHPUnit_Util_Configuration::getPHPUnitConfiguration
345      */
346     public function testPHPUnitConfigurationIsReadCorrectly()
347     {
348         $this->assertEquals(
349             array(
350             'backupGlobals'                      => true,
351             'backupStaticAttributes'             => false,
352             'disallowChangesToGlobalState'       => false,
353             'bootstrap'                          => '/path/to/bootstrap.php',
354             'cacheTokens'                        => false,
355             'columns'                            => 80,
356             'colors'                             => 'never',
357             'stderr'                             => false,
358             'convertErrorsToExceptions'          => true,
359             'convertNoticesToExceptions'         => true,
360             'convertWarningsToExceptions'        => true,
361             'forceCoversAnnotation'              => false,
362             'mapTestClassNameToCoveredClassName' => false,
363             'printerClass'                       => 'PHPUnit_TextUI_ResultPrinter',
364             'stopOnFailure'                      => false,
365             'reportUselessTests'                 => false,
366             'strictCoverage'                     => false,
367             'disallowTestOutput'                 => false,
368             'enforceTimeLimit'                   => false,
369             'disallowTodoAnnotatedTests'         => false,
370             'testSuiteLoaderClass'               => 'PHPUnit_Runner_StandardTestSuiteLoader',
371             'verbose'                            => false,
372             'timeoutForSmallTests'               => 1,
373             'timeoutForMediumTests'              => 10,
374             'timeoutForLargeTests'               => 60
375             ),
376             $this->configuration->getPHPUnitConfiguration()
377         );
378     }
379
380     /**
381      * @covers PHPUnit_Util_Configuration::getSeleniumBrowserConfiguration
382      */
383     public function testSeleniumBrowserConfigurationIsReadCorrectly()
384     {
385         $this->assertEquals(
386             array(
387             0 =>
388             array(
389               'name'    => 'Firefox on Linux',
390               'browser' => '*firefox /usr/lib/firefox/firefox-bin',
391               'host'    => 'my.linux.box',
392               'port'    => 4444,
393               'timeout' => 30000,
394             ),
395             ),
396             $this->configuration->getSeleniumBrowserConfiguration()
397         );
398     }
399
400     /**
401      * @covers PHPUnit_Util_Configuration::getInstance
402      */
403     public function testXincludeInConfiguration()
404     {
405         $configurationWithXinclude = PHPUnit_Util_Configuration::getInstance(
406             dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration_xinclude.xml'
407         );
408
409         $this->assertConfigurationEquals(
410             $this->configuration,
411             $configurationWithXinclude
412         );
413     }
414
415     /**
416      * @ticket 1311
417      * @covers PHPUnit_Util_Configuration::getLoggingConfiguration
418      * @covers PHPUnit_Util_Configuration::getPHPConfiguration
419      * @covers PHPUnit_Util_Configuration::getPHPUnitConfiguration
420      * @covers PHPUnit_Util_Configuration::getTestSuiteConfiguration
421      * @covers PHPUnit_Util_Configuration::getFilterConfiguration
422      *
423      * @uses   PHPUnit_Util_Configuration::getInstance
424      */
425     public function testWithEmptyConfigurations()
426     {
427         $emptyConfiguration = PHPUnit_Util_Configuration::getInstance(
428             dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'configuration_empty.xml'
429         );
430
431         $logging = $emptyConfiguration->getLoggingConfiguration();
432         $this->assertEmpty($logging);
433
434         $php = $emptyConfiguration->getPHPConfiguration();
435         $this->assertEmpty($php['include_path']);
436
437         $phpunit = $emptyConfiguration->getPHPUnitConfiguration();
438         $this->assertArrayNotHasKey('bootstrap', $phpunit);
439         $this->assertArrayNotHasKey('testSuiteLoaderFile', $phpunit);
440         $this->assertArrayNotHasKey('printerFile', $phpunit);
441
442         $suite = $emptyConfiguration->getTestSuiteConfiguration();
443         $this->assertEmpty($suite->getGroups());
444
445         $filter = $emptyConfiguration->getFilterConfiguration();
446         $this->assertEmpty($filter['blacklist']['include']['directory']);
447         $this->assertEmpty($filter['blacklist']['include']['file']);
448         $this->assertEmpty($filter['blacklist']['exclude']['directory']);
449         $this->assertEmpty($filter['blacklist']['exclude']['file']);
450         $this->assertEmpty($filter['whitelist']['include']['directory']);
451         $this->assertEmpty($filter['whitelist']['include']['file']);
452         $this->assertEmpty($filter['whitelist']['exclude']['directory']);
453         $this->assertEmpty($filter['whitelist']['exclude']['file']);
454     }
455
456     /**
457      * Asserts that the values in $actualConfiguration equal $expectedConfiguration.
458      *
459      * @param PHPUnit_Util_Configuration $expectedConfiguration
460      * @param PHPUnit_Util_Configuration $actualConfiguration
461      */
462     protected function assertConfigurationEquals(PHPUnit_Util_Configuration $expectedConfiguration, PHPUnit_Util_Configuration $actualConfiguration)
463     {
464         $this->assertEquals(
465             $expectedConfiguration->getFilterConfiguration(),
466             $actualConfiguration->getFilterConfiguration()
467         );
468
469         $this->assertEquals(
470             $expectedConfiguration->getGroupConfiguration(),
471             $actualConfiguration->getGroupConfiguration()
472         );
473
474         $this->assertEquals(
475             $expectedConfiguration->getListenerConfiguration(),
476             $actualConfiguration->getListenerConfiguration()
477         );
478
479         $this->assertEquals(
480             $expectedConfiguration->getLoggingConfiguration(),
481             $actualConfiguration->getLoggingConfiguration()
482         );
483
484         $this->assertEquals(
485             $expectedConfiguration->getPHPConfiguration(),
486             $actualConfiguration->getPHPConfiguration()
487         );
488
489         $this->assertEquals(
490             $expectedConfiguration->getPHPUnitConfiguration(),
491             $actualConfiguration->getPHPUnitConfiguration()
492         );
493
494         $this->assertEquals(
495             $expectedConfiguration->getSeleniumBrowserConfiguration(),
496             $actualConfiguration->getSeleniumBrowserConfiguration()
497         );
498
499         $this->assertEquals(
500             $expectedConfiguration->getTestSuiteConfiguration(),
501             $actualConfiguration->getTestSuiteConfiguration()
502         );
503     }
504 }