Skip to content

Commit 23a9bd9

Browse files
reverted change to not break the intended behavior and added test case for marking classes
1 parent fbec9ec commit 23a9bd9

File tree

3 files changed

+46
-11
lines changed

3 files changed

+46
-11
lines changed

pytest_ordering/__init__.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,22 @@ def _order_tests(tests):
8585
remaining_tests.append(test)
8686

8787
from_beginning, from_end = split(ordered_tests)
88+
remaining_iter = iter(remaining_tests)
8889

89-
# run test from beginning
90-
for test_order in sorted(from_beginning):
91-
for test in from_beginning[test_order]:
92-
yield test
90+
for i in range(max(from_beginning or [-1]) + 1):
91+
if i in from_beginning:
92+
for test in from_beginning[i]:
93+
yield test
94+
else:
95+
yield next(remaining_iter)
9396

94-
# run test from end
95-
for test_order in sorted(from_end):
96-
for test in from_end[test_order]:
97-
yield test
97+
# TODO TODO TODO
98+
for i in range(min(from_end or [0]), 0):
99+
if i in from_end:
100+
for test in from_end[i]:
101+
yield test
102+
else:
103+
yield next(remaining_iter)
98104

99-
for test in remaining_tests:
105+
for test in remaining_iter:
100106
yield test

tests/marked_classes.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import pytest
2+
3+
ordering = 'fdeabc'
4+
5+
6+
@pytest.mark.order3
7+
class TestA:
8+
def test_a():
9+
pass
10+
11+
def test_b():
12+
pass
13+
14+
def test_c():
15+
pass
16+
17+
18+
@pytest.mark.order2
19+
class TestB:
20+
def test_d():
21+
pass
22+
23+
def test_e():
24+
pass
25+
26+
27+
@pytest.mark.order1
28+
def test_f():
29+
pass

tests/test_ordering.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
import pytest
44

55
import pytest_ordering
6-
from . import numbers, words, words_backwards, grouping
6+
from . import numbers, words, words_backwards, grouping, marked_classes
77

88

99
@pytest.mark.parametrize('module', [
10-
numbers, words, words_backwards, grouping,
10+
numbers, words, words_backwards, grouping, marked_classes
1111
])
1212
def test_ordered_tests(module, testdir):
1313
items = testdir.getitems(module)

0 commit comments

Comments
 (0)