Skip to content

Commit 0775e0c

Browse files
authored
Add test for compact being used with variable strings (sirbrillig#223)
1 parent 6a0b28f commit 0775e0c

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed

Tests/VariableAnalysisSniff/VariableAnalysisTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,10 +502,33 @@ public function testCompactWarnings() {
502502
19,
503503
23,
504504
26,
505+
36,
505506
];
506507
$this->assertEquals($expectedWarnings, $lines);
507508
}
508509

510+
public function testCompactWarningsHaveCorrectSniffCodes() {
511+
$fixtureFile = $this->getFixture('CompactFixture.php');
512+
$phpcsFile = $this->prepareLocalFileForSniffs($fixtureFile);
513+
$phpcsFile->ruleset->setSniffProperty(
514+
'VariableAnalysis\Sniffs\CodeAnalysis\VariableAnalysisSniff',
515+
'allowUnusedParametersBeforeUsed',
516+
'false'
517+
);
518+
$phpcsFile->process();
519+
520+
$warnings = $phpcsFile->getWarnings();
521+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable', $warnings[2][49][0]['source']);
522+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable', $warnings[7][23][0]['source']);
523+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable', $warnings[10][54][0]['source']);
524+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable', $warnings[14][52][0]['source']);
525+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable', $warnings[19][5][0]['source']);
526+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable', $warnings[23][23][0]['source']);
527+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable', $warnings[26][66][0]['source']);
528+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable', $warnings[36][5][0]['source']);
529+
$this->assertEquals('VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable', $warnings[36][23][0]['source']);
530+
}
531+
509532
public function testTraitAllowsThis() {
510533
$fixtureFile = $this->getFixture('TraitFixture.php');
511534
$phpcsFile = $this->prepareLocalFileForSniffs($fixtureFile);
Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,37 @@
11
<?php
2-
function function_with_literal_compact($param1, $param2, $param3, $param4) {
2+
function function_with_literal_compact($param1, $param2, $param3, $param4) { // unused variable param2
33
$var1 = 'value1';
44
$var2 = 'value2';
55
$var4 = 'value4';
66
$squish = compact('var1');
7-
$squish = compact('var3');
7+
$squish = compact('var3'); // undefined variable var3
88
$squish = compact('param1');
99
$squish = compact('var2', /*comment*/ 'param3');
10-
$squish = compact(array('var4'), array('param4', 'var5'));
10+
$squish = compact(array('var4'), array('param4', 'var5')); // undefined variable var5
1111
echo $squish;
1212
}
1313

14-
function function_with_expression_compact($param1, $param2, $param3, $param4) {
14+
function function_with_expression_compact($param1, $param2, $param3, $param4) { // unused variable param2
1515
$var1 = "value1";
1616
$var2 = "value2";
1717
$var4 = "value4";
1818
$var6 = "value6";
19-
$var7 = "value7";
19+
$var7 = "value7"; // unused variale var7 (not actually unused but it's hard to detect that line 28 uses it)
2020
$var8 = "value8";
2121
$var9 = "value9";
2222
$squish = compact("var1");
23-
$squish = compact("var3"/*comment*/ );
23+
$squish = compact("var3"/*comment*/ ); // undefined variable var3
2424
$squish = compact("param1");
2525
$squish = compact("var2", "param3");
26-
$squish = compact(array("var4"), array("param4", /*comment*/ "var5"));
26+
$squish = compact(array("var4"), array("param4", /*comment*/ "var5")); // undefined variable var5
2727
$squish = compact($var6);
2828
$squish = compact("var" . "7");
2929
$squish = compact("blah $var8");
3030
$squish = compact("$var9");
3131
echo $squish;
3232
}
33+
34+
function foo() {
35+
$a = 'Hello';
36+
$c = compact( $a, $b ); // Unused variable c and undefined variable b
37+
}

0 commit comments

Comments
 (0)