Skip to content

Commit 36cc268

Browse files
committed
set suite names, metadata correctly
1 parent eb171dc commit 36cc268

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

src/robot/parsing/newparser/nodes.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,17 @@ def __init__(self, name, args):
104104
self.args = args
105105

106106

107+
class MetadataSetting(Node):
108+
_fields = ('name', 'value')
109+
110+
def __init__(self, name, value):
111+
self.name = name
112+
self.value = value
113+
114+
107115
class DocumentationSetting(Setting): pass
108116
class SuiteSetupSetting(Setting): pass
109117
class SuiteTeardownSetting(Setting): pass
110-
class MetadataSetting(Setting): pass
111118
class TestSetupSetting(Setting): pass
112119
class TestTeardownSetting(Setting): pass
113120
class TestTemplateSetting(Setting): pass

src/robot/parsing/newparser/parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def p_suite_teardown(self, p):
7777

7878
def p_metadata(self, p):
7979
'''metadata_setting : METADATA arguments'''
80-
p[0] = MetadataSetting(p[2])
80+
p[0] = MetadataSetting(p[2][0], p[2][1:])
8181

8282
def p_test_setup(self, p):
8383
'''test_setup_setting : TEST_SETUP arguments'''

src/robot/running/newbuilder.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ def __init__(self, suite, test_defaults):
2424
def visit_DocumentationSetting(self, node):
2525
self.suite.doc = "\n".join(node.value)
2626

27+
def visit_MetadataSetting(self, node):
28+
self.suite.metadata[node.name] = ' '.join(node.value)
29+
2730
def visit_SuiteSetupSetting(self, node):
2831
self.suite.keywords.append(create_fixture(node.value, 'setup'))
2932

@@ -275,18 +278,19 @@ def _parse_and_build(self, path):
275278
if os.path.isdir(path):
276279
init_file, children = self._get_children(path)
277280
if init_file:
278-
suite = self._build_suite(self._parse(init_file))
281+
suite = self._build_suite(init_file)
279282
else:
280-
suite = TestSuite()
283+
suite = TestSuite(name=format_name(path), source=path)
281284
for c in children:
282285
suite.suites.append(self._parse_and_build(c))
283286
else:
284-
suite = self._build_suite(self._parse(path))
287+
suite = self._build_suite(path)
285288
suite.remove_empty_suites()
286289
return suite
287290

288-
def _build_suite(self, data, parent_defaults=None):
289-
suite = TestSuite()
291+
def _build_suite(self, source, parent_defaults=None):
292+
data = self._parse(source)
293+
suite = TestSuite(name=format_name(source), source=source)
290294
defaults = TestDefaults()
291295
SettingsBuilder(suite, defaults).visit(data)
292296
SuiteBuilder(suite, defaults).visit(data)
@@ -381,3 +385,16 @@ def build(self, path):
381385
data = Builder().read(abspath(path))
382386
ResourceBuilder(resource).visit(data)
383387
return resource
388+
389+
390+
def format_name(source):
391+
def strip_possible_prefix_from_name(name):
392+
return name.split('__', 1)[-1]
393+
394+
def format_name(name):
395+
name = strip_possible_prefix_from_name(name)
396+
name = name.replace('_', ' ').strip()
397+
return name.title() if name.islower() else name
398+
399+
basename = os.path.splitext(os.path.basename(source))[0]
400+
return format_name(basename)

0 commit comments

Comments
 (0)