Skip to content

Commit d9fcca3

Browse files
Issue#1407: Timestamp preserved for unmodified files.
1 parent cc678cb commit d9fcca3

File tree

7 files changed

+70
-1
lines changed

7 files changed

+70
-1
lines changed

tests/vsg/file_timestamp/__init__.py

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
library ieee;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
library ieee;
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# -*- coding: utf-8 -*-
2+
import os
3+
import shutil
4+
import sys
5+
import unittest
6+
from unittest import mock
7+
8+
from vsg import __main__
9+
10+
11+
class testMain(unittest.TestCase):
12+
def setUp(self):
13+
if os.path.exists("deleteme.vhd"):
14+
os.remove("deleteme.vhd")
15+
16+
def tearDown(self):
17+
if os.path.exists("deleteme.vhd"):
18+
os.remove("deleteme.vhd")
19+
20+
@mock.patch("sys.stdout")
21+
def test_passing_file(self, mock_stdout):
22+
shutil.copy("tests/vsg/file_timestamp/passing_file.vhd", "deleteme.vhd")
23+
expected = os.path.getmtime("deleteme.vhd")
24+
25+
sys.argv = ["vsg"]
26+
sys.argv.extend(["-f", "deleteme.vhd"])
27+
sys.argv.extend(["--output_format", "syntastic"])
28+
sys.argv.extend(["-p 1"])
29+
sys.argv.extend(["--fix"])
30+
31+
try:
32+
__main__.main()
33+
except SystemExit:
34+
pass
35+
36+
actual = os.path.getmtime("deleteme.vhd")
37+
38+
self.assertEqual(actual, expected)
39+
40+
@mock.patch("sys.stdout")
41+
def test_failing_file(self, mock_stdout):
42+
shutil.copy("tests/vsg/file_timestamp/failing_file.vhd", "deleteme.vhd")
43+
expected = os.path.getmtime("deleteme.vhd")
44+
45+
sys.argv = ["vsg"]
46+
sys.argv.extend(["-f", "deleteme.vhd"])
47+
sys.argv.extend(["--output_format", "syntastic"])
48+
sys.argv.extend(["-p 1"])
49+
sys.argv.extend(["--fix"])
50+
51+
try:
52+
__main__.main()
53+
except SystemExit:
54+
pass
55+
56+
actual = os.path.getmtime("deleteme.vhd")
57+
58+
self.assertNotEqual(actual, expected)

vsg/apply_rules.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,9 @@ def apply_rules(commandLineArguments, oConfig, tIndexFileName):
118118
if commandLineArguments.backup:
119119
create_backup_file(sFileName)
120120
oRules.fix(commandLineArguments.fix_phase, commandLineArguments.skip_phase, fix_only)
121-
write_vhdl_file(oVhdlFile, oConfig.dConfig)
121+
print(oRules.had_violations)
122+
if oRules.had_violations:
123+
write_vhdl_file(oVhdlFile, oConfig.dConfig)
122124

123125
oRules.clear_violations()
124126
oRules.check_rules(

vsg/rule.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ def __init__(self):
1111
self.unique_id = str(self.name) + "_" + str(self.identifier)
1212
self.solution = None
1313
self.violations = []
14+
self.had_violations = False
1415
self.indent_style = "spaces"
1516
self.indent_size = 2
1617
self.phase = None
@@ -108,6 +109,7 @@ def fix(self, oFile, dFixOnly=None):
108109
self._filter_out_fix_only_violations(dFixOnly)
109110
for oViolation in self.violations[::-1]:
110111
self._fix_violation(oViolation)
112+
self.had_violations = True
111113
oFile.update(self.violations, self.remap)
112114
self.clear_violations()
113115

vsg/rule_list.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ def __init__(self, oVhdlFile, oSeverityList, sLocalRulesDirectory=None):
121121
self.oVhdlFile = oVhdlFile
122122
self.maximumPhase = maximum_phase(self.rules)
123123
self.violations = False
124+
self.had_violations = False
124125
self.oSeverityList = oSeverityList
125126

126127
def fix(self, iFixPhase=7, lSkipPhase=None, dFixOnly=None):
@@ -156,6 +157,8 @@ def fix(self, iFixPhase=7, lSkipPhase=None, dFixOnly=None):
156157
# print(oRule.unique_id)
157158
if oRule.severity.type == severity.error_type:
158159
oRule.fix(self.oVhdlFile, dFixOnly)
160+
if oRule.had_violations:
161+
self.had_violations = True
159162
else:
160163
oRule.analyze(self.oVhdlFile)
161164

0 commit comments

Comments
 (0)