diff options
author | Kim Grasman <kim.grasman@gmail.com> | 2018-03-18 16:37:34 +0100 |
---|---|---|
committer | Kim Gräsman <kim.grasman@gmail.com> | 2018-04-08 19:03:35 +0200 |
commit | eee0b0fc5113caf4834419bce28b96852115f5ea (patch) | |
tree | a8a5103860272bdc62fe016c9bfdac7ab3003f84 | |
parent | cdb8ac8c1fe0c31f00f723fd9e9aab211cb3219a (diff) |
Make FileInfo available to both read/write of files
-rwxr-xr-x | fix_includes.py | 13 | ||||
-rwxr-xr-x | fix_includes_test.py | 13 |
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 = [] |