PHP Classes

File: build/phpunit/Bindings/phpunit_coverage.php

Recommend this page to a friend!
  Classes of Will Tinsdeall   Boiler Framework   build/phpunit/Bindings/phpunit_coverage.php   Download  
File: build/phpunit/Bindings/phpunit_coverage.php
Role: Auxiliary script
Content type: text/plain
Description: Unit test script
Class: Boiler Framework
Web application framework that implements MVC
Author: By
Last change:
Date: 9 years ago
Size: 3,600 bytes
 

Contents

Class file image Download
<?php
/**
 * PHPUnit
 *
 * Copyright (c) 2010-2012, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * * Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in
 * the documentation and/or other materials provided with the
 * distribution.
 *
 * * Neither the name of Sebastian Bergmann nor the names of his
 * contributors may be used to endorse or promote products derived
 * from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @category Selenium
 * @package PHPUnit_Selenium
 * @author Sebastian Bergmann <sb@sebastian-bergmann.de>
 * @copyright 2010-2012 Sebastian Bergmann <sb@sebastian-bergmann.de>
 * @license http://www.opensource.org/licenses/bsd-license.php BSD License
 * @link http://www.phpunit.de/
 * @since File available since Release 1.0.0
 */

require_once 'File/Iterator/Autoload.php';
require_once
'PHP/CodeCoverage/Autoload.php';

// Set this to the directory that contains the code coverage files.
// It defaults to getcwd(). If you have configured a different directory
// in prepend.php, you need to configure the same directory here.
$GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'] = __DIR__."/../../logs/";

if (isset(
$_GET['PHPUNIT_SELENIUM_TEST_ID'])) {
   
$facade = new File_Iterator_Facade;
   
//$files = $facade->getFilesAsArray(
    // $GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'],
    // $_GET['PHPUNIT_SELENIUM_TEST_ID']
    // );

   
$coverage = array();
   
$dir = opendir($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY']);
    while (
$file = readdir($dir)) {
        if (
substr($file, strlen($_GET['PHPUNIT_SELENIUM_TEST_ID'])*-1) != $_GET['PHPUNIT_SELENIUM_TEST_ID']) {
            continue;
        }
       
//die($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'].$file);
       
$data = unserialize(file_get_contents($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'].$file));
       
unlink($GLOBALS['PHPUNIT_COVERAGE_DATA_DIRECTORY'].$file);
        unset(
$file);
       
$filter = new PHP_CodeCoverage_Filter();

        foreach (
$data as $file => $lines) {
            if (
$filter->isFile($file)) {
                if (!isset(
$coverage[$file])) {
                   
$coverage[$file] = array(
                           
'md5' => md5_file($file), 'coverage' => $lines
                   
);
                } else {
                    foreach (
$lines as $line => $flag) {
                        if (!isset(
$coverage[$file]['coverage'][$line]) ||
                       
$flag > $coverage[$file]['coverage'][$line]) {
                           
$coverage[$file]['coverage'][$line] = $flag;
                        }
                    }
                }
            }
        }
    }

    print
serialize($coverage);
}