48 lines
1.7 KiB
Diff
48 lines
1.7 KiB
Diff
--- /usr/lib/python3.5/site-packages/cram.py 2016-01-16 20:22:50.188589086 +0100
|
|
+++ cram.py 2016-01-20 12:02:14.881815552 +0100
|
|
@@ -12,6 +12,9 @@
|
|
import shutil
|
|
import time
|
|
import tempfile
|
|
+import re
|
|
+
|
|
+_newlines_re = re.compile(r'(\r\n|\r|\r)')
|
|
|
|
try:
|
|
import configparser
|
|
@@ -168,14 +171,14 @@
|
|
cmdline = '%s$ ' % indent
|
|
conline = '%s> ' % indent
|
|
|
|
- f = open(path)
|
|
+ f = open(path, 'r', encoding='utf-8')
|
|
abspath = os.path.abspath(path)
|
|
env = os.environ.copy()
|
|
env['TESTDIR'] = os.path.dirname(abspath)
|
|
env['TESTFILE'] = os.path.basename(abspath)
|
|
p = subprocess.Popen([shell, '-'], bufsize=-1, stdin=subprocess.PIPE,
|
|
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
|
- universal_newlines=True, env=env,
|
|
+ universal_newlines=False, env=env,
|
|
preexec_fn=makeresetsigpipe(),
|
|
close_fds=os.name == 'posix')
|
|
salt = 'CRAM%s' % time.time()
|
|
@@ -199,7 +202,8 @@
|
|
after.setdefault(pos, []).append(line)
|
|
stdin.append('echo "\n%s %s $?"\n' % (salt, i + 1))
|
|
|
|
- output = p.communicate(input=''.join(stdin))[0]
|
|
+ output = p.communicate(input=''.join(stdin).encode('utf-8'))[0].decode('utf-8')
|
|
+ output = _newlines_re.sub('\n', output)
|
|
if p.returncode == 80:
|
|
return (refout, None, [])
|
|
|
|
@@ -336,7 +340,7 @@
|
|
log('!', 'failed\n', verbose)
|
|
if not quiet:
|
|
log('\n', None, verbose)
|
|
- errfile = open(errpath, 'w')
|
|
+ errfile = open(errpath, 'w', encoding='utf-8')
|
|
try:
|
|
for line in postout:
|
|
errfile.write(line)
|