Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -1010,8 +1010,8 @@ public function processLongArgument($arg, $pos)
}

self::$overriddenDefaults['stdinPath'] = true;
} else if (PHP_CODESNIFFER_CBF === false && substr($arg, 0, 12) === 'report-file=') {
if (isset(self::$overriddenDefaults['reportFile']) === true) {
} else if (substr($arg, 0, 12) === 'report-file=') {
if (PHP_CODESNIFFER_CBF === true || isset(self::$overriddenDefaults['reportFile']) === true) {
break;
}

Expand Down
64 changes: 64 additions & 0 deletions tests/Core/Config/ReportArgsTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<?php
/**
* Tests for the \PHP_CodeSniffer\Config --report, --report-file and --report-* arguments.
*
* @copyright 2025 PHPCSStandards and contributors
* @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/

namespace PHP_CodeSniffer\Tests\Core\Config;

use PHP_CodeSniffer\Tests\ConfigDouble;
use PHPUnit\Framework\TestCase;

/**
* Tests for the \PHP_CodeSniffer\Config --report, --report-file and --report-* arguments.
*
* @covers \PHP_CodeSniffer\Config::processLongArgument
*/
final class ReportArgsTest extends TestCase
{


/**
* [CS mode] Verify that passing `--report-file` does not influence *which* reports get activated.
*
* @return void
*/
public function testReportFileDoesNotSetReportsCs()
{
if (PHP_CODESNIFFER_CBF === true) {
$this->markTestSkipped('This test needs CS mode to run');
}

$config = new ConfigDouble(['--report-file='.__DIR__.'/report.txt']);

$this->assertTrue(is_string($config->reportFile));
$this->assertStringEndsWith('/report.txt', $config->reportFile);
$this->assertSame(['full' => null], $config->reports);

}//end testReportFileDoesNotSetReportsCs()


/**
* [CBF mode] Verify that passing `--report-file` does not influence *which* reports get activated.
*
* @group CBF
*
* @return void
*/
public function testReportFileDoesNotSetReportsCbf()
{
if (PHP_CODESNIFFER_CBF === false) {
$this->markTestSkipped('This test needs CBF mode to run');
}

$config = new ConfigDouble(['--report-file='.__DIR__.'/report.txt']);

$this->assertNull($config->reportFile);
$this->assertSame(['full' => null], $config->reports);

}//end testReportFileDoesNotSetReportsCbf()


}//end class