mirror of
https://github.com/danog/psalm.git
synced 2024-11-30 04:39:00 +01:00
Use separate exit code to indicate Psalm finding issues (#5087)
* Use separate exit code to indicate Psalm finding issues This will allow to distinguish successful run that found some issues from crashes. * Fix e2e test expectations * Documented exit statuses
This commit is contained in:
parent
ed9043b43c
commit
0aa4f2044c
@ -16,6 +16,13 @@ If you want to run on specific files, use
|
|||||||
|
|
||||||
Run with `--help` to see a list of options that Psalm supports.
|
Run with `--help` to see a list of options that Psalm supports.
|
||||||
|
|
||||||
|
## Exit status
|
||||||
|
|
||||||
|
Psalm exits with status `0` when it successfully completed and found no issues,
|
||||||
|
`1` when there was a problem running Psalm and `2` when it completed
|
||||||
|
successfully but found some issues. Any exit status apart from those indicate
|
||||||
|
some internal problem.
|
||||||
|
|
||||||
## Shepherd
|
## Shepherd
|
||||||
|
|
||||||
Psalm currently offers some GitHub integration with public projects.
|
Psalm currently offers some GitHub integration with public projects.
|
||||||
|
@ -686,7 +686,7 @@ class IssueBuffer
|
|||||||
&& $project_analyzer->generated_report_options
|
&& $project_analyzer->generated_report_options
|
||||||
&& isset($_SERVER['GITHUB_WORKFLOW']))
|
&& isset($_SERVER['GITHUB_WORKFLOW']))
|
||||||
) {
|
) {
|
||||||
exit(1);
|
exit(2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ class PsalmEndToEndTest extends TestCase
|
|||||||
$this->assertStringContainsString('InvalidReturnType', $result['STDOUT']);
|
$this->assertStringContainsString('InvalidReturnType', $result['STDOUT']);
|
||||||
$this->assertStringContainsString('InvalidReturnStatement', $result['STDOUT']);
|
$this->assertStringContainsString('InvalidReturnStatement', $result['STDOUT']);
|
||||||
$this->assertStringContainsString('2 errors', $result['STDOUT']);
|
$this->assertStringContainsString('2 errors', $result['STDOUT']);
|
||||||
$this->assertSame(1, $result['CODE']);
|
$this->assertSame(2, $result['CODE']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPsalmDiff(): void
|
public function testPsalmDiff(): void
|
||||||
@ -136,7 +136,7 @@ class PsalmEndToEndTest extends TestCase
|
|||||||
$this->assertStringContainsString('2 errors', $result['STDOUT']);
|
$this->assertStringContainsString('2 errors', $result['STDOUT']);
|
||||||
$this->assertStringContainsString('E', $result['STDERR']);
|
$this->assertStringContainsString('E', $result['STDERR']);
|
||||||
|
|
||||||
$this->assertSame(1, $result['CODE']);
|
$this->assertSame(2, $result['CODE']);
|
||||||
|
|
||||||
$result = $this->runPsalm(['--diff', '-m'], self::$tmpDir, true);
|
$result = $this->runPsalm(['--diff', '-m'], self::$tmpDir, true);
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ class PsalmEndToEndTest extends TestCase
|
|||||||
$this->assertStringContainsString('2 errors', $result['STDOUT']);
|
$this->assertStringContainsString('2 errors', $result['STDOUT']);
|
||||||
$this->assertStringNotContainsString('E', $result['STDERR']);
|
$this->assertStringNotContainsString('E', $result['STDERR']);
|
||||||
|
|
||||||
$this->assertSame(1, $result['CODE']);
|
$this->assertSame(2, $result['CODE']);
|
||||||
|
|
||||||
@unlink(self::$tmpDir . '/composer.lock');
|
@unlink(self::$tmpDir . '/composer.lock');
|
||||||
}
|
}
|
||||||
@ -157,7 +157,7 @@ class PsalmEndToEndTest extends TestCase
|
|||||||
|
|
||||||
$this->assertStringContainsString('TaintedHtml', $result['STDOUT']);
|
$this->assertStringContainsString('TaintedHtml', $result['STDOUT']);
|
||||||
$this->assertStringContainsString('1 errors', $result['STDOUT']);
|
$this->assertStringContainsString('1 errors', $result['STDOUT']);
|
||||||
$this->assertSame(1, $result['CODE']);
|
$this->assertSame(2, $result['CODE']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTaintingWithoutInit(): void
|
public function testTaintingWithoutInit(): void
|
||||||
@ -166,7 +166,7 @@ class PsalmEndToEndTest extends TestCase
|
|||||||
|
|
||||||
$this->assertStringContainsString('TaintedHtml', $result['STDOUT']);
|
$this->assertStringContainsString('TaintedHtml', $result['STDOUT']);
|
||||||
$this->assertStringContainsString('1 errors', $result['STDOUT']);
|
$this->assertStringContainsString('1 errors', $result['STDOUT']);
|
||||||
$this->assertSame(1, $result['CODE']);
|
$this->assertSame(2, $result['CODE']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testTaintGraphDumping(): void
|
public function testTaintGraphDumping(): void
|
||||||
@ -181,7 +181,7 @@ class PsalmEndToEndTest extends TestCase
|
|||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertSame(1, $result['CODE']);
|
$this->assertSame(2, $result['CODE']);
|
||||||
$this->assertFileEquals(
|
$this->assertFileEquals(
|
||||||
__DIR__ . '/../fixtures/expected_taint_graph.dot',
|
__DIR__ . '/../fixtures/expected_taint_graph.dot',
|
||||||
self::$tmpDir.'/taints.dot'
|
self::$tmpDir.'/taints.dot'
|
||||||
@ -200,7 +200,7 @@ class PsalmEndToEndTest extends TestCase
|
|||||||
|
|
||||||
$process = new Process(['php', $this->psalm, '--config=src/psalm.xml'], self::$tmpDir);
|
$process = new Process(['php', $this->psalm, '--config=src/psalm.xml'], self::$tmpDir);
|
||||||
$process->run();
|
$process->run();
|
||||||
$this->assertSame(1, $process->getExitCode());
|
$this->assertSame(2, $process->getExitCode());
|
||||||
$this->assertStringContainsString('InvalidReturnType', $process->getOutput());
|
$this->assertStringContainsString('InvalidReturnType', $process->getOutput());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user