[ Index ] |
|
Code source de Symfony 1.0.0 |
1 <?php 2 /** 3 * $Id: CoverageMerger.php 3076 2006-12-18 08:52:12Z fabien $ 4 * 5 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 6 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 7 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 8 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 9 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 10 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 11 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 12 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 13 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 14 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 15 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 16 * 17 * This software consists of voluntary contributions made by many individuals 18 * and is licensed under the LGPL. For more information please see 19 * <http://phing.info>. 20 */ 21 22 require_once 'phing/system/util/Properties.php'; 23 24 /** 25 * Saves coverage output of the test to a specified database 26 * 27 * @author Michiel Rook <michiel.rook@gmail.com> 28 * @version $Id: CoverageMerger.php 3076 2006-12-18 08:52:12Z fabien $ 29 * @package phing.tasks.ext.coverage 30 * @since 2.1.0 31 */ 32 class CoverageMerger 33 { 34 private static function mergeCodeCoverage($left, $right) 35 { 36 $coverageMerged = array(); 37 38 reset($left); 39 reset($right); 40 41 while (current($left) && current($right)) 42 { 43 $linenr_left = key($left); 44 $linenr_right = key($right); 45 46 if ($linenr_left < $linenr_right) 47 { 48 $coverageMerged[$linenr_left] = current($left); 49 50 next($left); 51 } 52 else 53 if ($linenr_right < $linenr_left) 54 { 55 $coverageMerged[$linenr_right] = current($right); 56 next($right); 57 } 58 else 59 { 60 if (current($left) < 0) 61 { 62 $coverageMerged[$linenr_right] = current($right); 63 } 64 else 65 if (current($right) < 0) 66 { 67 $coverageMerged[$linenr_right] = current($left); 68 } 69 else 70 { 71 $coverageMerged[$linenr_right] = current($left) + current($right); 72 } 73 74 next($left); 75 next($right); 76 } 77 } 78 79 while (current($left)) 80 { 81 $coverageMerged[key($left)] = current($left); 82 next($left); 83 } 84 85 while (current($right)) 86 { 87 $coverageMerged[key($right)] = current($right); 88 next($right); 89 } 90 91 return $coverageMerged; 92 } 93 94 static function merge($project, $codeCoverageInformation) 95 { 96 $database = new PhingFile($project->getProperty('coverage.database')); 97 98 $props = new Properties(); 99 $props->load($database); 100 101 $coverageTotal = $codeCoverageInformation; 102 103 foreach ($coverageTotal as $coverage) 104 { 105 foreach ($coverage as $filename => $coverageFile) 106 { 107 $filename = strtolower($filename); 108 109 if ($props->getProperty($filename) != null) 110 { 111 $file = unserialize($props->getProperty($filename)); 112 $left = $file['coverage']; 113 $right = $coverageFile; 114 115 $coverageMerged = CoverageMerger::mergeCodeCoverage($left, $right); 116 117 $file['coverage'] = $coverageMerged; 118 119 $props->setProperty($filename, serialize($file)); 120 } 121 } 122 } 123 124 $props->store($database); 125 } 126 } 127 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Fri Mar 16 22:42:14 2007 | par Balluche grâce à PHPXref 0.7 |