X Tutup
Skip to content

Commit 052d3fe

Browse files
committed
utils.type_name: Support capitalization
This may help with PR robotframework#3350.
1 parent 835d0ef commit 052d3fe

File tree

3 files changed

+42
-21
lines changed

3 files changed

+42
-21
lines changed

src/robot/utils/robottypes2.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,10 @@ def is_dict_like(item):
7070
return isinstance(item, (Mapping, UserDict))
7171

7272

73-
def type_name(item):
73+
def type_name(item, capitalize=False):
7474
cls = item.__class__ if hasattr(item, '__class__') else type(item)
7575
named_types = {str: 'string', unicode: 'string', bool: 'boolean',
7676
int: 'integer', long: 'integer', NoneType: 'None',
7777
dict: 'dictionary', type: 'class', ClassType: 'class'}
78-
return named_types.get(cls, cls.__name__)
78+
name = named_types.get(cls, cls.__name__)
79+
return name.capitalize() if capitalize and name.islower() else name

src/robot/utils/robottypes3.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,12 @@ def is_dict_like(item):
6767
return isinstance(item, Mapping)
6868

6969

70-
def type_name(item):
70+
def type_name(item, capitalize=False):
7171
if isinstance(item, IOBase):
72-
return 'file'
73-
cls = item.__class__ if hasattr(item, '__class__') else type(item)
74-
named_types = {str: 'string', bool: 'boolean', int: 'integer',
75-
type(None): 'None', dict: 'dictionary', type: 'class'}
76-
return named_types.get(cls, cls.__name__)
72+
name = 'file'
73+
else:
74+
cls = item.__class__ if hasattr(item, '__class__') else type(item)
75+
named_types = {str: 'string', bool: 'boolean', int: 'integer',
76+
type(None): 'None', dict: 'dictionary', type: 'class'}
77+
name = named_types.get(cls, cls.__name__)
78+
return name.capitalize() if capitalize and name.islower() else name

utest/utils/test_robottypes.py

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
if PY3:
2525
long = int
26+
xrange = range
2627

2728

2829
class MyMapping(Mapping):
@@ -89,10 +90,6 @@ def __iter__(self):
8990
assert_equal(is_list_like(O()), False)
9091

9192
def test_other_iterables_are_list_like(self):
92-
try:
93-
xrange
94-
except NameError:
95-
xrange = range
9693
for thing in [[], (), set(), xrange(1), generator(), array('i'), UserList()]:
9794
assert_equal(is_list_like(thing), True, thing)
9895

@@ -129,12 +126,19 @@ def test_java_maps(self):
129126
class TestTypeName(unittest.TestCase):
130127

131128
def test_base_types(self):
132-
for item, exp in [('bytes', 'string'), (u'unicode', 'string'),
133-
(b'real bytes', 'string' if bytes is str else 'bytes'),
129+
for item, exp in [('string', 'string'),
130+
(u'unicode', 'string'),
131+
(b'bytes', 'bytes' if PY3 else 'string'),
134132
(bytearray(), 'bytearray'),
135-
(1, 'integer'), (long(1), 'integer'), (1.0, 'float'),
136-
(True, 'boolean'), (None, 'None'), (set(), 'set'),
137-
([], 'list'), ((), 'tuple'), ({}, 'dictionary')]:
133+
(1, 'integer'),
134+
(long(1), 'integer'),
135+
(1.0, 'float'),
136+
(True, 'boolean'),
137+
(None, 'None'),
138+
(set(), 'set'),
139+
([], 'list'),
140+
((), 'tuple'),
141+
({}, 'dictionary')]:
138142
assert_equal(type_name(item), exp)
139143

140144
def test_file(self):
@@ -144,17 +148,31 @@ def test_file(self):
144148
def test_custom_objects(self):
145149
class NewStyle(object): pass
146150
class OldStyle: pass
147-
for item, exp in [(NewStyle(), 'NewStyle'), (OldStyle(), 'OldStyle'),
148-
(NewStyle, 'class'), (OldStyle, 'class')]:
151+
class lower: pass
152+
for item, exp in [(NewStyle(), 'NewStyle'),
153+
(OldStyle(), 'OldStyle'),
154+
(lower(), 'lower'),
155+
(NewStyle, 'class'),
156+
(OldStyle, 'class')]:
149157
assert_equal(type_name(item), exp)
150158

151159
if JYTHON:
152160

153161
def test_java_object(self):
154-
for item, exp in [(String(), 'String'), (String, 'Class'),
155-
(java.lang, 'javapackage'), (java, 'javapackage')]:
162+
for item, exp in [(String(), 'String'),
163+
(String, 'Class'),
164+
(java.lang, 'javapackage'),
165+
(java, 'javapackage')]:
156166
assert_equal(type_name(item), exp)
157167

168+
def test_capitalize(self):
169+
class lowerclass: pass
170+
class CamelClass: pass
171+
assert_equal(type_name('string', capitalize=True), 'String')
172+
assert_equal(type_name(None, capitalize=True), 'None')
173+
assert_equal(type_name(lowerclass(), capitalize=True), 'Lowerclass')
174+
assert_equal(type_name(CamelClass(), capitalize=True), 'CamelClass')
175+
158176

159177
class TestIsTruthyFalsy(unittest.TestCase):
160178

0 commit comments

Comments
 (0)
X Tutup