ci: raise exception when pytest collect failed
@@ -87,8 +87,6 @@ def is_in_directory(file_path: str, folder: str) -> bool:
def get_pytest_dirs(folder: str) -> List[str]:
- from io import StringIO
-
import pytest
from _pytest.nodes import Item
@@ -102,11 +100,11 @@ def get_pytest_dirs(folder: str) -> List[str]:
collector = CollectPlugin()
- sys_stdout = sys.stdout
- sys.stdout = StringIO() # swallow the output
- pytest.main(['--collect-only', folder], plugins=[collector])
- sys.stdout = sys_stdout # restore sys.stdout
+ res = pytest.main(['--collect-only', '-q', folder], plugins=[collector])
+ if res.value != 0:
+ raise RuntimeError('pytest collection failed')
+ sys.stdout.flush() # print instantly
test_file_paths = set(node.fspath for node in collector.nodes)
return [os.path.dirname(file) for file in test_file_paths]
