Skip to content

Commit d9a5f45

Browse files
authored
fix: Handle the case where the Compoer InstalledVersions.php file is not present (#830)
Closes #784
1 parent b83fded commit d9a5f45

File tree

9 files changed

+86
-13
lines changed

9 files changed

+86
-13
lines changed

.github/workflows/e2e-tests.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ jobs:
8383
- 'e2e_033'
8484
- 'e2e_034'
8585
- 'e2e_035'
86+
- 'e2e_036'
8687
php:
8788
- '8.1'
8889
- '8.2'

.makefile/e2e.file

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,29 @@ e2e_035: $(PHP_SCOPER_PHAR_BIN) fixtures/set035-composer-files-autoload/vendor f
328328
php build/set035-composer-files-autoload/index.php &> build/set035-composer-files-autoload/output || true
329329
php build/set035-composer-files-autoload/test.php
330330

331+
.PHONY: e2e_036
332+
e2e_036: # Runs end-to-end tests for the fixture set e2e_036 — Minimalistic codebase
333+
e2e_036: $(PHP_SCOPER_PHAR_BIN)
334+
# Identical to set004 but without Box
335+
rm fixtures/set036/composer.lock || true
336+
rm -rf fixtures/set036/vendor || true
337+
rm -rf build/set036 || true
338+
mkdir -p build/set036
339+
340+
composer --working-dir=fixtures/set036 dump-autoload
341+
342+
$(PHP_SCOPER_PHAR) add-prefix . \
343+
--working-dir=fixtures/set036 \
344+
--output-dir=../../build/set036 \
345+
--force \
346+
--no-config \
347+
--no-interaction \
348+
--stop-on-failure
349+
composer --working-dir=build/set036 dump-autoload
350+
351+
php build/set036/bin/greet.php > build/set036/output
352+
diff fixtures/set036/expected-output build/set036/output
353+
331354

332355
#
333356
# Rules from files

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ infection: $(COVERAGE_XML) vendor
147147
include .makefile/e2e.file
148148
.PHONY: e2e
149149
e2e: ## Runs end-to-end tests
150-
e2e: e2e_004 e2e_005 e2e_011 e2e_013 e2e_014 e2e_015 e2e_016 e2e_017 e2e_018 e2e_019 e2e_020 e2e_024 e2e_025 e2e_027 e2e_028 e2e_029 e2e_030 e2e_031 e2e_032 e2e_033 e2e_034 e2e_035
150+
e2e: e2e_004 e2e_005 e2e_011 e2e_013 e2e_014 e2e_015 e2e_016 e2e_017 e2e_018 e2e_019 e2e_020 e2e_024 e2e_025 e2e_027 e2e_028 e2e_029 e2e_030 e2e_031 e2e_032 e2e_033 e2e_034 e2e_035 e2e_036
151151

152152
.PHONY: blackfire
153153
blackfire: ## Runs Blackfire profiling

fixtures/set036/bin/greet.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
if (file_exists(__DIR__.'/../vendor/scoper-autoload.php')) {
6+
require_once __DIR__.'/../vendor/scoper-autoload.php';
7+
} else {
8+
require_once __DIR__.'/../vendor/autoload.php';
9+
}
10+
11+
use Set004\Greeter;
12+
13+
echo (new Greeter())->greet().PHP_EOL;

fixtures/set036/composer.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"bin": [
3+
"bin/greet.php"
4+
],
5+
"autoload": {
6+
"psr-4": {
7+
"Set004\\": "src/"
8+
}
9+
}
10+
}

fixtures/set036/expected-output

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello world!

fixtures/set036/src/Greeter.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Set004;
6+
7+
class Greeter
8+
{
9+
public function greet(): string
10+
{
11+
return 'Hello world!';
12+
}
13+
}

src/Autoload/ScoperAutoloadGenerator.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ public function dump(): string
9494
9595
\$loader = require_once __DIR__.'/autoload.php';
9696
// Ensure InstalledVersions is available
97-
require_once __DIR__.'/composer/InstalledVersions.php';
97+
\$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
98+
if (file_exists(\$installedVersionsPath)) require_once \$installedVersionsPath;
9899
99100
// Restore the backup
100101
if (isset(\$existingComposerAutoloadFiles)) {
@@ -124,7 +125,8 @@ public function dump(): string
124125
125126
\$loader = require_once __DIR__.'/autoload.php';
126127
// Ensure InstalledVersions is available
127-
require_once __DIR__.'/composer/InstalledVersions.php';
128+
\$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
129+
if (file_exists(\$installedVersionsPath)) require_once \$installedVersionsPath;
128130
129131
// Restore the backup
130132
if (isset(\$existingComposerAutoloadFiles)) {

tests/Autoload/ScoperAutoloadGeneratorTest.php

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ public static function provideRegistry(): iterable
5151
5252
$loader = require_once __DIR__.'/autoload.php';
5353
// Ensure InstalledVersions is available
54-
require_once __DIR__.'/composer/InstalledVersions.php';
54+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
55+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
5556
5657
// Restore the backup
5758
if (isset($existingComposerAutoloadFiles)) {
@@ -85,7 +86,8 @@ public static function provideRegistry(): iterable
8586
8687
$loader = require_once __DIR__.'/autoload.php';
8788
// Ensure InstalledVersions is available
88-
require_once __DIR__.'/composer/InstalledVersions.php';
89+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
90+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
8991
9092
// Restore the backup
9193
if (isset($existingComposerAutoloadFiles)) {
@@ -124,7 +126,8 @@ public static function provideRegistry(): iterable
124126
125127
$loader = require_once __DIR__.'/autoload.php';
126128
// Ensure InstalledVersions is available
127-
require_once __DIR__.'/composer/InstalledVersions.php';
129+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
130+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
128131
129132
// Restore the backup
130133
if (isset($existingComposerAutoloadFiles)) {
@@ -165,7 +168,8 @@ public static function provideRegistry(): iterable
165168
166169
$loader = require_once __DIR__.'/autoload.php';
167170
// Ensure InstalledVersions is available
168-
require_once __DIR__.'/composer/InstalledVersions.php';
171+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
172+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
169173
170174
// Restore the backup
171175
if (isset($existingComposerAutoloadFiles)) {
@@ -215,7 +219,8 @@ public static function provideRegistry(): iterable
215219
216220
$loader = require_once __DIR__.'/autoload.php';
217221
// Ensure InstalledVersions is available
218-
require_once __DIR__.'/composer/InstalledVersions.php';
222+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
223+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
219224
220225
// Restore the backup
221226
if (isset($existingComposerAutoloadFiles)) {
@@ -262,7 +267,8 @@ public static function provideRegistry(): iterable
262267
263268
$loader = require_once __DIR__.'/autoload.php';
264269
// Ensure InstalledVersions is available
265-
require_once __DIR__.'/composer/InstalledVersions.php';
270+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
271+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
266272
267273
// Restore the backup
268274
if (isset($existingComposerAutoloadFiles)) {
@@ -305,7 +311,8 @@ function humbug_phpscoper_expose_class(string $exposed, string $prefixed): void
305311
306312
$loader = require_once __DIR__.'/autoload.php';
307313
// Ensure InstalledVersions is available
308-
require_once __DIR__.'/composer/InstalledVersions.php';
314+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
315+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
309316
310317
// Restore the backup
311318
if (isset($existingComposerAutoloadFiles)) {
@@ -355,7 +362,8 @@ function humbug_phpscoper_expose_class(string $exposed, string $prefixed): void
355362
356363
$loader = require_once __DIR__.'/autoload.php';
357364
// Ensure InstalledVersions is available
358-
require_once __DIR__.'/composer/InstalledVersions.php';
365+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
366+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
359367
360368
// Restore the backup
361369
if (isset($existingComposerAutoloadFiles)) {
@@ -419,7 +427,8 @@ function humbug_phpscoper_expose_class(string $exposed, string $prefixed): void
419427
420428
$loader = require_once __DIR__.'/autoload.php';
421429
// Ensure InstalledVersions is available
422-
require_once __DIR__.'/composer/InstalledVersions.php';
430+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
431+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
423432
424433
// Restore the backup
425434
if (isset($existingComposerAutoloadFiles)) {
@@ -459,7 +468,8 @@ function humbug_phpscoper_expose_class(string $exposed, string $prefixed): void
459468
460469
$loader = require_once __DIR__.'/autoload.php';
461470
// Ensure InstalledVersions is available
462-
require_once __DIR__.'/composer/InstalledVersions.php';
471+
$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
472+
if (file_exists($installedVersionsPath)) require_once $installedVersionsPath;
463473
464474
// Restore the backup
465475
if (isset($existingComposerAutoloadFiles)) {

0 commit comments

Comments
 (0)