summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Grasman <kim.grasman@gmail.com>2018-03-18 16:37:34 +0100
committerKim Gräsman <kim.grasman@gmail.com>2018-04-08 19:03:35 +0200
commiteee0b0fc5113caf4834419bce28b96852115f5ea (patch)
treea8a5103860272bdc62fe016c9bfdac7ab3003f84
parentcdb8ac8c1fe0c31f00f723fd9e9aab211cb3219a (diff)
Make FileInfo available to both read/write of files
-rwxr-xr-xfix_includes.py13
-rwxr-xr-xfix_includes_test.py13
2 files changed, 16 insertions, 10 deletions
diff --git a/fix_includes.py b/fix_includes.py
index 2c55e1c..0dee667 100755
--- a/fix_includes.py
+++ b/fix_includes.py
@@ -530,7 +530,7 @@ class FileInfo(object):
return FileInfo.DEFAULT_LINESEP
-def _ReadFile(filename):
+def _ReadFile(filename, fileinfo):
"""Read from filename and return a list of file lines."""
try:
return open(filename).read().splitlines()
@@ -539,12 +539,9 @@ def _ReadFile(filename):
return None
-def _WriteFile(filename, file_lines):
+def _WriteFile(filename, fileinfo, file_lines):
"""Write the given file-lines to the file."""
try:
- # Detect encoding details
- fileinfo = FileInfo.parse(filename)
-
# Open file in binary mode to preserve line endings
with open(filename, 'wb') as f:
f.write(fileinfo.linesep.join(file_lines))
@@ -2006,7 +2003,9 @@ def FixManyFiles(iwyu_records, flags):
files_fixed = 0
for iwyu_record in iwyu_records:
try:
- file_contents = _ReadFile(iwyu_record.filename)
+ fileinfo = FileInfo.parse(iwyu_record.filename)
+
+ file_contents = _ReadFile(iwyu_record.filename, fileinfo)
if not file_contents:
continue
@@ -2019,7 +2018,7 @@ def FixManyFiles(iwyu_records, flags):
if flags.dry_run:
PrintFileDiff(old_lines, fixed_lines)
else:
- _WriteFile(iwyu_record.filename, fixed_lines)
+ _WriteFile(iwyu_record.filename, fileinfo, fixed_lines)
files_fixed += 1
except FixIncludesError as why:
diff --git a/fix_includes_test.py b/fix_includes_test.py
index c4687f5..1915fe6 100755
--- a/fix_includes_test.py
+++ b/fix_includes_test.py
@@ -46,12 +46,15 @@ class FakeFlags(object):
class FixIncludesBase(unittest.TestCase):
"""Does setup that every test will want."""
- def _ReadFile(self, filename):
+ def _ReadFile(self, filename, fileinfo):
assert filename in self.before_map, filename
return self.before_map[filename]
- def _WriteFile(self, filename, file_lines):
- self.actual_after_contents.extend(file_lines)
+ def _ParseFileInfo(self, filename):
+ return fix_includes.FileInfo('\n')
+
+ def _WriteFile(self, filename, fileinfo, contents):
+ return self.actual_after_contents.extend(contents)
def setUp(self):
self.flags = FakeFlags()
@@ -63,7 +66,11 @@ class FixIncludesBase(unittest.TestCase):
# INPUT: fix_includes._ReadFile takes a filename
# and returns the contents of filename (as a list).
+ # FileInfo controls encoding details of the file,
+ # wire it to return something that agrees with the
+ # tests.
fix_includes._ReadFile = self._ReadFile
+ fix_includes.FileInfo.parse = self._ParseFileInfo
# OUTPUT: Instead of writing to file, save full output.
self.actual_after_contents = []