Tests - load test suits dynamically with directory iterator
[tine20] / tests / tine20 / AllTests.php
1 <?php
2 /**
3  * Tine 2.0 - http://www.tine20.org
4  * 
5  * @package     Tinebase
6  * @license     http://www.gnu.org/licenses/agpl.html
7  * @copyright   Copyright (c) 2007-2017 Metaways Infosystems GmbH (http://www.metaways.de)
8  * @author      Matthias Greiling <m.greiling@metaways.de>
9  */
10
11 // needed for bootstrap / autoloader
12 require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'TestHelper.php';
13
14 /**
15  * @package     Tinebase
16  */
17 class AllTests
18 {
19     public static function main()
20     {
21         PHPUnit_TextUI_TestRunner::run(self::suite());
22     }
23     
24     public static function suite()
25     {
26         $suite = new PHPUnit_Framework_TestSuite('Tine 2.0 All Tests');
27
28         $oldSuits = array(
29             'Tinebase',
30             'Addressbook',
31             'Admin',
32             'Felamimail',
33             'Calendar',
34             'Crm',
35             'Tasks',
36             'Voipmanager',
37             'Phone',
38             'Sales',
39             'Timetracker',
40             'Courses',
41             'ActiveSync',
42             'Filemanager',
43             'Projects',
44             'HumanResources',
45             'Inventory',
46             'Events',
47             'ExampleApplication',
48             'SimpleFAQ',
49             'CoreData',
50             'Zend'
51         );
52
53         foreach($oldSuits as $className) {
54             $className .= '_AllTests';
55             $suite->addTest($className::suite());
56         }
57
58         // this will not find ./library/OpenDocument/AllTests.php ... but it had not been added previously neither. So nothing changed with regards to that
59         foreach(new DirectoryIterator(__DIR__) as $dirIter) {
60             if ($dirIter->isDir() && !$dirIter->isDot() &&
61                     is_file($dirIter->getPathname() . DIRECTORY_SEPARATOR . 'AllTests.php') &&
62                     'Scheduler' !== $dirIter->getFilename() &&
63                     !in_array($dirIter->getFilename(), $oldSuits)) {
64                 $className = $dirIter->getFilename() . '_AllTests';
65                 $suite->addTest($className::suite());
66             }
67         }
68         
69         return $suite;
70     }
71 }