Files
2026-08-29 13:17:59 +02:00

66 lines
2.4 KiB
Python

"""Adaptery ekosystemów - wiedza deterministyczna, więc testowana punktowo."""
import json
import pytest
from agentic_codemod.adapters import (
EcosystemNotDetected,
MavenAdapter,
NodeNpmAdapter,
PythonPipAdapter,
detect_adapter,
)
def test_wykrywanie_ekosystemu_python(acme_app):
assert isinstance(detect_adapter(acme_app), PythonPipAdapter)
def test_brak_rozpoznanego_ekosystemu_to_twardy_blad(tmp_path):
with pytest.raises(EcosystemNotDetected):
detect_adapter(tmp_path)
def test_odczyt_i_podniesienie_wersji(acme_app):
adapter = PythonPipAdapter(acme_app)
assert adapter.read_declared_version("acme-sdk") == "==1.4.2"
changed = adapter.set_declared_version("acme-sdk", "2.1.0")
assert [p.name for p in changed] == ["pyproject.toml"]
assert adapter.read_declared_version("acme-sdk") == "==2.1.0"
def test_bump_nie_dotyka_prozy_zawierajacej_nazwe_pakietu(acme_app):
"""Regresja: wzorzec bez wymaganego operatora podmieniał też opis projektu."""
adapter = PythonPipAdapter(acme_app)
adapter.set_declared_version("acme-sdk", "2.1.0")
content = (acme_app / "pyproject.toml").read_text(encoding="utf-8")
assert "acme-sdk 1.x - fixture" in content
def test_bump_zachowuje_operator_porownania(tmp_path):
(tmp_path / "requirements.txt").write_text("acme-sdk >= 1.4\nhttpx==0.27.0\n", encoding="utf-8")
adapter = PythonPipAdapter(tmp_path)
adapter.set_declared_version("acme-sdk", "2.1.0")
assert (tmp_path / "requirements.txt").read_text(encoding="utf-8").startswith("acme-sdk >= 2.1.0")
def test_adapter_maven_podnosi_wersje_zaleznosci(tmp_path):
(tmp_path / "pom.xml").write_text(
"<project><dependencies><dependency>"
"<groupId>com.acme</groupId><artifactId>acme-sdk</artifactId><version>1.4.2</version>"
"</dependency></dependencies></project>",
encoding="utf-8",
)
adapter = MavenAdapter(tmp_path)
assert adapter.read_declared_version("com.acme:acme-sdk") == "1.4.2"
adapter.set_declared_version("com.acme:acme-sdk", "2.1.0")
assert adapter.read_declared_version("com.acme:acme-sdk") == "2.1.0"
def test_adapter_npm_zachowuje_prefiks_zakresu(tmp_path):
(tmp_path / "package.json").write_text(json.dumps({"dependencies": {"acme-sdk": "^1.4.2"}}), encoding="utf-8")
adapter = NodeNpmAdapter(tmp_path)
adapter.set_declared_version("acme-sdk", "2.1.0")
assert adapter.read_declared_version("acme-sdk") == "^2.1.0"