Files
cleveragents-core/robot/merge_strategy.robot
HAL9000 7279ce64dd feat(plans): implement configurable merge strategy (prefer-parent, prefer-subplan, manual)
Implemented a configurable merge strategy framework for three-way merges.

- New module: src/cleveragents/domain/models/core/merge_strategy.py
  - MergeStrategy StrEnum with options: prefer-parent, prefer-subplan, manual
  - Helper methods: is_auto_resolve(), is_manual(), from_string()

- New module: src/cleveragents/domain/models/core/merge_strategy_service.py
  - MergeConflict class with __eq__ for value equality comparison
  - MergeStrategyService to apply strategies and resolve conflicts
  - Proper type annotations (dict, Any) with no unused imports

- BDD test suite: features/plan_merge_strategy.feature (8 scenarios)
- Step definitions: features/steps/plan_merge_strategy_steps.py

- Robot Framework integration tests: robot/merge_strategy.robot
- Helper script: robot/helper_merge_strategy.py

- Updated src/cleveragents/domain/models/core/__init__.py exports

ISSUES CLOSED: #9559
2026-06-03 12:16:30 -04:00

50 lines
2.6 KiB
Plaintext

*** Settings ***
Documentation Integration tests for merge strategy configuration (prefer-parent, prefer-subplan, manual)
Resource ${CURDIR}/common.resource
*** Variables ***
${HELPER_SCRIPT} robot/helper_merge_strategy.py
*** Test Cases ***
Prefer-Parent Auto-Resolves Conflicts
[Documentation] Verify prefer-parent strategy resolves all conflicts in favor of parent values
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} prefer_parent cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-strategy-prefer-parent-ok
Prefer-Subplan Auto-Resolves Conflicts
[Documentation] Verify prefer-subplan strategy resolves all conflicts in favor of subplan values
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} prefer_subplan cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-strategy-prefer-subplan-ok
Manual Strategy Requires Resolution
[Documentation] Verify manual strategy raises ValueError on attempted auto-resolution
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} manual cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-strategy-manual-ok
No Conflicts Returns Empty Result
[Documentation] Verify empty conflict list returns empty resolution
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} no_conflicts cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-strategy-no-conflicts-ok
Strategy From String Creates Correct Enum
[Documentation] Verify MergeStrategy.from_string creates proper enum values
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} from_string cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-strategy-from-string-ok
Invalid String Raises Error
[Documentation] Verify invalid string raises ValueError with descriptive message
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} invalid_string cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-strategy-invalid-string-ok
Enum Values And Methods Validated
[Documentation] Verify all enum member values and helper methods are correct
${result}= Run Process ${PYTHON} ${HELPER_SCRIPT} enums cwd=${WORKSPACE}
Should Be Equal As Integers ${result.rc} 0
Should Contain ${result.stdout} merge-strategy-enums-ok