Skip to content

Commit bae5e6d

Browse files
committed
Fix removing empty suites from multisource suite
1 parent 880747c commit bae5e6d

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

src/robot/model/filter.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@
2222

2323
class EmptySuiteRemover(SuiteVisitor):
2424

25+
def __init__(self, preserve_direct_children=False):
26+
self.preserve_direct_children = preserve_direct_children
27+
2528
def end_suite(self, suite):
26-
suite.suites = [s for s in suite.suites if s.test_count]
29+
if suite.parent or not self.preserve_direct_children:
30+
suite.suites = [s for s in suite.suites if s.test_count]
2731

2832
def visit_test(self, test):
2933
pass
@@ -37,6 +41,7 @@ class Filter(EmptySuiteRemover):
3741

3842
def __init__(self, include_suites=None, include_tests=None,
3943
include_tags=None, exclude_tags=None):
44+
EmptySuiteRemover.__init__(self)
4045
self.include_suites = include_suites
4146
self.include_tests = include_tests
4247
self.include_tags = include_tags

src/robot/model/testsuite.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,9 @@ def configure(self, **options):
159159
if options:
160160
self.visit(SuiteConfigurer(**options))
161161

162-
def remove_empty_suites(self):
162+
def remove_empty_suites(self, preserve_direct_children=False):
163163
"""Removes all child suites not containing any tests, recursively."""
164-
self.visit(EmptySuiteRemover())
164+
self.visit(EmptySuiteRemover(preserve_direct_children))
165165

166166
def visit(self, visitor):
167167
""":mod:`Visitor interface <robot.model.visitor>` entry-point."""

src/robot/running/builder/builders.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def build(self, *paths):
4747
parser.parse(structure)
4848
suite = parser.suite
4949
suite.rpa = parser.rpa
50-
suite.remove_empty_suites()
50+
suite.remove_empty_suites(preserve_direct_children=len(paths) > 1)
5151
return suite
5252

5353

0 commit comments

Comments
 (0)