Skip to content

Commit

Permalink
Decode list arguments to unicode
Browse files Browse the repository at this point in the history
Fixes #711.
  • Loading branch information
jamesls committed Mar 21, 2014
1 parent 233596e commit 81e3e95
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
5 changes: 5 additions & 0 deletions awscli/argparser.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ def parse_known_args(self, args, namespace=None):
for arg, value in vars(parsed).items():
if isinstance(value, six.binary_type):
setattr(parsed, arg, value.decode(terminal_encoding))
elif isinstance(value, list):
encoded = []
for v in value:
encoded.append(v.decode(terminal_encoding))
setattr(parsed, arg, encoded)
return parsed, remaining


Expand Down
40 changes: 40 additions & 0 deletions tests/unit/ec2/test_create_tags.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env python
# Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You
# may not use this file except in compliance with the License. A copy of
# the License is located at
#
# http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
# ANY KIND, either express or implied. See the License for the specific
# language governing permissions and limitations under the License.
import sys

import six
from tests import unittest
from tests.unit import BaseAWSCommandParamsTest


class TestCreateTags(BaseAWSCommandParamsTest):

prefix = 'ec2 create-tags'

def test_create_tag_normal(self):
cmdline = self.prefix
cmdline += ' --resources i-12345678 --tags Key=Name,Value=bar'
result = {'ResourceId.1': 'i-12345678', 'Tag.1.Key': 'Name',
'Tag.1.Value': 'bar'}
self.assert_params_for_cmd(cmdline, result)

@unittest.skipIf(
six.PY3, 'Unicode cmd line test only is relevant to python2.')
def test_create_tag_unicode(self):
cmdline = self.prefix
cmdline += u' --resources i-12345678 --tags Key=Name,Value=\u6211'
cmdline = cmdline.encode(getattr(sys.stdin, 'encoding', 'utf-8'))
result = {'ResourceId.1': 'i-12345678', 'Tag.1.Key': 'Name',
'Tag.1.Value': u'\u6211'}
self.assert_params_for_cmd(cmdline, result)

0 comments on commit 81e3e95

Please sign in to comment.