Skip to content

Commit 43ffd1c

Browse files
author
Ben Greene
committed
Update the ordering function to sort based on the order considering non-contiguous blocks
1 parent 94e63ff commit 43ffd1c

File tree

1 file changed

+7
-15
lines changed

1 file changed

+7
-15
lines changed

pytest_ordering/__init__.py

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,15 @@ def pytest_collection_modifyitems(session, config, items):
5656
grouped_items.setdefault(order, []).append(item)
5757

5858
if grouped_items:
59-
unordered_items = grouped_items.pop(None, None)
60-
6159
sorted_items = []
62-
prev_key = 0
63-
64-
for key, ordered_items in grouped_items.items():
65-
66-
if unordered_items and prev_key >= 0 and key < 0:
67-
68-
sorted_items.extend(unordered_items)
69-
unordered_items = None
7060

71-
prev_key = key
61+
unordered_items = [grouped_items.pop(None, [])]
7262

73-
sorted_items.extend(ordered_items)
63+
start_list = sorted((i for i in grouped_items.items() if i[0] >= 0), key=lambda x: x[0])
64+
end_list = sorted((i for i in grouped_items.items() if i[0] < 0), key=lambda x: x[0])
7465

75-
if unordered_items:
76-
sorted_items.extend(unordered_items)
66+
sorted_items.extend([i[1] for i in start_list])
67+
sorted_items.extend(unordered_items)
68+
sorted_items.extend([i[1] for i in end_list])
7769

78-
items[:] = sorted_items
70+
items[:] = [item for sublist in sorted_items for item in sublist]

0 commit comments

Comments
 (0)