@@ -19,6 +19,18 @@ class_alias('\PHPUnit_Util_TestSuiteIterator', '\PHPUnit\Framework\TestSuiteIter
1919 class_alias ('\PHPUnit_Util_Fileloader ' , '\PHPUnit\Util\Fileloader ' );
2020}
2121
22+ if (class_exists ('\PHPUnit_Runner_Filter_Factory ' )) {
23+ class_alias ('\PHPUnit_Runner_Filter_Factory ' , '\PHPUnit\Runner\Filter\Factory ' );
24+ }
25+
26+ if (class_exists ('\PHPUnit_Runner_Filter_ExcludeGroupFilterIterator ' )) {
27+ class_alias ('\PHPUnit_Runner_Filter_ExcludeGroupFilterIterator ' , '\PHPUnit\Runner\Filter\ExcludeGroupFilterIterator ' );
28+ }
29+
30+ if (class_exists ('\PHPUnit_Runner_Filter_IncludeGroupFilterIterator ' )) {
31+ class_alias ('\PHPUnit_Runner_Filter_IncludeGroupFilterIterator ' , '\PHPUnit\Runner\Filter\IncludeGroupFilterIterator ' );
32+ }
33+
2234/*
2335 * Trigger autoload for possible file loader versions.
2436 * This fixes the problem with PHP classes being case insensitive versus composer case sensitive autoloader.
@@ -34,16 +46,52 @@ public static function execute($xmlFile)
3446 $ testSuites = new TestsQueue ();
3547
3648 self ::handleBootstrap ($ configuration ->getPHPUnitConfiguration ());
37- self ::processTestSuite ($ testSuites , $ configuration ->getTestSuiteConfiguration ()->getIterator ());
49+ $ testSuite = static ::filterTestSuite ($ configuration );
50+ self ::processTestSuite ($ testSuites , $ testSuite ->getIterator ());
3851
3952 return $ testSuites ;
4053 }
4154
55+ private static function filterTestSuite (
56+ \PHPUnit \Util \Configuration $ configuration
57+ ) {
58+ $ testSuite = $ configuration ->getTestSuiteConfiguration ();
59+ $ groupConfiguration = $ configuration ->getGroupConfiguration ();
60+
61+ if (empty ($ groupConfiguration ['exclude ' ]) && empty ($ groupConfiguration ['include ' ])) {
62+ return $ testSuite ;
63+ }
64+
65+ $ filterFactory = new \PHPUnit \Runner \Filter \Factory ();
66+
67+ if (!empty ($ groupConfiguration ['exclude ' ])) {
68+ $ filterFactory ->addFilter (
69+ new \ReflectionClass (\PHPUnit \Runner \Filter \ExcludeGroupFilterIterator::class),
70+ $ groupConfiguration ['exclude ' ]
71+ );
72+ }
73+
74+ if (!empty ($ groupConfiguration ['include ' ])) {
75+ $ filterFactory ->addFilter (
76+ new \ReflectionClass (\PHPUnit \Runner \Filter \IncludeGroupFilterIterator::class),
77+ $ groupConfiguration ['include ' ]
78+ );
79+ }
80+
81+ $ testSuite ->injectFilter ($ filterFactory );
82+
83+ return $ testSuite ;
84+ }
85+
4286 private static function processTestSuite (
4387 TestsQueue $ testSuites ,
44- \PHPUnit \ Framework \ TestSuiteIterator $ testSuiteIterator
88+ \RecursiveIterator $ testSuiteIterator
4589 ) {
4690 foreach ($ testSuiteIterator as $ testSuite ) {
91+ if ($ testSuite ->count () === 0 ) {
92+ continue ;
93+ }
94+
4795 self ::addTestFile ($ testSuites , $ testSuite );
4896
4997 if ($ testSuite instanceof \PHPUnit \Framework \TestSuite) {
0 commit comments