Completed
Pull Request — master (#74)
by Kenji
02:43
created

TestSuiteProvider   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 2
Bugs 0 Features 2
Metric Value
wmc 7
c 2
b 0
f 2
lcom 1
cbo 0
dl 0
loc 70
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 1 1
A setConfigurationFile() 0 4 1
A suite() 0 9 1
A getConfigurationFile() 0 8 2
A checkConfigurationFile() 0 8 2
1
<?php
2
/**
3
 * Test Suite Provider for NetBeans
4
 * https://github.com/BrickieToolShed/netbeans-phpunit-support
5
 * 
6
 * Modified 2015 by Kenji Suzuki <https://github.com/kenjis>
7
 * @link       https://github.com/kenjis/ci-phpunit-test
8
 */
9
10
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
11
/**
12
 * The MIT License
13
 *
14
 * Copyright 2015 Eric VILLARD <[email protected]>.
15
 *
16
 * Permission is hereby granted, free of charge, to any person obtaining a copy
17
 * of this software and associated documentation files (the "Software"), to deal
18
 * in the Software without restriction, including without limitation the rights
19
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20
 * copies of the Software, and to permit persons to whom the Software is
21
 * furnished to do so, subject to the following conditions:
22
 *
23
 * The above copyright notice and this permission notice shall be included in
24
 * all copies or substantial portions of the Software.
25
 *
26
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32
 * THE SOFTWARE.
33
 *
34
 * @package     netbeans\phpunit\support
35
 * @author      Eric VILLARD <[email protected]>
36
 * @copyright   (c) 2015 Eric VILLARD <[email protected]>
37
 * @license     http://opensource.org/licenses/MIT MIT License
38
 */
39
40
namespace netbeans\phpunit\support;
41
42
use PHPUnit_Framework_TestSuite;
43
use PHPUnit_Util_Configuration;
44
45
/**
46
 * TestSuiteProvider
47
 *
48
 * @package     netbeans\phpunit\support
49
 * @author      Eric VILLARD <[email protected]>
50
 * @copyright   (c) 2015 Eric VILLARD <[email protected]>
51
 * @license     http://opensource.org/licenses/MIT MIT License
52
 */
53
final class TestSuiteProvider
54
{
55
    /**
56
     * phpunit configuration file
57
     *
58
     * @var string
59
     */
60
    private static $file;
61
62
    /**
63
     * constructor
64
     */
65
    private function __construct() {}
66
67
    /**
68
     * set the phpunit configuration file
69
     *
70
     * @param string $file the path or filename of the phunit configuration file
71
     */
72
    public static function setConfigurationFile($file)
73
    {
74
        static::$file = $file;
0 ignored issues
show
Comprehensibility introduced by
Since netbeans\phpunit\support\TestSuiteProvider is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
75
    }
76
77
    /**
78
     * get the phpunit test suite instance
79
     *
80
     * @return PHPUnit_Framework_TestSuite returns the phpunit test suite instance
81
     * @throws FileNotFoundException       if the file is not found
82
     */
83
    public static function suite()
84
    {
85
        $file = static::checkConfigurationFile(
0 ignored issues
show
Comprehensibility introduced by
Since netbeans\phpunit\support\TestSuiteProvider is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
86
            static::getConfigurationFile()
0 ignored issues
show
Comprehensibility introduced by
Since netbeans\phpunit\support\TestSuiteProvider is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
87
        );
88
89
        return PHPUnit_Util_Configuration::getInstance($file)
90
            ->getTestSuiteConfiguration();
91
    }
92
93
    /**
94
     * get the phpunit configuration file
95
     *
96
     * @return string
97
     */
98
    private static function getConfigurationFile()
99
    {
100
        static::$file = isset(static::$file)
0 ignored issues
show
Comprehensibility introduced by
Since netbeans\phpunit\support\TestSuiteProvider is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
101
            ? static::$file
0 ignored issues
show
Comprehensibility introduced by
Since netbeans\phpunit\support\TestSuiteProvider is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
102
            : APPPATH.'tests/phpunit.xml';
103
104
        return static::$file;
0 ignored issues
show
Comprehensibility introduced by
Since netbeans\phpunit\support\TestSuiteProvider is declared final, using late-static binding will have no effect. You might want to replace static with self instead.

Late static binding only has effect in subclasses. A final class cannot be extended anymore so late static binding cannot occurr. Consider replacing static:: with self::.

To learn more about late static binding, please refer to the PHP core documentation.

Loading history...
105
    }
106
107
    /**
108
     * check the given file
109
     *
110
     * @param  string                $file file to check
111
     * @return string                returns the file if it is valid
112
     * @throws FileNotFoundException if the file is not found
113
     */
114
    private static function checkConfigurationFile($file)
115
    {
116
        if (!file_exists($file)) {
117
            throw new \RuntimeException("The requested phpunit configuration was not found at $file");
118
        }
119
120
        return $file;
121
    }
122
}
123