Skip to content

Commit df8f9f0

Browse files
committed
Update tests
1 parent 754f286 commit df8f9f0

File tree

2 files changed

+40
-23
lines changed

2 files changed

+40
-23
lines changed

tests/Composer/Test/Command/BaseDependencyCommandTest.php

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ public static function caseProvider(): Generator
228228
*
229229
* @param array<string, string|bool> $parameters
230230
*/
231-
public function testWhyCommandOutputs(array $parameters, string $expectedOutput): void
231+
public function testWhyCommandOutputs(array $parameters, string $expectedOutput, int $expectedStatusCode): void
232232
{
233233
$packageToBeInspected = $parameters['package'];
234234
$renderAsTree = $parameters['--tree'] ?? false;
@@ -294,9 +294,9 @@ public function testWhyCommandOutputs(array $parameters, string $expectedOutput)
294294
'--locked' => true
295295
]);
296296

297-
$appTester->assertCommandIsSuccessful();
297+
self::assertSame($expectedStatusCode, $appTester->getStatusCode());
298298

299-
$this->assertEquals(trim($expectedOutput), trim($appTester->getDisplay(true)));
299+
$this->assertEquals(trim($expectedOutput), $this->trimLines($appTester->getDisplay(true)));
300300
}
301301

302302
/**
@@ -306,41 +306,46 @@ public static function caseWhyProvider(): Generator
306306
{
307307
yield 'there is no installed package depending on the package' => [
308308
['package' => 'vendor1/package1'],
309-
'There is no installed package depending on "vendor1/package1"'
309+
'There is no installed package depending on "vendor1/package1"',
310+
1
310311
];
311312

312313
yield 'a nested package dependency' => [
313314
['package' => 'vendor1/package3'],
314315
<<<OUTPUT
315-
__root__ - requires vendor1/package3 (2.3.0)
316+
__root__ - requires vendor1/package3 (2.3.0)
316317
vendor1/package2 2.3.0 requires vendor1/package3 (^1)
317-
OUTPUT
318+
OUTPUT,
319+
0
318320
];
319321

320322
yield 'a nested package dependency (tree mode)' => [
321323
['package' => 'vendor1/package3', '--tree' => true],
322324
<<<OUTPUT
323-
vendor1/package3 2.1.0
325+
vendor1/package3 2.1.0
324326
|--__root__ (requires vendor1/package3 2.3.0)
325327
`--vendor1/package2 2.3.0 (requires vendor1/package3 ^1)
326328
|--__root__ (requires vendor1/package2 1.3.0)
327329
`--vendor1/package1 1.3.0 (requires vendor1/package2 ^2)
328-
OUTPUT
330+
OUTPUT,
331+
0
329332
];
330333

331334
yield 'a nested package dependency (recursive mode)' => [
332335
['package' => 'vendor1/package3', '--recursive' => true],
333336
<<<OUTPUT
334-
__root__ - requires vendor1/package2 (1.3.0)
335-
vendor1/package1 1.3.0 requires vendor1/package2 (^2)
336-
__root__ - requires vendor1/package3 (2.3.0)
337+
__root__ - requires vendor1/package2 (1.3.0)
338+
vendor1/package1 1.3.0 requires vendor1/package2 (^2)
339+
__root__ - requires vendor1/package3 (2.3.0)
337340
vendor1/package2 2.3.0 requires vendor1/package3 (^1)
338-
OUTPUT
341+
OUTPUT,
342+
0
339343
];
340344

341345
yield 'a simple package dev dependency' => [
342346
['package' => 'vendor2/package1'],
343-
'__root__ - requires (for development) vendor2/package1 (2.*)'
347+
'__root__ - requires (for development) vendor2/package1 (2.*)',
348+
0
344349
];
345350
}
346351

@@ -354,7 +359,7 @@ public static function caseWhyProvider(): Generator
354359
*
355360
* @param array<string, string> $parameters
356361
*/
357-
public function testWhyNotCommandOutputs(array $parameters, string $expectedOutput): void
362+
public function testWhyNotCommandOutputs(array $parameters, string $expectedOutput, int $expectedStatusCode): void
358363
{
359364
$packageToBeInspected = $parameters['package'];
360365
$packageVersionToBeInspected = $parameters['version'];
@@ -393,7 +398,7 @@ public function testWhyNotCommandOutputs(array $parameters, string $expectedOutp
393398
'1.4.*'
394399
)
395400
]);
396-
$secondDevNestedRequiredPackage = self::getPackage('vendor2/package3', '1.4.0');
401+
$secondDevNestedRequiredPackage = self::getPackage('vendor2/package3', '1.4.0');
397402

398403
$this->createComposerLock(
399404
[$someRequiredPackage],
@@ -411,8 +416,8 @@ public function testWhyNotCommandOutputs(array $parameters, string $expectedOutp
411416
'version' => $packageVersionToBeInspected
412417
]);
413418

414-
$appTester->assertCommandIsSuccessful();
415-
$this->assertSame(trim($expectedOutput), trim($appTester->getDisplay(true)));
419+
self::assertSame($expectedStatusCode, $appTester->getStatusCode());
420+
$this->assertSame(trim($expectedOutput), $this->trimLines($appTester->getDisplay(true)));
416421
}
417422

418423
/**
@@ -424,9 +429,10 @@ public function caseWhyNotProvider(): Generator
424429
['package' => 'vendor1/package1', 'version' => '3.*'],
425430
<<<OUTPUT
426431
Package "vendor1/package1" could not be found with constraint "3.*", results below will most likely be incomplete.
427-
__root__ - requires vendor1/package1 (1.*)
432+
__root__ - requires vendor1/package1 (1.*)
428433
Not finding what you were looking for? Try calling `composer require "vendor1/package1:3.*" --dry-run` to get another view on the problem.
429-
OUTPUT
434+
OUTPUT,
435+
1
430436
];
431437

432438
yield 'it could not found the package and there is no installed package with a specific version' => [
@@ -435,23 +441,26 @@ public function caseWhyNotProvider(): Generator
435441
Package "vendor1/package1" could not be found with constraint "^1.4", results below will most likely be incomplete.
436442
There is no installed package depending on "vendor1/package1" in versions not matching ^1.4
437443
Not finding what you were looking for? Try calling `composer require "vendor1/package1:^1.4" --dry-run` to get another view on the problem.
438-
OUTPUT
444+
OUTPUT,
445+
0
439446
];
440447

441448
yield 'there is no installed package depending on the package in versions not matching a specific version' => [
442449
['package' => 'vendor1/package1', 'version' => '^1.3'],
443450
<<<OUTPUT
444451
There is no installed package depending on "vendor1/package1" in versions not matching ^1.3
445452
Not finding what you were looking for? Try calling `composer require "vendor1/package1:^1.3" --dry-run` to get another view on the problem.
446-
OUTPUT
453+
OUTPUT,
454+
0
447455
];
448456

449457
yield 'an installed package requires an incompatible version of the inspected package' => [
450458
['package' => 'vendor2/package3', 'version' => '1.5.0'],
451459
<<<OUTPUT
452-
vendor2/package2 1.0.0 requires vendor2/package3 (1.4.*)
460+
vendor2/package2 1.0.0 requires vendor2/package3 (1.4.*)
453461
Not finding what you were looking for? Try calling `composer update "vendor2/package3:1.5.0" --dry-run` to get another view on the problem.
454-
OUTPUT
462+
OUTPUT,
463+
1
455464
];
456465
}
457466
}

tests/Composer/Test/TestCase.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,14 @@ public function getApplicationTester(): ApplicationTester
210210
return new ApplicationTester($application);
211211
}
212212

213+
/**
214+
* Trims the entire string but also the trailing spaces off of every line
215+
*/
216+
protected function trimLines(string $str): string
217+
{
218+
return trim(Preg::replace('{^(.*?) *$}m', '$1', $str));
219+
}
220+
213221
protected static function getVersionParser(): VersionParser
214222
{
215223
if (!self::$parser) {

0 commit comments

Comments
 (0)