diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index 71063869ae..968762f4ca 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.3.7" + ".": "0.3.6" } diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 777e6e9a35..54006ea3f3 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,24 +1,5 @@ # Changelog -## [0.3.7](https://github.com/Aureliolo/synthorg/compare/v0.3.6...v0.3.7) (2026-03-19) - - -### Features - -* **engine:** implement Hybrid Plan + ReAct execution loop ([#582](https://github.com/Aureliolo/synthorg/issues/582)) ([008147c](https://github.com/Aureliolo/synthorg/commit/008147c698d3443c95618be4d783a5d3d3813005)) -* implement first-run setup wizard ([#584](https://github.com/Aureliolo/synthorg/issues/584)) ([dfed931](https://github.com/Aureliolo/synthorg/commit/dfed93123bfd24fabc50bc52d46211343835efea)) - - -### Bug Fixes - -* **api:** address ZAP DAST scan findings ([#579](https://github.com/Aureliolo/synthorg/issues/579)) ([ce9a3e0](https://github.com/Aureliolo/synthorg/commit/ce9a3e077ab6af5743a8150333d225d0de9ab0d3)) -* **cli:** regenerate compose and re-exec binary on update ([#576](https://github.com/Aureliolo/synthorg/issues/576)) ([3f226eb](https://github.com/Aureliolo/synthorg/commit/3f226eb79b46de59c1e94319a046765353392de4)) - - -### CI/CD - -* add SBOM generation to Docker and CLI releases ([#580](https://github.com/Aureliolo/synthorg/issues/580)) ([db459cf](https://github.com/Aureliolo/synthorg/commit/db459cf0892c46f9a887126edd70aeaafe6b70d8)) - ## [0.3.6](https://github.com/Aureliolo/synthorg/compare/v0.3.5...v0.3.6) (2026-03-19) diff --git a/pyproject.toml b/pyproject.toml index 43433bf8aa..f7c2e2e11b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -217,7 +217,7 @@ venv = ".venv" # --------------------------------------------------------------------------- [tool.commitizen] name = "cz_conventional_commits" -version = "0.3.7" # x-release-please-version +version = "0.3.6" # x-release-please-version tag_format = "v$version" # --------------------------------------------------------------------------- diff --git a/src/synthorg/__init__.py b/src/synthorg/__init__.py index 38319ed67a..01a3233687 100644 --- a/src/synthorg/__init__.py +++ b/src/synthorg/__init__.py @@ -1,3 +1,3 @@ """SynthOrg - Framework for building synthetic organizations.""" -__version__ = "0.3.7" # x-release-please-version +__version__ = "0.3.6" # x-release-please-version diff --git a/tests/unit/security/rules/test_utils.py b/tests/unit/security/rules/test_utils.py index 81f8ca3050..a5add69dfb 100644 --- a/tests/unit/security/rules/test_utils.py +++ b/tests/unit/security/rules/test_utils.py @@ -1,5 +1,7 @@ """Tests for walk_string_values utility.""" +from unittest.mock import MagicMock, patch + import pytest from synthorg.security.rules._utils import walk_string_values @@ -76,11 +78,9 @@ def test_nested_lists(self) -> None: class TestWalkStringValuesDepthLimit: """Depth limit prevents infinite recursion.""" - def test_stops_at_max_depth( - self, - capsys: pytest.CaptureFixture[str], - ) -> None: - """Build a structure deeper than 20 levels — truncated with warning.""" + @patch("synthorg.security.rules._utils.logger") + def test_stops_at_max_depth(self, mock_logger: MagicMock) -> None: + """Build a structure deeper than 20 levels -- truncated with warning.""" data: dict[str, object] = {"val": "leaf"} for _ in range(25): data = {"nested": data} @@ -89,8 +89,10 @@ def test_stops_at_max_depth( # "leaf" is beyond depth limit and should be skipped. assert result == [] - captured = capsys.readouterr() - assert "depth" in captured.out.lower() + # Logger.warning should have been called with the depth event. + mock_logger.warning.assert_called() + call_kwargs = mock_logger.warning.call_args + assert call_kwargs.kwargs.get("depth") is not None def test_list_recursion_respects_depth_limit(self) -> None: """Deeply nested lists stop at max depth without RecursionError."""