@@ -19,6 +19,18 @@ class_alias('\PHPUnit_Util_TestSuiteIterator', '\PHPUnit\Framework\TestSuiteIter
19
19
class_alias ('\PHPUnit_Util_Fileloader ' , '\PHPUnit\Util\Fileloader ' );
20
20
}
21
21
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
+
22
34
/*
23
35
* Trigger autoload for possible file loader versions.
24
36
* This fixes the problem with PHP classes being case insensitive versus composer case sensitive autoloader.
@@ -34,16 +46,52 @@ public static function execute($xmlFile)
34
46
$ testSuites = new TestsQueue ();
35
47
36
48
self ::handleBootstrap ($ configuration ->getPHPUnitConfiguration ());
37
- self ::processTestSuite ($ testSuites , $ configuration ->getTestSuiteConfiguration ()->getIterator ());
49
+ $ testSuite = static ::filterTestSuite ($ configuration );
50
+ self ::processTestSuite ($ testSuites , $ testSuite ->getIterator ());
38
51
39
52
return $ testSuites ;
40
53
}
41
54
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
+
42
86
private static function processTestSuite (
43
87
TestsQueue $ testSuites ,
44
- \PHPUnit \ Framework \ TestSuiteIterator $ testSuiteIterator
88
+ \RecursiveIterator $ testSuiteIterator
45
89
) {
46
90
foreach ($ testSuiteIterator as $ testSuite ) {
91
+ if ($ testSuite ->count () === 0 ) {
92
+ continue ;
93
+ }
94
+
47
95
self ::addTestFile ($ testSuites , $ testSuite );
48
96
49
97
if ($ testSuite instanceof \PHPUnit \Framework \TestSuite) {
0 commit comments