1: <?php
 2: /**
 3:  * A class to contain test cases and run them with shared fixtures
 4:  *
 5:  * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 6:  * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 7:  *
 8:  * Licensed under The MIT License
 9:  * For full copyright and license information, please see the LICENSE.txt
10:  * Redistributions of files must retain the above copyright notice.
11:  *
12:  * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
13:  * @link          http://cakephp.org CakePHP(tm) Project
14:  * @package       Cake.TestSuite
15:  * @since         CakePHP(tm) v 2.0
16:  * @license       http://www.opensource.org/licenses/mit-license.php MIT License
17:  */
18: 
19: App::uses('Folder', 'Utility');
20: 
21: /**
22:  * A class to contain test cases and run them with shared fixtures
23:  *
24:  * @package       Cake.TestSuite
25:  */
26: class CakeTestSuite extends PHPUnit_Framework_TestSuite {
27: 
28: /**
29:  * Adds all the files in a directory to the test suite. Does not recurse through directories.
30:  *
31:  * @param string $directory The directory to add tests from.
32:  * @return void
33:  */
34:     public function addTestDirectory($directory = '.') {
35:         $Folder = new Folder($directory);
36:         list(, $files) = $Folder->read(true, true, true);
37: 
38:         foreach ($files as $file) {
39:             if (substr($file, -4) === '.php') {
40:                 $this->addTestFile($file);
41:             }
42:         }
43:     }
44: 
45: /**
46:  * Recursively adds all the files in a directory to the test suite.
47:  *
48:  * @param string $directory The directory subtree to add tests from.
49:  * @return void
50:  */
51:     public function addTestDirectoryRecursive($directory = '.') {
52:         $Folder = new Folder($directory);
53:         $files = $Folder->tree(null, true, 'files');
54: 
55:         foreach ($files as $file) {
56:             if (substr($file, -4) === '.php') {
57:                 $this->addTestFile($file);
58:             }
59:         }
60:     }
61: 
62: }
63: