|
|
|
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
|
|
|
|
|
|
|
import shutil
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from ultralytics.utils import ROOT
|
|
|
|
|
|
|
|
TMP = (ROOT / '../tests/tmp').resolve() # temp directory for test files
|
|
|
|
|
|
|
|
|
|
|
|
def pytest_addoption(parser):
|
|
|
|
parser.addoption('--runslow', action='store_true', default=False, help='run slow tests')
|
|
|
|
|
|
|
|
|
|
|
|
def pytest_configure(config):
|
|
|
|
config.addinivalue_line('markers', 'slow: mark test as slow to run')
|
|
|
|
|
|
|
|
|
|
|
|
def pytest_collection_modifyitems(config, items):
|
|
|
|
if config.getoption('--runslow'):
|
|
|
|
# --runslow given in cli: do not skip slow tests
|
|
|
|
return
|
|
|
|
skip_slow = pytest.mark.skip(reason='need --runslow option to run')
|
|
|
|
for item in items:
|
|
|
|
if 'slow' in item.keywords:
|
|
|
|
item.add_marker(skip_slow)
|
|
|
|
|
|
|
|
|
|
|
|
def pytest_sessionstart(session):
|
|
|
|
"""
|
|
|
|
Called after the 'Session' object has been created and before performing test collection.
|
|
|
|
"""
|
|
|
|
shutil.rmtree(TMP, ignore_errors=True) # delete any existing tests/tmp directory
|
|
|
|
TMP.mkdir(parents=True, exist_ok=True) # create a new empty directory
|
|
|
|
|
|
|
|
|
|
|
|
def pytest_terminal_summary(terminalreporter, exitstatus, config):
|
|
|
|
# Remove files
|
|
|
|
for file in ['bus.jpg', 'decelera_landscape_min.mov']:
|
|
|
|
Path(file).unlink(missing_ok=True)
|
|
|
|
|
|
|
|
# Remove directories
|
|
|
|
for directory in ['.pytest_cache/', TMP]:
|
|
|
|
shutil.rmtree(directory, ignore_errors=True)
|