forked from OSchip/llvm-project
Revert r329012 "[lit] Fix problem in how Python versions open files with different encodings"
This doesn't work with Python 2. See this build-in-progress: http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/11105 llvm-svn: 329017
This commit is contained in:
parent
1a45e0cccc
commit
2aae49d3b2
|
@ -2,7 +2,6 @@ from __future__ import absolute_import
|
|||
import difflib
|
||||
import errno
|
||||
import functools
|
||||
import io
|
||||
import itertools
|
||||
import getopt
|
||||
import os, signal, subprocess, sys
|
||||
|
@ -387,51 +386,9 @@ def executeBuiltinDiff(cmd, cmd_shenv):
|
|||
return path, sorted(child_trees)
|
||||
|
||||
def compareTwoFiles(filepaths):
|
||||
compare_bytes = False
|
||||
encoding = None
|
||||
filelines = []
|
||||
for file in filepaths:
|
||||
try:
|
||||
with open(file, 'r') as f:
|
||||
filelines.append(f.readlines())
|
||||
except UnicodeDecodeError:
|
||||
try:
|
||||
with open(file, 'r', encoding="utf-8") as f:
|
||||
filelines.append(f.readlines())
|
||||
encoding = "utf-8"
|
||||
except:
|
||||
compare_bytes = True
|
||||
|
||||
if compare_bytes:
|
||||
return compareTwoBinaryFiles(filepaths)
|
||||
else:
|
||||
return compareTwoTextFiles(filepaths, encoding)
|
||||
|
||||
def compareTwoBinaryFiles(filepaths):
|
||||
filelines = []
|
||||
for file in filepaths:
|
||||
with open(file, 'rb') as f:
|
||||
filelines.append(f.readlines())
|
||||
|
||||
exitCode = 0
|
||||
if hasattr(difflib, 'diff_bytes'):
|
||||
# python 3.5 or newer
|
||||
diffs = difflib.diff_bytes(difflib.unified_diff, filelines[0], filelines[1], filepaths[0].encode(), filepaths[1].encode())
|
||||
diffs = [diff.decode() for diff in diffs]
|
||||
else:
|
||||
# python 2.7
|
||||
func = difflib.unified_diff if unified_diff else difflib.context_diff
|
||||
diffs = func(filelines[0], filelines[1], filepaths[0], filepaths[1])
|
||||
|
||||
for diff in diffs:
|
||||
stdout.write(diff)
|
||||
exitCode = 1
|
||||
return exitCode
|
||||
|
||||
def compareTwoTextFiles(filepaths, encoding):
|
||||
filelines = []
|
||||
for file in filepaths:
|
||||
with open(file, 'r', encoding=encoding) as f:
|
||||
with open(file, 'r') as f:
|
||||
filelines.append(f.readlines())
|
||||
|
||||
exitCode = 0
|
||||
|
|
Loading…
Reference in New Issue