66 lines
2.4 KiB
Python
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"
|