* Make the unsloth_cli studio tests pass in isolation Six tests in test_studio_run_parallel_flag.py and one in test_studio_secure_flag.py only passed in a full-directory run. All of them reach the in-venv branch of run(), which does `from state.tool_policy import set_tool_policy`. That module lives under studio/backend, so it only imports once something has put that directory on sys.path, and nothing in either file does. They were relying on test_start.py, which calls ensure_studio_backend_path() and leaks the sys.path entry, or on test_studio_cloudflare_flag.py, which stubs the module. Add a stub_tool_policy_state fixture in a new conftest and use it in the seven, so the state comes from the test rather than from whatever ran first. Every file in unsloth_cli/tests now passes on its own, and the suite is stable across four pytest-randomly seeds. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
26 lines
977 B
Python
26 lines
977 B
Python
# SPDX-License-Identifier: AGPL-3.0-only
|
|
# Copyright 2026-present the Unsloth AI Inc. team. All rights reserved. See /studio/LICENSE.AGPL-3.0
|
|
|
|
"""Shared fixtures for the unsloth_cli tests."""
|
|
|
|
import sys
|
|
import types
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture
|
|
def stub_tool_policy_state(monkeypatch):
|
|
"""Stub the backend's `state.tool_policy`, which run() imports in-venv.
|
|
|
|
It lives under studio/backend, so it only imports once something has put
|
|
that directory on sys.path. Tests that reach the in-venv branch of run()
|
|
used to get that for free from whichever file ran earlier and did it as a
|
|
side effect, which made them pass only in a full-directory run.
|
|
"""
|
|
state_mod = types.ModuleType("state")
|
|
tp_mod = types.ModuleType("state.tool_policy")
|
|
tp_mod.set_tool_policy = lambda *a, **k: None
|
|
state_mod.tool_policy = tp_mod
|
|
monkeypatch.setitem(sys.modules, "state", state_mod)
|
|
monkeypatch.setitem(sys.modules, "state.tool_policy", tp_mod)
|