Skip to content

Commit 4012ec5

Browse files
authored
[BUGFIX] Set line number for AddRule() with only column number (#1265)
Continue to preserve the column number. Also tighten the test to confirm the `Rule` is added at the end. Note that the reason for `markTestSkipped()` was incorrect - the line number was not being set at all. Part of #974.
1 parent be60456 commit 4012ec5

File tree

3 files changed

+9
-7
lines changed

3 files changed

+9
-7
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ Please also have a look at our
105105

106106
### Fixed
107107

108+
- Set line number when `RuleSet::addRule()` called with only column number set
109+
(#1265)
108110
- Ensure first rule added with `RuleSet::addRule()` has valid position (#1262)
109111
- Don't render `rgb` colors with percentage values using hex notation (#803)
110112

src/RuleSet/RuleSet.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,16 @@ public function addRule(Rule $ruleToAdd, ?Rule $sibling = null): void
110110
$ruleToAdd->setPosition($sibling->getLineNo(), $sibling->getColNo() - 1);
111111
}
112112
}
113-
if ($ruleToAdd->getLineNo() === 0 && $ruleToAdd->getColNo() === 0) {
113+
if ($ruleToAdd->getLineNumber() === null) {
114114
//this node is added manually, give it the next best line
115+
$columnNumber = $ruleToAdd->getColumnNumber() ?? 0;
115116
$rules = $this->getRules();
116117
$rulesCount = \count($rules);
117118
if ($rulesCount > 0) {
118119
$last = $rules[$rulesCount - 1];
119-
$ruleToAdd->setPosition($last->getLineNo() + 1, 0);
120+
$ruleToAdd->setPosition($last->getLineNo() + 1, $columnNumber);
120121
} else {
121-
$ruleToAdd->setPosition(1, 0);
122+
$ruleToAdd->setPosition(1, $columnNumber);
122123
}
123124
} elseif ($ruleToAdd->getColumnNumber() === null) {
124125
$ruleToAdd->setPosition($ruleToAdd->getLineNumber(), 0);

tests/Unit/RuleSet/RuleSetTest.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,19 +138,18 @@ public function addRuleWithOnlyLineNumberAddsRuleAndSetsColumnNumberPreservingLi
138138
*
139139
* @param list<string> $initialPropertyNames
140140
*/
141-
public function addRuleWithOnlyColumnNumberAddsRuleAndSetsLineNumberPreservingColumnNumber(
141+
public function addRuleWithOnlyColumnNumberAddsRuleAfterInitialRulesAndSetsLineNumberPreservingColumnNumber(
142142
array $initialPropertyNames,
143143
string $propertyNameToAdd
144144
): void {
145-
self::markTestSkipped('currently broken - does not preserve column number');
146-
147145
$ruleToAdd = new Rule($propertyNameToAdd);
148146
$ruleToAdd->setPosition(null, 42);
149147
$this->setRulesFromPropertyNames($initialPropertyNames);
150148

151149
$this->subject->addRule($ruleToAdd);
152150

153-
self::assertContains($ruleToAdd, $this->subject->getRules());
151+
$rules = $this->subject->getRules();
152+
self::assertSame($ruleToAdd, \end($rules));
154153
self::assertIsInt($ruleToAdd->getLineNumber(), 'line number not set');
155154
self::assertGreaterThanOrEqual(1, $ruleToAdd->getLineNumber(), 'line number not valid');
156155
self::assertSame(42, $ruleToAdd->getColumnNumber(), 'column number not preserved');

0 commit comments

Comments
 (0)