Chris@14
|
1 <?php
|
Chris@14
|
2 /*
|
Chris@14
|
3 * This file is part of PharIo\Version.
|
Chris@14
|
4 *
|
Chris@14
|
5 * (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
|
Chris@14
|
6 *
|
Chris@14
|
7 * For the full copyright and license information, please view the LICENSE
|
Chris@14
|
8 * file that was distributed with this source code.
|
Chris@14
|
9 */
|
Chris@14
|
10
|
Chris@14
|
11 namespace PharIo\Version;
|
Chris@14
|
12
|
Chris@14
|
13 use PHPUnit\Framework\TestCase;
|
Chris@14
|
14
|
Chris@14
|
15 /**
|
Chris@14
|
16 * @covers \PharIo\Version\VersionConstraintParser
|
Chris@14
|
17 */
|
Chris@14
|
18 class VersionConstraintParserTest extends TestCase {
|
Chris@14
|
19 /**
|
Chris@14
|
20 * @dataProvider versionStringProvider
|
Chris@14
|
21 *
|
Chris@14
|
22 * @param string $versionString
|
Chris@14
|
23 * @param VersionConstraint $expectedConstraint
|
Chris@14
|
24 */
|
Chris@14
|
25 public function testReturnsExpectedConstraint($versionString, VersionConstraint $expectedConstraint) {
|
Chris@14
|
26 $parser = new VersionConstraintParser;
|
Chris@14
|
27
|
Chris@14
|
28 $this->assertEquals($expectedConstraint, $parser->parse($versionString));
|
Chris@14
|
29 }
|
Chris@14
|
30
|
Chris@14
|
31 /**
|
Chris@14
|
32 * @dataProvider unsupportedVersionStringProvider
|
Chris@14
|
33 *
|
Chris@14
|
34 * @param string $versionString
|
Chris@14
|
35 */
|
Chris@14
|
36 public function testThrowsExceptionIfVersionStringIsNotSupported($versionString) {
|
Chris@14
|
37 $parser = new VersionConstraintParser;
|
Chris@14
|
38
|
Chris@14
|
39 $this->expectException(UnsupportedVersionConstraintException::class);
|
Chris@14
|
40
|
Chris@14
|
41 $parser->parse($versionString);
|
Chris@14
|
42 }
|
Chris@14
|
43
|
Chris@14
|
44 /**
|
Chris@14
|
45 * @return array
|
Chris@14
|
46 */
|
Chris@14
|
47 public function versionStringProvider() {
|
Chris@14
|
48 return [
|
Chris@14
|
49 ['1.0.2', new ExactVersionConstraint('1.0.2')],
|
Chris@14
|
50 [
|
Chris@14
|
51 '~4.6',
|
Chris@14
|
52 new AndVersionConstraintGroup(
|
Chris@14
|
53 '~4.6',
|
Chris@14
|
54 [
|
Chris@14
|
55 new GreaterThanOrEqualToVersionConstraint('~4.6', new Version('4.6')),
|
Chris@14
|
56 new SpecificMajorVersionConstraint('~4.6', 4)
|
Chris@14
|
57 ]
|
Chris@14
|
58 )
|
Chris@14
|
59 ],
|
Chris@14
|
60 [
|
Chris@14
|
61 '~4.6.2',
|
Chris@14
|
62 new AndVersionConstraintGroup(
|
Chris@14
|
63 '~4.6.2',
|
Chris@14
|
64 [
|
Chris@14
|
65 new GreaterThanOrEqualToVersionConstraint('~4.6.2', new Version('4.6.2')),
|
Chris@14
|
66 new SpecificMajorAndMinorVersionConstraint('~4.6.2', 4, 6)
|
Chris@14
|
67 ]
|
Chris@14
|
68 )
|
Chris@14
|
69 ],
|
Chris@14
|
70 [
|
Chris@14
|
71 '^2.6.1',
|
Chris@14
|
72 new AndVersionConstraintGroup(
|
Chris@14
|
73 '^2.6.1',
|
Chris@14
|
74 [
|
Chris@14
|
75 new GreaterThanOrEqualToVersionConstraint('^2.6.1', new Version('2.6.1')),
|
Chris@14
|
76 new SpecificMajorVersionConstraint('^2.6.1', 2)
|
Chris@14
|
77 ]
|
Chris@14
|
78 )
|
Chris@14
|
79 ],
|
Chris@14
|
80 ['5.1.*', new SpecificMajorAndMinorVersionConstraint('5.1.*', 5, 1)],
|
Chris@14
|
81 ['5.*', new SpecificMajorVersionConstraint('5.*', 5)],
|
Chris@14
|
82 ['*', new AnyVersionConstraint()],
|
Chris@14
|
83 [
|
Chris@14
|
84 '1.0.2 || 1.0.5',
|
Chris@14
|
85 new OrVersionConstraintGroup(
|
Chris@14
|
86 '1.0.2 || 1.0.5',
|
Chris@14
|
87 [
|
Chris@14
|
88 new ExactVersionConstraint('1.0.2'),
|
Chris@14
|
89 new ExactVersionConstraint('1.0.5')
|
Chris@14
|
90 ]
|
Chris@14
|
91 )
|
Chris@14
|
92 ],
|
Chris@14
|
93 [
|
Chris@14
|
94 '^5.6 || ^7.0',
|
Chris@14
|
95 new OrVersionConstraintGroup(
|
Chris@14
|
96 '^5.6 || ^7.0',
|
Chris@14
|
97 [
|
Chris@14
|
98 new AndVersionConstraintGroup(
|
Chris@14
|
99 '^5.6', [
|
Chris@14
|
100 new GreaterThanOrEqualToVersionConstraint('^5.6', new Version('5.6')),
|
Chris@14
|
101 new SpecificMajorVersionConstraint('^5.6', 5)
|
Chris@14
|
102 ]
|
Chris@14
|
103 ),
|
Chris@14
|
104 new AndVersionConstraintGroup(
|
Chris@14
|
105 '^7.0', [
|
Chris@14
|
106 new GreaterThanOrEqualToVersionConstraint('^7.0', new Version('7.0')),
|
Chris@14
|
107 new SpecificMajorVersionConstraint('^7.0', 7)
|
Chris@14
|
108 ]
|
Chris@14
|
109 )
|
Chris@14
|
110 ]
|
Chris@14
|
111 )
|
Chris@14
|
112 ]
|
Chris@14
|
113 ];
|
Chris@14
|
114 }
|
Chris@14
|
115
|
Chris@14
|
116 public function unsupportedVersionStringProvider() {
|
Chris@14
|
117 return [
|
Chris@14
|
118 ['foo'],
|
Chris@14
|
119 ['+1.0.2'],
|
Chris@14
|
120 ['>=2.0'],
|
Chris@14
|
121 ['^5.6 || >= 7.0'],
|
Chris@14
|
122 ['2.0 || foo']
|
Chris@14
|
123 ];
|
Chris@14
|
124 }
|
Chris@14
|
125 }
|