"""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( "" "com.acmeacme-sdk1.4.2" "", 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"