Skip to content

Commit 1cb5a4f

Browse files
committed
support XCache coverage API, http://xcache.lighttpd.net/wiki/XcacheApi
1 parent 10c5b2c commit 1cb5a4f

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

PHP/CodeCoverage/Autoload.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ function ($class)
6161
$classes = array(
6262
'php_codecoverage' => '/CodeCoverage.php',
6363
'php_codecoverage_driver' => '/CodeCoverage/Driver.php',
64+
'php_codecoverage_driver_xcache' => '/CodeCoverage/Driver/Xcache.php',
6465
'php_codecoverage_driver_xdebug' => '/CodeCoverage/Driver/Xdebug.php',
6566
'php_codecoverage_exception' => '/CodeCoverage/Exception.php',
6667
'php_codecoverage_filter' => '/CodeCoverage/Filter.php',

PHP/CodeCoverage/Driver/Xcache.php

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
<?php
2+
/**
3+
* PHP_CodeCoverage
4+
*
5+
* Copyright (c) 2009-2013, Sebastian Bergmann <sebastian@phpunit.de>.
6+
* All rights reserved.
7+
*
8+
* Redistribution and use in source and binary forms, with or without
9+
* modification, are permitted provided that the following conditions
10+
* are met:
11+
*
12+
* * Redistributions of source code must retain the above copyright
13+
* notice, this list of conditions and the following disclaimer.
14+
*
15+
* * Redistributions in binary form must reproduce the above copyright
16+
* notice, this list of conditions and the following disclaimer in
17+
* the documentation and/or other materials provided with the
18+
* distribution.
19+
*
20+
* * Neither the name of Sebastian Bergmann nor the names of his
21+
* contributors may be used to endorse or promote products derived
22+
* from this software without specific prior written permission.
23+
*
24+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28+
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35+
* POSSIBILITY OF SUCH DAMAGE.
36+
*
37+
* @category PHP
38+
* @package CodeCoverage
39+
* @author Sebastian Bergmann <sebastian@phpunit.de>
40+
* @copyright 2009-2013 Sebastian Bergmann <sebastian@phpunit.de>
41+
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
42+
* @link http://github.com/sebastianbergmann/php-code-coverage
43+
* @since File available since Release 1.2.14
44+
*/
45+
46+
/**
47+
* Driver for XCache's code coverage functionality.
48+
*
49+
* @category PHP
50+
* @package CodeCoverage
51+
* @author Sebastian Bergmann <sebastian@phpunit.de>
52+
* @copyright 2009-2013 Sebastian Bergmann <sebastian@phpunit.de>
53+
* @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
54+
* @link http://github.com/sebastianbergmann/php-code-coverage
55+
* @since Class available since Release 1.2.14
56+
* @codeCoverageIgnore
57+
*/
58+
class PHP_CodeCoverage_Driver_Xcache implements PHP_CodeCoverage_Driver
59+
{
60+
/**
61+
* Constructor.
62+
*/
63+
public function __construct()
64+
{
65+
if (!extension_loaded('xcache')) {
66+
throw new PHP_CodeCoverage_Exception('XCache is not loaded.');
67+
}
68+
69+
if (version_compare(phpversion('xcache'), '1.2.0', '<') ||
70+
!ini_get('xcache.coverager')) {
71+
throw new PHP_CodeCoverage_Exception(
72+
'You need to set xcache.coverager=On in your php.ini.'
73+
);
74+
}
75+
}
76+
77+
/**
78+
* Start collection of code coverage information.
79+
*/
80+
public function start()
81+
{
82+
xcache_coverager_start();
83+
}
84+
85+
/**
86+
* Stop collection of code coverage information.
87+
*
88+
* @return array
89+
*/
90+
public function stop()
91+
{
92+
$codeCoverage = xcache_coverager_get();
93+
xcache_coverager_stop(true);
94+
95+
return $codeCoverage;
96+
}
97+
}

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
},
3232
"suggest": {
3333
"ext-dom": "*",
34+
"ext-xcache": ">=3.1.0",
3435
"ext-xdebug": ">=2.0.5"
3536
},
3637
"autoload": {

package.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@
125125
<extension>
126126
<name>dom</name>
127127
</extension>
128+
<extension>
129+
<name>xcache</name>
130+
<min>3.1.0</min>
131+
</extension>
128132
<extension>
129133
<name>xdebug</name>
130134
<min>2.0.5</min>

0 commit comments

Comments
 (0)