@@ -564,26 +564,46 @@ protected function applyCoversAnnotationFilter(&$data, $id)
564564 */
565565 protected function processUncoveredFilesFromWhitelist ()
566566 {
567- $ data = array ();
568-
567+ $ data = array ();
568+ $ includedFiles = array_flip ( get_included_files ());
569569 $ uncoveredFiles = array_diff (
570570 $ this ->filter ->getWhitelist (), $ this ->coveredFiles
571571 );
572572
573573 foreach ($ uncoveredFiles as $ uncoveredFile ) {
574- $ this -> driver -> start ();
575- include_once $ uncoveredFile ;
576- $ coverage = $ this ->driver -> stop ();
577-
578- foreach ( $ coverage as $ file => $ fileCoverage ) {
579- if (! isset ( $ data [ $ file ]) ) {
580- foreach ( array_keys ( $ fileCoverage ) as $ key ) {
581- if ( $ fileCoverage [$ key ] == 1 ) {
582- $ fileCoverage [ $ key ] = - 1 ;
574+ if ( isset ( $ includedFiles [ $ uncoveredFile ])) {
575+ foreach ( array_keys ( $ this -> data ) as $ test ) {
576+ if ( isset ( $ this ->data [ $ test ][ ' raw ' ][ $ uncoveredFile ])) {
577+ $ coverage = $ this -> data [ $ test ][ ' raw ' ][ $ uncoveredFile ];
578+
579+ foreach ( array_keys ( $ coverage ) as $ key ) {
580+ if ( $ coverage [ $ key] == 1 ) {
581+ $ coverage [$ key ] = - 1 ;
582+ }
583583 }
584+
585+ $ data [$ uncoveredFile ] = $ coverage ;
586+
587+ break ;
584588 }
589+ }
590+ } else {
591+ $ this ->driver ->start ();
592+ include_once $ uncoveredFile ;
593+ $ coverage = $ this ->driver ->stop ();
594+
595+ foreach ($ coverage as $ file => $ fileCoverage ) {
596+ if (!isset ($ data [$ file ]) &&
597+ in_array ($ file , $ uncoveredFiles )) {
598+ foreach (array_keys ($ fileCoverage ) as $ key ) {
599+ if ($ fileCoverage [$ key ] == 1 ) {
600+ $ fileCoverage [$ key ] = -1 ;
601+ }
602+ }
585603
586- $ data [$ file ] = $ fileCoverage ;
604+ $ data [$ file ] = $ fileCoverage ;
605+ $ includedFiles [$ file ] = TRUE ;
606+ }
587607 }
588608 }
589609 }
0 commit comments