Browse Source

Fix commandline test character encoding issues for Py3

tags/nilmdb-2.0.0
Jim Paris 4 years ago
parent
commit
6d673bd2be
1 changed files with 4 additions and 11 deletions
  1. +4
    -11
      tests/test_cmdline.py

+ 4
- 11
tests/test_cmdline.py View File

@@ -54,11 +54,6 @@ def setup_module():
def teardown_module():
server_stop()

# Add an encoding property to StringIO so Python will convert Unicode
# properly when writing or reading.
class UTF8StringIO(io.StringIO):
encoding = 'utf-8'

class TestCmdline(object):

def run(self, arg_string, infile=None, outfile=None):
@@ -76,22 +71,20 @@ class TestCmdline(object):
( sys.stdin, sys.stdout, sys.stderr ) = self.saved
# Empty input if none provided
if infile is None:
infile = UTF8StringIO("")
infile = io.StringIO("")
# Capture stderr
errfile = UTF8StringIO()
errfile = io.StringIO()
if outfile is None:
# If no output file, capture stdout with stderr
outfile = errfile
with stdio_wrapper(infile, outfile, errfile) as s:
try:
# shlex doesn't support Unicode very well. Encode the
# string as UTF-8 explicitly before splitting.
args = shlex.split(arg_string.encode('utf-8'))
args = shlex.split(arg_string)
nilmdb.cmdline.Cmdline(args).run()
sys.exit(0)
except SystemExit as e:
exitcode = e.code
captured = nilmdb.utils.str.decode(outfile.getvalue())
captured = outfile.getvalue()
self.captured = captured
self.exitcode = exitcode



Loading…
Cancel
Save