Skip to content

Commit f621642

Browse files
authored
Merge pull request #1498 from JHertz5/issue-1489
Issue#1489: Update `whitespace_005` to make ignoring of whitespace before numbers optional
2 parents 955408c + 72d0391 commit f621642

File tree

5 files changed

+60
-9
lines changed

5 files changed

+60
-9
lines changed

docs/whitespace_rules.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ whitespace_005
9191
This rule checks for spaces after an open parenthesis.
9292

9393
.. NOTE::
94-
Spaces before numbers are allowed.
94+
Spaces before numbers are ignored.
95+
This can be disabled by setting the *'ignore_spaces_before_numbers'* attribute to *'False'*.
9596

9697
**Violation**
9798

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
architecture RTL of FIFO is
3+
4+
signal sig1 : std_logic_vector(31 downto 0);
5+
signal sig2 : std_logic_vector(3 downto 0);
6+
signal sig3 : std_logic_vector(c_width downto 0);
7+
8+
-- Violations
9+
10+
signal sig1 : std_logic_vector(31 downto 0);
11+
signal sig2 : std_logic_vector(3 downto 0);
12+
signal sig3 : std_logic_vector(c_width downto 0);
13+
14+
begin
15+
16+
end architecture RTL;

tests/whitespace/rule_005_test_input.fixed.vhd renamed to tests/whitespace/rule_005_test_input.fixed_ignore_spaces_before_numbers_true.vhd

File renamed without changes.

tests/whitespace/test_rule_005.py

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,35 @@
1010
sTestDir = os.path.dirname(__file__)
1111

1212
lFile, eError = vhdlFile.utils.read_vhdlfile(os.path.join(sTestDir, "rule_005_test_input.vhd"))
13-
lExpected = []
14-
lExpected.append("")
15-
utils.read_file(os.path.join(sTestDir, "rule_005_test_input.fixed.vhd"), lExpected)
13+
14+
lExpected_ignore_spaces_before_numbers_false = []
15+
lExpected_ignore_spaces_before_numbers_false.append("")
16+
utils.read_file(os.path.join(sTestDir, "rule_005_test_input.fixed_ignore_spaces_before_numbers_false.vhd"), lExpected_ignore_spaces_before_numbers_false)
17+
18+
lExpected_ignore_spaces_before_numbers_true = []
19+
lExpected_ignore_spaces_before_numbers_true.append("")
20+
utils.read_file(os.path.join(sTestDir, "rule_005_test_input.fixed_ignore_spaces_before_numbers_true.vhd"), lExpected_ignore_spaces_before_numbers_true)
1621

1722

1823
class test_rule(unittest.TestCase):
1924
def setUp(self):
2025
self.oFile = vhdlFile.vhdlFile(lFile)
2126
self.assertIsNone(eError)
2227

23-
def test_rule_005(self):
28+
def test_rule_005_ignore_spaces_before_numbers_false(self):
29+
oRule = whitespace.rule_005()
30+
oRule.ignore_spaces_before_numbers = False
31+
self.assertTrue(oRule)
32+
self.assertEqual(oRule.name, "whitespace")
33+
self.assertEqual(oRule.identifier, "005")
34+
self.assertEqual(oRule.groups, ["whitespace"])
35+
36+
lExpected = [5, 10, 12]
37+
38+
oRule.analyze(self.oFile)
39+
self.assertEqual(lExpected, utils.extract_violation_lines_from_violation_object(oRule.violations))
40+
41+
def test_rule_005_ignore_spaces_before_numbers_true(self):
2442
oRule = whitespace.rule_005()
2543
self.assertTrue(oRule)
2644
self.assertEqual(oRule.name, "whitespace")
@@ -32,14 +50,27 @@ def test_rule_005(self):
3250
oRule.analyze(self.oFile)
3351
self.assertEqual(lExpected, utils.extract_violation_lines_from_violation_object(oRule.violations))
3452

35-
def test_fix_rule_005(self):
53+
def test_fix_rule_005_ignore_spaces_before_numbers_false(self):
54+
oRule = whitespace.rule_005()
55+
oRule.ignore_spaces_before_numbers = False
56+
57+
oRule.fix(self.oFile)
58+
59+
lActual = self.oFile.get_lines()
60+
61+
self.assertEqual(lExpected_ignore_spaces_before_numbers_false, lActual)
62+
63+
oRule.analyze(self.oFile)
64+
self.assertEqual(oRule.violations, [])
65+
66+
def test_fix_rule_005_ignore_spaces_before_numbers_true(self):
3667
oRule = whitespace.rule_005()
3768

3869
oRule.fix(self.oFile)
3970

4071
lActual = self.oFile.get_lines()
4172

42-
self.assertEqual(lExpected, lActual)
73+
self.assertEqual(lExpected_ignore_spaces_before_numbers_true, lActual)
4374

4475
oRule.analyze(self.oFile)
4576
self.assertEqual(oRule.violations, [])

vsg/rules/whitespace/rule_005.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ class rule_005(whitespace.Rule):
1313
This rule checks for spaces after an open parenthesis.
1414
1515
.. NOTE::
16-
Spaces before numbers are allowed.
16+
Spaces before numbers are ignored.
17+
This can be disabled by setting the *'ignore_spaces_before_numbers'* attribute to *'False'*.
1718
1819
**Violation**
1920
@@ -38,6 +39,8 @@ def __init__(self):
3839
self.iSpaces = 0
3940
self.lTokens = [parser.open_parenthesis]
4041
self.configuration_documentation_link = None
42+
self.ignore_spaces_before_numbers = True
43+
self.configuration.append("ignore_spaces_before_numbers")
4144

4245
def _get_tokens_of_interest(self, oFile):
4346
return oFile.get_n_tokens_before_and_after_tokens(2, self.lTokens)
@@ -49,7 +52,7 @@ def _analyze(self, lToi):
4952
oRight = lTokens[-2]
5053
if isinstance(oRight, parser.whitespace):
5154
if not utils.token_is_whitespace_or_comment(lTokens[-1]):
52-
if not lTokens[-1].get_value().isnumeric():
55+
if not (lTokens[-1].get_value().isnumeric() and self.ignore_spaces_before_numbers):
5356
oViolation = violation.New(iLine, oToi, self.solution)
5457
self.add_violation(oViolation)
5558

0 commit comments

Comments
 (0)