From d83210ca77b6ddf83d96d5e964e2a4247a5bacaa Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Sat, 12 Aug 2017 22:20:50 -0400 Subject: [PATCH] Attempt to better handle python(2|3) tempfile differences --- generate-flag-types | 14 +++++++++++--- runtests | 9 ++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/generate-flag-types b/generate-flag-types index 9135705..d77d470 100755 --- a/generate-flag-types +++ b/generate-flag-types @@ -68,6 +68,9 @@ import tempfile import textwrap +_PY3 = sys.version_info.major == 3 + + class _FancyFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter): pass @@ -104,9 +107,7 @@ def main(sysargs=sys.argv[:]): def _generate_flag_types(writefunc, output_go, input_json): types = json.load(input_json) - tmp = tempfile.NamedTemporaryFile( - suffix='.go', mode='w', delete=False, encoding='utf-8' - ) + tmp = _get_named_tmp_go() writefunc(tmp, types) tmp.close() @@ -119,6 +120,13 @@ def _generate_flag_types(writefunc, output_go, input_json): os.remove(tmp.name) +def _get_named_tmp_go(): + tmp_args = dict(suffix='.go', mode='w', delete=False) + if _PY3: + tmp_args['encoding'] = 'utf-8' + return tempfile.NamedTemporaryFile(**tmp_args) + + def _set_typedef_defaults(typedef): typedef.setdefault('doctail', '') typedef.setdefault('context_type', typedef['type']) diff --git a/runtests b/runtests index fe0d011..d5e6933 100755 --- a/runtests +++ b/runtests @@ -13,6 +13,7 @@ import tempfile from subprocess import check_call, check_output +_PY3 = sys.version_info.major == 3 _WINDOWS = platform.system().lower() == 'windows' _PACKAGE_NAME = os.environ.get( 'CLI_PACKAGE_NAME', 'github.com/urfave/cli' @@ -148,9 +149,11 @@ def _go_version(): def _combine_coverprofiles(coverprofiles): - combined = tempfile.NamedTemporaryFile( - suffix='.coverprofile', delete=False - ) + tmp_args = dict(suffix='.coverprofile', delete=False) + if _PY3: + tmp_args['encoding'] = 'utf-8' + + combined = tempfile.NamedTemporaryFile(**tmp_args) combined.write(b'mode: set\n') for coverprofile in coverprofiles: