#!/usr/bin/env python3
"""
Backcompat regression tests for the legacy 'patch' policy.

Split from ``test_compute_next_version`` (round 2 codex review) so the
rollover-policy file stays under the project's 10-functions-per-file
cap. Guards that the historical unbounded 'patch' bump (1.0.9 -> 1.0.10)
is preserved verbatim -- existing 0.0.27 consumers that pin
``marketing-version-auto-bump: 'patch'`` MUST keep their current
behavior even after rollover ships as the new default. Any future
refactor that silently grafts rollover semantics onto the 'patch'
branch should fail HERE first.
"""

from __future__ import annotations

import sys
import unittest
from pathlib import Path

sys.path.insert(0, str(Path(__file__).resolve().parent))

import version_utils  # noqa: E402


class ComputeNextVersionPatchBackcompatTests(unittest.TestCase):
    """Confirm the historical 'patch' policy is unchanged."""

    def test_compute_next_version_patch_no_rollover_at_nine(self):
        # 'patch' must NOT roll over: 1.0.9 -> 1.0.10 (legacy behavior).
        result = version_utils.compute_next_version("1.0.9", "1.0.9", "patch")
        self.assertEqual(result, "1.0.10")

    def test_compute_next_version_patch_no_rollover_at_minor_nine(self):
        # 'patch' stays on its train even when minor=9: 1.9.9 -> 1.9.10.
        result = version_utils.compute_next_version("1.9.9", "1.9.9", "patch")
        self.assertEqual(result, "1.9.10")


if __name__ == "__main__":
    unittest.main()
