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
Empty file.
2 changes: 2 additions & 0 deletions tests/vsg/file_timestamp/failing_file.vhd
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

library ieee;
2 changes: 2 additions & 0 deletions tests/vsg/file_timestamp/passing_file.vhd
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@

library ieee;
58 changes: 58 additions & 0 deletions tests/vsg/file_timestamp/test_timestamp.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# -*- coding: utf-8 -*-
import os
import shutil
import sys
import unittest
from unittest import mock

from vsg import __main__


class testMain(unittest.TestCase):
def setUp(self):
if os.path.exists("deleteme.vhd"):
os.remove("deleteme.vhd")

def tearDown(self):
if os.path.exists("deleteme.vhd"):
os.remove("deleteme.vhd")

@mock.patch("sys.stdout")
def test_passing_file(self, mock_stdout):
shutil.copy("tests/vsg/file_timestamp/passing_file.vhd", "deleteme.vhd")
expected = os.path.getmtime("deleteme.vhd")

sys.argv = ["vsg"]
sys.argv.extend(["-f", "deleteme.vhd"])
sys.argv.extend(["--output_format", "syntastic"])
sys.argv.extend(["-p 1"])
sys.argv.extend(["--fix"])

try:
__main__.main()
except SystemExit:
pass

actual = os.path.getmtime("deleteme.vhd")

self.assertEqual(actual, expected)

@mock.patch("sys.stdout")
def test_failing_file(self, mock_stdout):
shutil.copy("tests/vsg/file_timestamp/failing_file.vhd", "deleteme.vhd")
expected = os.path.getmtime("deleteme.vhd")

sys.argv = ["vsg"]
sys.argv.extend(["-f", "deleteme.vhd"])
sys.argv.extend(["--output_format", "syntastic"])
sys.argv.extend(["-p 1"])
sys.argv.extend(["--fix"])

try:
__main__.main()
except SystemExit:
pass

actual = os.path.getmtime("deleteme.vhd")

self.assertNotEqual(actual, expected)
4 changes: 3 additions & 1 deletion vsg/apply_rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,9 @@ def apply_rules(commandLineArguments, oConfig, tIndexFileName):
if commandLineArguments.backup:
create_backup_file(sFileName)
oRules.fix(commandLineArguments.fix_phase, commandLineArguments.skip_phase, fix_only)
write_vhdl_file(oVhdlFile, oConfig.dConfig)

if oRules.had_violations:
write_vhdl_file(oVhdlFile, oConfig.dConfig)

oRules.clear_violations()
oRules.check_rules(
Expand Down
2 changes: 2 additions & 0 deletions vsg/rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ def __init__(self):
self.unique_id = str(self.name) + "_" + str(self.identifier)
self.solution = None
self.violations = []
self.had_violations = False
self.indent_style = "spaces"
self.indent_size = 2
self.phase = None
Expand Down Expand Up @@ -108,6 +109,7 @@ def fix(self, oFile, dFixOnly=None):
self._filter_out_fix_only_violations(dFixOnly)
for oViolation in self.violations[::-1]:
self._fix_violation(oViolation)
self.had_violations = True
oFile.update(self.violations, self.remap)
self.clear_violations()

Expand Down
3 changes: 3 additions & 0 deletions vsg/rule_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ def __init__(self, oVhdlFile, oSeverityList, sLocalRulesDirectory=None):
self.oVhdlFile = oVhdlFile
self.maximumPhase = maximum_phase(self.rules)
self.violations = False
self.had_violations = False
self.oSeverityList = oSeverityList

def fix(self, iFixPhase=7, lSkipPhase=None, dFixOnly=None):
Expand Down Expand Up @@ -156,6 +157,8 @@ def fix(self, iFixPhase=7, lSkipPhase=None, dFixOnly=None):
# print(oRule.unique_id)
if oRule.severity.type == severity.error_type:
oRule.fix(self.oVhdlFile, dFixOnly)
if oRule.had_violations:
self.had_violations = True
else:
oRule.analyze(self.oVhdlFile)

Expand Down
Loading