Skip to content

Commit a1295e7

Browse files
authored
Merge pull request #213 from mlocati/ignore-version-from-headers
Accept an empty value for --version-override option to say "don't check C headers"
2 parents fec521d + 727be6b commit a1295e7

File tree

7 files changed

+52
-11
lines changed

7 files changed

+52
-11
lines changed

features/pecl/install-extensions.feature

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,34 @@ Feature: download and install PECL extensions
2020
| apc | APC |
2121
| apcu | apcu |
2222
| mongo | mongo |
23-
| memcache | memcache |
23+
24+
Scenario Outline: Does NOT install extensions from PECL repository having wrong version in source code
25+
Given I run "pickle install <extension>-<version> --dry-run"
26+
Then it should fail
27+
And the output should contain:
28+
"""
29+
Version mismatch - '4.0.5.2' != '8.0' in source vs. XML
30+
"""
31+
32+
Examples:
33+
| extension | version |
34+
| memcache | 8.0 |
35+
36+
Scenario Outline: Install extensions from PECL repository having wrong version in source code
37+
Given I run "pickle install <extension>-<version> --dry-run --version-override"
38+
Then it should pass
39+
And the output should contain:
40+
"""
41+
- Installing <extension> (<version>)
42+
"""
43+
And the output should contain:
44+
"""
45+
Package name | <pretty>
46+
"""
47+
48+
Examples:
49+
| extension | version | pretty |
50+
| memcache | 8.0 | memcache |
2451

2552
Scenario Outline: Install extensions from PECL repository with version constraint
2653
Given I run "pickle install <extension>@<version> --dry-run"

src/Base/Abstracts/Package.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ public function getUniqueNameForFs()
7575
is forced to implement it on its own. But so far ... */
7676
public function updateVersion($version = null)
7777
{
78+
if ($version === '') {
79+
return;
80+
}
7881
/* Be sure package root is set before! */
7982
if ($version === null) {
8083
$version = new Header\Version($this);

src/Console/Command/InfoCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ protected function configure()
6969
'version-override',
7070
null,
7171
InputOption::VALUE_OPTIONAL,
72-
'Override detected version'
72+
'Override detected version (no value - or empty value - to use the version from package.xml)'
7373
);
7474
}
7575

src/Console/Command/InstallerCommand.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ protected function configure()
102102
'version-override',
103103
null,
104104
InputOption::VALUE_OPTIONAL,
105-
'Override detected version'
105+
'Override detected version (no value - or empty value - to use the version from package.xml)'
106106
);
107107

108108
if (defined('PHP_WINDOWS_VERSION_MAJOR')) {

src/Console/Helper/PackageHelper.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,14 @@ public function convey(InputInterface $input, OutputInterface $output, $path, $t
109109
$io = new ConsoleIO($input, $output, ($helperSet ? $helperSet : new HelperSet()));
110110

111111
$no_convert = $input->hasOption('no-convert') ? $input->getOption('no-convert') : false;
112-
$versionOverride = $input->hasOption('version-override') ? $input->getOption('version-override') : null;
112+
if ($input->hasOption('version-override')) {
113+
$versionOverride = $input->getOption('version-override');
114+
if ($versionOverride === null && $input->hasParameterOption('--version-override', true)) {
115+
$versionOverride = '';
116+
}
117+
} else {
118+
$versionOverride = null;
119+
}
113120

114121
return (new Convey($path, $io))->deliver($target, $no_convert, $versionOverride);
115122
}

src/Package/PHP/Util/PackageXml.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,11 @@ public function dump($fname = null)
100100
$this->jsonPath = $fname;
101101
}
102102

103-
$version = $this->versionOverride ?? new Header\Version($this->package);
104-
if ($version != $this->package->getPrettyVersion()) {
105-
throw new \Exception("Version mismatch - '".$version."' != '".$this->package->getVersion().'. in source vs JSON');
103+
if ($this->versionOverride !== '') {
104+
$version = $this->versionOverride ?? (string) new Header\Version($this->package);
105+
if ($version !== $this->package->getPrettyVersion()) {
106+
throw new \Exception("Version mismatch - '".$version."' != '".$this->package->getVersion().'. in source vs JSON');
107+
}
106108
}
107109

108110
$dumper = new Dumper();

src/Package/PHP/Util/XML/Loader.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public function load($path, $versionOverride = null)
7777

7878
$package = [
7979
'name' => (string) $xml->name,
80-
'version' => $versionOverride ?? (string) $xml->version->release,
80+
'version' => (string) $versionOverride === '' ? (string) $xml->version->release : $versionOverride,
8181
'stability' => (string) $xml->stability->release,
8282
'description' => (string) $xml->summary,
8383
];
@@ -136,9 +136,11 @@ public function load($path, $versionOverride = null)
136136
}
137137
$ret_pkg->setRootDir(dirname($path));
138138

139-
$src_ver = $versionOverride ?? new Header\Version($ret_pkg);
140-
if ($src_ver != $ret_pkg->getPrettyVersion()) {
141-
throw new \Exception("Version mismatch - '".$src_ver."' != '".$ret_pkg->getPrettyVersion()."' in source vs. XML");
139+
if ($versionOverride !== '') {
140+
$src_ver = $versionOverride ?? (string) new Header\Version($ret_pkg);
141+
if ($src_ver !== $ret_pkg->getPrettyVersion()) {
142+
throw new \Exception("Version mismatch - '".$src_ver."' != '".$ret_pkg->getPrettyVersion()."' in source vs. XML");
143+
}
142144
}
143145
$ret_pkg->setType('extension');
144146

0 commit comments

Comments
 (0)