mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-09-10 18:22:20 +02:00
fix(cookbook): activate local Windows venv in bash runner (#5734)
This commit is contained in:
@@ -16,6 +16,7 @@ from routes.cookbook_helpers import (
|
||||
_llama_cpp_rebuild_cmd,
|
||||
_append_vllm_linux_preflight_lines,
|
||||
_local_tooling_path_export,
|
||||
_local_windows_bash_env_prefix,
|
||||
_pip_install_attempt,
|
||||
_pip_install_fallback_chain,
|
||||
_ollama_bind_from_cmd,
|
||||
@@ -107,6 +108,70 @@ def test_safe_env_prefix_accepts_powershell_activation_path():
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("prefix", "expected"),
|
||||
[
|
||||
("& 'C:\\Users\\me\\venv\\Scripts\\Activate.ps1'", "source /c/Users/me/venv/Scripts/activate"),
|
||||
(r"& C:\Users\me\venv\Scripts\Activate.ps1", "source /c/Users/me/venv/Scripts/activate"),
|
||||
(
|
||||
r"& C:\Users\me\My Envs\venv\Scripts\Activate.ps1",
|
||||
"source '/c/Users/me/My Envs/venv/Scripts/activate'",
|
||||
),
|
||||
(
|
||||
"& 'C:\\Users\\me\\My Envs\\venv\\Scripts\\Activate.ps1'",
|
||||
"source '/c/Users/me/My Envs/venv/Scripts/activate'",
|
||||
),
|
||||
(r"& D:/Envs/venv/Scripts/Activate.ps1", "source /d/Envs/venv/Scripts/activate"),
|
||||
],
|
||||
)
|
||||
def test_local_windows_bash_env_prefix_converts_powershell_venv_activation(prefix, expected):
|
||||
converted = _local_windows_bash_env_prefix(prefix)
|
||||
|
||||
assert converted == expected
|
||||
assert _safe_env_prefix(converted).startswith('[ -f "')
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"prefix",
|
||||
[
|
||||
None,
|
||||
"",
|
||||
"source /home/me/venv/bin/activate",
|
||||
"conda activate qwen35",
|
||||
'eval "$(conda shell.bash hook)" && conda activate qwen35',
|
||||
r"& \\server\share\venv\Scripts\Activate.ps1",
|
||||
],
|
||||
)
|
||||
def test_local_windows_bash_env_prefix_leaves_other_prefixes_unchanged(prefix):
|
||||
assert _local_windows_bash_env_prefix(prefix) == prefix
|
||||
|
||||
|
||||
def test_local_windows_bash_env_prefix_handles_long_whitespace_input():
|
||||
prefix = "\t" * 100_000
|
||||
|
||||
assert _local_windows_bash_env_prefix(prefix) == prefix
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"relative_path",
|
||||
["static/js/cookbookRunning.js", "static/js/cookbookDownload.js"],
|
||||
)
|
||||
def test_primary_windows_venv_emitters_quote_activation_path(relative_path):
|
||||
source = (Path(__file__).resolve().parents[1] / relative_path).read_text(encoding="utf-8")
|
||||
|
||||
assert "'& ' + _psQuote(" in source
|
||||
assert "_psQuote = shared._psQuote;" in source
|
||||
|
||||
|
||||
def test_windows_venv_conversion_stays_scoped_to_local_git_bash_runners():
|
||||
source = (Path(__file__).resolve().parents[1] / "routes/cookbook_routes.py").read_text(encoding="utf-8")
|
||||
guarded_conversion = (
|
||||
"_local_windows_bash_env_prefix(req.env_prefix) if local_windows else req.env_prefix"
|
||||
)
|
||||
|
||||
assert source.count(guarded_conversion) == 2
|
||||
|
||||
|
||||
def test_validate_local_dir_accepts_external_drive_paths_with_spaces():
|
||||
path = "/Volumes/T7 2TB/AI Models/llamacpp"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user