nose + guard → pytest + watchdog