New issue 545: _pytest/mark.py pytest_collection_modifyitems orders results 
differently across threads
https://bitbucket.org/hpk42/pytest/issue/545/_pytest-markpy

Patrick Putnam:

I had an issue running marked tests in multi-threaded fashion where each thread 
would seem to get the tests in a different order once the marks had been 
applied. This would cause report_collection_diff in xdist/dsession.py to report 
errors like:

INTERNALERROR> AssertionError: Different tests were collected between gw0 and 
gw2. The difference is:
INTERNALERROR> --- gw0
INTERNALERROR>
INTERNALERROR> +++ gw2
INTERNALERROR>
INTERNALERROR> @@ -1,3 +1,3 @@
INTERNALERROR>
INTERNALERROR> 
+scripts/Departments.py::TestMain::()::test_select_department_palette
INTERNALERROR>  scripts/Header.py::TestMain::()::test_login
INTERNALERROR>  scripts/Header.py::TestMain::()::test_basic_search
INTERNALERROR> 
-scripts/Departments.py::TestMain::()::test_select_department_palette

(Same test, just different location).

I managed to fix this with a one-line change in mark.py:

 64     remaining = []
 65     deselected = []
>66     for colitem in sorted(items): # sorted items preserves ordering across 
>threads
 67         if keywordexpr and not matchkeyword(colitem, keywordexpr):
 68             deselected.append(colitem)

I'm not sure if I'm doing something wrong somewhere, or if I've found an actual 
bug, but I've been running with this fix for a week now and everything seems to 
be working well. Should I submit this as a pull request, or am I doing 
something incorrect somewhere, and if so how what's the best way to figure that 
out?


_______________________________________________
pytest-commit mailing list
pytest-commit@python.org
https://mail.python.org/mailman/listinfo/pytest-commit

Reply via email to