Co-authored-by: Clément Drouin <clement.drouin@mistral.ai> Co-authored-by: Corentin André <corentin.andre@mistral.ai> Co-authored-by: Guillaume LE GOFF <guillaume.lgf@gmail.com> Co-authored-by: Kim-Adeline Miguel <51720070+kimadeline@users.noreply.github.com> Co-authored-by: Maxime Dolores <maxime.dolores@ext.mistral.ai> Co-authored-by: Nelson PROIA <144663685+Nelson-PROIA@users.noreply.github.com> Co-authored-by: Peter Evers <pevers90@gmail.com> Co-authored-by: Pierre Rossinès <pierre.rossines@mistral.ai> Co-authored-by: Quentin <quentin.torroba@mistral.ai> Co-authored-by: Vincent G <10739306+VinceOPS@users.noreply.github.com> Co-authored-by: MichisGitIsKing <MichisGitIsKing@users.noreply.github.com> Co-authored-by: Mistral Vibe <vibe@mistral.ai>
82 lines
2.5 KiB
Python
82 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
import subprocess
|
|
import tomllib
|
|
|
|
from scripts import prepare_release
|
|
|
|
|
|
def test_pin_dependencies_preserves_toml_format_and_refreshes_lock(
|
|
monkeypatch, tmp_path
|
|
):
|
|
pyproject_path = tmp_path / "pyproject.toml"
|
|
pyproject_path.write_text(
|
|
"""[project]
|
|
name = "mistral-vibe"
|
|
version = "2.9.6"
|
|
license = { text = "Apache-2.0" }
|
|
authors = [{ name = "Mistral AI" }]
|
|
dependencies = [
|
|
"httpx[http2]>=0.28.1",
|
|
]
|
|
|
|
[dependency-groups]
|
|
build = ["pyinstaller>=6.17.0"]
|
|
|
|
[tool.pytest.ini_options]
|
|
filterwarnings = [
|
|
# Keep this comment when pinning dependencies.
|
|
"ignore:example",
|
|
]
|
|
""",
|
|
encoding="utf-8",
|
|
)
|
|
(tmp_path / "uv.lock").write_text("", encoding="utf-8")
|
|
monkeypatch.chdir(tmp_path)
|
|
|
|
def fake_get_pinned_dependencies(group=None):
|
|
if group == "build":
|
|
return ["pyinstaller==6.17.0", "truststore==0.10.4"]
|
|
return ["anyio==4.12.0", 'httpx[http2]==0.28.1 ; python_version >= "3.12"']
|
|
|
|
uv_commands = []
|
|
|
|
def fake_subprocess_run(args, **kwargs):
|
|
uv_commands.append(args)
|
|
return subprocess.CompletedProcess(args=args, returncode=0, stdout="")
|
|
|
|
git_commands = []
|
|
|
|
def fake_run_git_command(*args, **kwargs):
|
|
git_commands.append(args)
|
|
return subprocess.CompletedProcess(args=args, returncode=0, stdout="")
|
|
|
|
monkeypatch.setattr(
|
|
prepare_release, "get_pinned_dependencies", fake_get_pinned_dependencies
|
|
)
|
|
monkeypatch.setattr(prepare_release.subprocess, "run", fake_subprocess_run)
|
|
monkeypatch.setattr(prepare_release, "run_git_command", fake_run_git_command)
|
|
|
|
prepare_release.pin_dependencies("2.9.6")
|
|
|
|
updated_pyproject = pyproject_path.read_text(encoding="utf-8")
|
|
updated_data = tomllib.loads(updated_pyproject)
|
|
assert 'license = { text = "Apache-2.0" }' in updated_pyproject
|
|
assert 'authors = [{ name = "Mistral AI" }]' in updated_pyproject
|
|
assert "# Keep this comment when pinning dependencies." in updated_pyproject
|
|
assert updated_data["project"]["dependencies"] == [
|
|
"anyio==4.12.0",
|
|
'httpx[http2]==0.28.1 ; python_version >= "3.12"',
|
|
]
|
|
assert updated_data["dependency-groups"]["build"] == [
|
|
"pyinstaller==6.17.0",
|
|
"truststore==0.10.4",
|
|
]
|
|
assert uv_commands == [["uv", "lock"]]
|
|
assert ("add", "pyproject.toml", "uv.lock") in git_commands
|
|
assert (
|
|
"commit",
|
|
"--allow-empty",
|
|
"-m",
|
|
"chore: pin dependencies for v2.9.6",
|
|
) in git_commands
|