diff --git a/legacy/phpstan-stubs/Activity.stub b/legacy/phpstan-stubs/Activity.stub new file mode 100644 index 00000000..483ead1d --- /dev/null +++ b/legacy/phpstan-stubs/Activity.stub @@ -0,0 +1,38 @@ +result; + // The result is null until the activity has finished. + $result = $activity->result ?? ''; $name = self::RESULT_NAMES[$result] ?? $result; foreach ($activity->commands ?? [] as $command) { diff --git a/legacy/tests/Service/ActivityMonitorTest.php b/legacy/tests/Service/ActivityMonitorTest.php new file mode 100644 index 00000000..337dc129 --- /dev/null +++ b/legacy/tests/Service/ActivityMonitorTest.php @@ -0,0 +1,60 @@ + 'a', 'result' => Activity::RESULT_SUCCESS]); + $this->assertSame('success', ActivityMonitor::formatResult($activity, false)); + } + + public function testFormatResultFailure(): void + { + $activity = new Activity(['id' => 'a', 'result' => Activity::RESULT_FAILURE]); + $this->assertSame('failure', ActivityMonitor::formatResult($activity, false)); + $this->assertSame('failure', ActivityMonitor::formatResult($activity, true)); + } + + public function testFormatResultNull(): void + { + // An in-progress activity has no result yet. + $activity = new Activity(['id' => 'a', 'state' => Activity::STATE_IN_PROGRESS, 'result' => null]); + $this->assertSame('', ActivityMonitor::formatResult($activity, false)); + $this->assertSame('', ActivityMonitor::formatResult($activity, true)); + } + + public function testFormatResultFailedCommandOverridesSuccess(): void + { + $activity = new Activity([ + 'id' => 'a', + 'result' => Activity::RESULT_SUCCESS, + 'commands' => [ + ['exit_code' => 0], + ['exit_code' => 1], + ], + ]); + $this->assertSame('failure', ActivityMonitor::formatResult($activity, false)); + $this->assertSame('failure', ActivityMonitor::formatResult($activity, true)); + } + + public function testFormatResultFailedCommandWithNullResult(): void + { + $activity = new Activity([ + 'id' => 'a', + 'state' => Activity::STATE_IN_PROGRESS, + 'result' => null, + 'commands' => [ + ['exit_code' => 1], + ], + ]); + $this->assertSame('failure', ActivityMonitor::formatResult($activity, false)); + } +}