Passed
Push — main ( 2c83d5...fb3f8a )
by Siad
05:21
created

VersionTaskTest   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 197
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 13
eloc 143
dl 0
loc 197
rs 10
c 0
b 0
f 0

11 Methods

Rating   Name   Duplication   Size   Complexity  
A testMinor() 0 3 1
A testDefault() 0 5 1
A testPropFileWithDefaultProperty() 0 5 1
A setUp() 0 3 1
A testMajor() 0 3 1
A testWithStartingVersion() 0 5 1
B versionProvider() 0 117 1
A testPropFile() 0 5 1
A testBugfix() 0 3 1
A testGetVersionMethod() 0 11 1
A tearDown() 0 8 3
1
<?php
2
/**
3
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14
 *
15
 * This software consists of voluntary contributions made by many individuals
16
 * and is licensed under the LGPL. For more information please see
17
 * <http://phing.info>.
18
 */
19
20
namespace Phing\Test\Task\System;
21
22
use Phing\Task\System\VersionTask;
23
use Phing\Test\Support\BuildFileTest;
24
25
/**
26
 * @author Michiel Rook <[email protected]>
27
 */
28
class VersionTaskTest extends BuildFileTest
29
{
30
    public function setUp(): void
31
    {
32
        $this->configureProject(PHING_TEST_BASE . "/etc/tasks/ext/version.xml");
33
    }
34
35
    public function tearDown(): void
36
    {
37
        if (file_exists(PHING_TEST_BASE . "/etc/tasks/ext/" . 'build.version')) {
38
            unlink(PHING_TEST_BASE . "/etc/tasks/ext/" . 'build.version');
39
        }
40
41
        if (file_exists(PHING_TEST_BASE . "/etc/tasks/ext/" . 'property.version')) {
42
            unlink(PHING_TEST_BASE . "/etc/tasks/ext/" . 'property.version');
43
        }
44
    }
45
46
    public function testBugfix()
47
    {
48
        $this->expectLog("testBugfix", "1.0.1");
49
    }
50
51
    public function testMinor()
52
    {
53
        $this->expectLog("testMinor", "1.1.0");
54
    }
55
56
    public function testMajor()
57
    {
58
        $this->expectLog("testMajor", "2.0.0");
59
    }
60
61
    public function testDefault()
62
    {
63
        $this->executeTarget(__FUNCTION__);
64
        $this->assertPropertyEquals('build.version', '1.0.0');
65
        $this->assertFileExists(PHING_TEST_BASE . "/etc/tasks/ext/" . 'build.version', 'File not found');
66
    }
67
68
    public function testPropFile()
69
    {
70
        $this->executeTarget(__FUNCTION__);
71
        $this->assertPropertyEquals('propfile.version', '4.5.5');
72
        $this->assertFileExists(PHING_TEST_BASE . "/etc/tasks/ext/" . 'property.version', 'File not found');
73
    }
74
75
    public function testPropFileWithDefaultProperty()
76
    {
77
        $this->executeTarget(__FUNCTION__);
78
        $this->assertPropertyEquals('build.version', '4.5.5');
79
        $this->assertFileExists(PHING_TEST_BASE . "/etc/tasks/ext/" . 'build.version', 'File not found');
80
    }
81
82
    public function testWithStartingVersion()
83
    {
84
        $this->executeTarget(__FUNCTION__);
85
        $this->assertPropertyEquals('build.version', '1.0.1');
86
        $this->assertFileExists(PHING_TEST_BASE . "/etc/tasks/ext/" . 'build.version', 'File not found');
87
    }
88
89
    /**
90
     * Testing \VersionTask::getVersion
91
     *
92
     * @dataProvider versionProvider
93
     *
94
     */
95
    public function testGetVersionMethod($releaseType, $version, $expectedVersion)
96
    {
97
        $versionTask = new VersionTask();
98
        $versionTask->setReleasetype($releaseType);
99
100
        $reflector = new \ReflectionObject($versionTask);
101
        $method = $reflector->getMethod('getVersion');
102
        $method->setAccessible(true);
103
104
        $newVersion = $method->invoke($versionTask, $version);
105
        $this->assertSame($expectedVersion, $newVersion);
106
    }
107
108
    public function versionProvider()
109
    {
110
        return [
111
            [VersionTask::RELEASETYPE_MAJOR, null, '1.0.0'],
112
            [VersionTask::RELEASETYPE_MAJOR, '', '1.0.0'],
113
            [VersionTask::RELEASETYPE_MAJOR, 'x', '1.0.0'],
114
            [VersionTask::RELEASETYPE_MAJOR, 'v', 'v1.0.0'],
115
            [VersionTask::RELEASETYPE_MAJOR, '0', '1.0.0'],
116
            [VersionTask::RELEASETYPE_MAJOR, 'v0', 'v1.0.0'],
117
            [VersionTask::RELEASETYPE_MAJOR, 'a3', '1.0.0'],
118
            [VersionTask::RELEASETYPE_MAJOR, 'v3', 'v4.0.0'],
119
            [VersionTask::RELEASETYPE_MAJOR, 'qsdf', '1.0.0'],
120
            [VersionTask::RELEASETYPE_MAJOR, 'vvvv', 'v1.0.0'],
121
            [VersionTask::RELEASETYPE_MAJOR, '0.6', '1.0.0'],
122
            [VersionTask::RELEASETYPE_MAJOR, 'v0.6', 'v1.0.0'],
123
            [VersionTask::RELEASETYPE_MAJOR, '5.0', '6.0.0'],
124
            [VersionTask::RELEASETYPE_MAJOR, 'v5.0', 'v6.0.0'],
125
            [VersionTask::RELEASETYPE_MAJOR, '5.5', '6.0.0'],
126
            [VersionTask::RELEASETYPE_MAJOR, 'v5.5', 'v6.0.0'],
127
            [VersionTask::RELEASETYPE_MAJOR, '0.0.0', '1.0.0'],
128
            [VersionTask::RELEASETYPE_MAJOR, 'v0.0.0', 'v1.0.0'],
129
            [VersionTask::RELEASETYPE_MAJOR, '0.0.15', '1.0.0'],
130
            [VersionTask::RELEASETYPE_MAJOR, 'v0.0.15', 'v1.0.0'],
131
            [VersionTask::RELEASETYPE_MAJOR, '0.1.15', '1.0.0'],
132
            [VersionTask::RELEASETYPE_MAJOR, 'v0.1.15', 'v1.0.0'],
133
            [VersionTask::RELEASETYPE_MAJOR, '7.0.15', '8.0.0'],
134
            [VersionTask::RELEASETYPE_MAJOR, 'v7.0.15', 'v8.0.0'],
135
            [VersionTask::RELEASETYPE_MAJOR, '2.3.4', '3.0.0'],
136
            [VersionTask::RELEASETYPE_MAJOR, 'v2.3.4', 'v3.0.0'],
137
            [VersionTask::RELEASETYPE_MAJOR, '2-RC1', '3.0.0'],
138
            [VersionTask::RELEASETYPE_MAJOR, 'v2-RC1', 'v3.0.0'],
139
            [VersionTask::RELEASETYPE_MAJOR, '2.3-RC1', '3.0.0'],
140
            [VersionTask::RELEASETYPE_MAJOR, 'v2.3-RC1', 'v3.0.0'],
141
            [VersionTask::RELEASETYPE_MAJOR, '2.3.4-RC1', '3.0.0'],
142
            [VersionTask::RELEASETYPE_MAJOR, 'v2.3.4-RC1', 'v3.0.0'],
143
            [VersionTask::RELEASETYPE_MAJOR, '2.3v654.4', '3.0.0'],
144
            [VersionTask::RELEASETYPE_MAJOR, 'v2.3v56465.4-RC1', 'v3.0.0'],
145
            [VersionTask::RELEASETYPE_MAJOR, '2.hello.world', '3.0.0'],
146
            [VersionTask::RELEASETYPE_MAJOR, 'v2.hello.world', 'v3.0.0'],
147
            [VersionTask::RELEASETYPE_MAJOR, 'hello.world.3', '1.0.0'],
148
            [VersionTask::RELEASETYPE_MAJOR, 'vhello.world.3', 'v1.0.0'],
149
            [VersionTask::RELEASETYPE_MINOR, null, '0.1.0'],
150
            [VersionTask::RELEASETYPE_MINOR, '', '0.1.0'],
151
            [VersionTask::RELEASETYPE_MINOR, 'x', '0.1.0'],
152
            [VersionTask::RELEASETYPE_MINOR, 'v', 'v0.1.0'],
153
            [VersionTask::RELEASETYPE_MINOR, '0', '0.1.0'],
154
            [VersionTask::RELEASETYPE_MINOR, 'v0', 'v0.1.0'],
155
            [VersionTask::RELEASETYPE_MINOR, 'a3', '0.1.0'],
156
            [VersionTask::RELEASETYPE_MINOR, 'v3', 'v3.1.0'],
157
            [VersionTask::RELEASETYPE_MINOR, 'qsdf', '0.1.0'],
158
            [VersionTask::RELEASETYPE_MINOR, 'vvvv', 'v0.1.0'],
159
            [VersionTask::RELEASETYPE_MINOR, '0.6', '0.7.0'],
160
            [VersionTask::RELEASETYPE_MINOR, 'v0.6', 'v0.7.0'],
161
            [VersionTask::RELEASETYPE_MINOR, '5.0', '5.1.0'],
162
            [VersionTask::RELEASETYPE_MINOR, 'v5.0', 'v5.1.0'],
163
            [VersionTask::RELEASETYPE_MINOR, '5.5', '5.6.0'],
164
            [VersionTask::RELEASETYPE_MINOR, 'v5.5', 'v5.6.0'],
165
            [VersionTask::RELEASETYPE_MINOR, '0.0.0', '0.1.0'],
166
            [VersionTask::RELEASETYPE_MINOR, 'v0.0.0', 'v0.1.0'],
167
            [VersionTask::RELEASETYPE_MINOR, '0.0.15', '0.1.0'],
168
            [VersionTask::RELEASETYPE_MINOR, 'v0.0.15', 'v0.1.0'],
169
            [VersionTask::RELEASETYPE_MINOR, '0.1.15', '0.2.0'],
170
            [VersionTask::RELEASETYPE_MINOR, 'v0.1.15', 'v0.2.0'],
171
            [VersionTask::RELEASETYPE_MINOR, '7.0.15', '7.1.0'],
172
            [VersionTask::RELEASETYPE_MINOR, 'v7.0.15', 'v7.1.0'],
173
            [VersionTask::RELEASETYPE_MINOR, '2.3.4', '2.4.0'],
174
            [VersionTask::RELEASETYPE_MINOR, 'v2.3.4', 'v2.4.0'],
175
            [VersionTask::RELEASETYPE_MINOR, '2-RC1', '2.1.0'],
176
            [VersionTask::RELEASETYPE_MINOR, 'v2-RC1', 'v2.1.0'],
177
            [VersionTask::RELEASETYPE_MINOR, '2.3-RC1', '2.4.0'],
178
            [VersionTask::RELEASETYPE_MINOR, 'v2.3-RC1', 'v2.4.0'],
179
            [VersionTask::RELEASETYPE_MINOR, '2.3.4-RC1', '2.4.0'],
180
            [VersionTask::RELEASETYPE_MINOR, 'v2.3.4-RC1', 'v2.4.0'],
181
            [VersionTask::RELEASETYPE_MINOR, '2.3v654.4', '2.4.0'],
182
            [VersionTask::RELEASETYPE_MINOR, 'v2.3v56465.4-RC1', 'v2.4.0'],
183
            [VersionTask::RELEASETYPE_MINOR, '2.hello.world', '2.1.0'],
184
            [VersionTask::RELEASETYPE_MINOR, 'v2.hello.world', 'v2.1.0'],
185
            [VersionTask::RELEASETYPE_MINOR, 'hello.world.3', '0.1.0'],
186
            [VersionTask::RELEASETYPE_MINOR, 'vhello.world.3', 'v0.1.0'],
187
            [VersionTask::RELEASETYPE_BUGFIX, null, '0.0.1'],
188
            [VersionTask::RELEASETYPE_BUGFIX, '', '0.0.1'],
189
            [VersionTask::RELEASETYPE_BUGFIX, 'x', '0.0.1'],
190
            [VersionTask::RELEASETYPE_BUGFIX, 'v', 'v0.0.1'],
191
            [VersionTask::RELEASETYPE_BUGFIX, '0', '0.0.1'],
192
            [VersionTask::RELEASETYPE_BUGFIX, 'v0', 'v0.0.1'],
193
            [VersionTask::RELEASETYPE_BUGFIX, 'a3', '0.0.1'],
194
            [VersionTask::RELEASETYPE_BUGFIX, 'v3', 'v3.0.1'],
195
            [VersionTask::RELEASETYPE_BUGFIX, 'qsdf', '0.0.1'],
196
            [VersionTask::RELEASETYPE_BUGFIX, 'vvvv', 'v0.0.1'],
197
            [VersionTask::RELEASETYPE_BUGFIX, '0.6', '0.6.1'],
198
            [VersionTask::RELEASETYPE_BUGFIX, 'v0.6', 'v0.6.1'],
199
            [VersionTask::RELEASETYPE_BUGFIX, '5.0', '5.0.1'],
200
            [VersionTask::RELEASETYPE_BUGFIX, 'v5.0', 'v5.0.1'],
201
            [VersionTask::RELEASETYPE_BUGFIX, '5.5', '5.5.1'],
202
            [VersionTask::RELEASETYPE_BUGFIX, 'v5.5', 'v5.5.1'],
203
            [VersionTask::RELEASETYPE_BUGFIX, '0.0.0', '0.0.1'],
204
            [VersionTask::RELEASETYPE_BUGFIX, 'v0.0.0', 'v0.0.1'],
205
            [VersionTask::RELEASETYPE_BUGFIX, '0.0.15', '0.0.16'],
206
            [VersionTask::RELEASETYPE_BUGFIX, 'v0.0.15', 'v0.0.16'],
207
            [VersionTask::RELEASETYPE_BUGFIX, '0.1.15', '0.1.16'],
208
            [VersionTask::RELEASETYPE_BUGFIX, 'v0.1.15', 'v0.1.16'],
209
            [VersionTask::RELEASETYPE_BUGFIX, '7.0.15', '7.0.16'],
210
            [VersionTask::RELEASETYPE_BUGFIX, 'v7.0.15', 'v7.0.16'],
211
            [VersionTask::RELEASETYPE_BUGFIX, '2.3.4', '2.3.5'],
212
            [VersionTask::RELEASETYPE_BUGFIX, 'v2.3.4', 'v2.3.5'],
213
            [VersionTask::RELEASETYPE_BUGFIX, '2-RC1', '2.0.1'],
214
            [VersionTask::RELEASETYPE_BUGFIX, 'v2-RC1', 'v2.0.1'],
215
            [VersionTask::RELEASETYPE_BUGFIX, '2.3-RC1', '2.3.1'],
216
            [VersionTask::RELEASETYPE_BUGFIX, 'v2.3-RC1', 'v2.3.1'],
217
            [VersionTask::RELEASETYPE_BUGFIX, '2.3.4-RC1', '2.3.5'],
218
            [VersionTask::RELEASETYPE_BUGFIX, 'v2.3.4-RC1', 'v2.3.5'],
219
            [VersionTask::RELEASETYPE_BUGFIX, '2.3v654.4', '2.3.1'],
220
            [VersionTask::RELEASETYPE_BUGFIX, 'v2.3v56465.4-RC1', 'v2.3.1'],
221
            [VersionTask::RELEASETYPE_BUGFIX, '2.hello.world', '2.0.1'],
222
            [VersionTask::RELEASETYPE_BUGFIX, 'v2.hello.world', 'v2.0.1'],
223
            [VersionTask::RELEASETYPE_BUGFIX, 'hello.world.3', '0.0.1'],
224
            [VersionTask::RELEASETYPE_BUGFIX, 'vhello.world.3', 'v0.0.1'],
225
        ];
226
    }
227
}
228