diff options
Diffstat (limited to 'src/nvim/testdir/test_makeencoding.py')
| -rw-r--r-- | src/nvim/testdir/test_makeencoding.py | 67 | 
1 files changed, 67 insertions, 0 deletions
| diff --git a/src/nvim/testdir/test_makeencoding.py b/src/nvim/testdir/test_makeencoding.py new file mode 100644 index 0000000000..041edadc0a --- /dev/null +++ b/src/nvim/testdir/test_makeencoding.py @@ -0,0 +1,67 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# Test program for :make, :grep and :cgetfile. + +from __future__ import print_function, unicode_literals +import locale +import io +import sys + +def set_output_encoding(enc=None): +    """Set the encoding of stdout and stderr + +    arguments: +      enc -- Encoding name. +             If omitted, locale.getpreferredencoding() is used. +    """ +    if enc is None: +        enc = locale.getpreferredencoding() + +    def get_text_writer(fo, **kwargs): +        kw = dict(kwargs) +        kw.setdefault('errors', 'backslashreplace') # use \uXXXX style +        kw.setdefault('closefd', False) + +        if sys.version_info[0] < 3: +            # Work around for Python 2.x +            # New line conversion isn't needed here. Done in somewhere else. +            writer = io.open(fo.fileno(), mode='w', newline='', **kw) +            write = writer.write    # save the original write() function +            enc = locale.getpreferredencoding() +            def convwrite(s): +                if isinstance(s, bytes): +                    write(s.decode(enc))    # convert to unistr +                else: +                    write(s) +                try: +                    writer.flush()  # needed on Windows +                except IOError: +                    pass +            writer.write = convwrite +        else: +            writer = io.open(fo.fileno(), mode='w', **kw) +        return writer + +    sys.stdout = get_text_writer(sys.stdout, encoding=enc) +    sys.stderr = get_text_writer(sys.stderr, encoding=enc) + + +def main(): +    enc = 'utf-8' +    if len(sys.argv) > 1: +        enc = sys.argv[1] +    set_output_encoding(enc) + +    message_tbl = { +            'utf-8': 'ÀÈÌÒÙ こんにちは 你好', +            'latin1': 'ÀÈÌÒÙ', +            'cp932': 'こんにちは', +            'cp936': '你好', +            } + +    print('Xfoobar.c(10) : %s (%s)' % (message_tbl[enc], enc)) + + +if __name__ == "__main__": +    main() | 
