diff options
| author | b-r-o-c-k <brockmammen@gmail.com> | 2018-04-14 14:17:51 -0500 | 
|---|---|---|
| committer | b-r-o-c-k <brockmammen@gmail.com> | 2018-04-14 14:17:51 -0500 | 
| commit | ad999eaa775d7d4b0cacedb30c6ea3a0ee699a6f (patch) | |
| tree | 92de2079e80f5f289dd87a54af123cb7d90c3058 /src/nvim/testdir/test_makeencoding.py | |
| parent | 78bc52ea5397c092d01cd08296fe1dc85d998329 (diff) | |
| parent | ef4feab0e75be19c5f41d70a001db980b72090f5 (diff) | |
| download | rneovim-ad999eaa775d7d4b0cacedb30c6ea3a0ee699a6f.tar.gz rneovim-ad999eaa775d7d4b0cacedb30c6ea3a0ee699a6f.tar.bz2 rneovim-ad999eaa775d7d4b0cacedb30c6ea3a0ee699a6f.zip  | |
Merge branch 'master' into s-dash-stdin
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()  | 
