forked from cleveragents/cleveragents-core
1878998b7a
Rename the TDD tag system from tdd_bug/tdd_bug_<N> to tdd_issue/tdd_issue_<N> across the entire codebase. The tdd_expected_fail tag is unchanged. The TDD expected-failure workflow is not limited to bug fixes — it applies equally to any issue type (features, tasks, refactors). The _bug suffix was misleading and narrowed the perceived scope. The new _issue suffix accurately reflects that the TDD tagging system applies to any Forgejo issue. Changes span 92 files: - features/environment.py: validate_tdd_tags(), should_invert_result(), and apply_tdd_inversion() updated — regex, variables, error messages - robot/tdd_expected_fail_listener.py: _validate_tdd_tags(), _should_invert_result(), start_test(), end_test() updated consistently - 33 Behave .feature files: all @tdd_bug/@tdd_bug_<N> tags renamed - 29 Robot .robot files: all tdd_bug/tdd_bug_<N> tags renamed - 3 Robot fixture files renamed (tdd_bug_alone, tdd_missing_tdd_bug, tdd_expected_fail_missing_bug_n) with content and references updated - Tag validation tests and helpers updated (function names, command dispatch keys, output strings, fixture references) - CONTRIBUTING.md: section renamed from 'TDD Bug Test Tags' to 'TDD Issue Test Tags', all tag references and examples updated - noxfile.py: comment references updated - Step definition files, mock helpers, and benchmark files: docstring references updated ISSUES CLOSED: #965
36 lines
2.0 KiB
Gherkin
36 lines
2.0 KiB
Gherkin
@tdd_issue @tdd_issue_968 @mock_only
|
|
Feature: TDD Issue #968 — plan explain expects decision_id but test passes plan_id
|
|
As a developer
|
|
I want to verify that `plan explain <plan_id>` succeeds when given a plan ID
|
|
So that the bug is captured and will be caught by a regression test
|
|
|
|
# This test was written to capture bug #968:
|
|
# The `plan explain` CLI command declares its first positional argument as
|
|
# `decision_id` (a Decision ULID). When the M3 acceptance test passes a
|
|
# plan ID, `svc.get_decision(plan_id)` raises DecisionNotFoundError because
|
|
# the plan ID is not a decision ID. The command exits with rc=1 and
|
|
# "Decision not found".
|
|
#
|
|
# The expected fix (#968) will make `explain_decision_cmd` fall back to
|
|
# treating the argument as a plan_id when decision lookup fails — looking
|
|
# up decisions for the plan via `decision_service.list_decisions(plan_id)`
|
|
# and explaining the root decision.
|
|
#
|
|
# These tests assert the *fixed* behaviour (rc=0 with decision details) and
|
|
# will FAIL until the bug is fixed. The @tdd_expected_fail tag inverts the
|
|
# result so CI passes.
|
|
|
|
Scenario: Plan explain succeeds when given a plan_id with decisions
|
|
Given tdd968 a mock DecisionService where get_decision raises DecisionNotFoundError for a plan id
|
|
And tdd968 the same mock DecisionService returns decisions via list_decisions for the plan id
|
|
When tdd968 I invoke plan explain with the plan id
|
|
Then tdd968 the command should exit with return code 0
|
|
And tdd968 the output should contain decision details
|
|
|
|
Scenario: Plan explain with plan_id shows root decision question
|
|
Given tdd968 a mock DecisionService where get_decision raises DecisionNotFoundError for a plan id
|
|
And tdd968 the same mock DecisionService returns decisions via list_decisions for the plan id
|
|
When tdd968 I invoke plan explain with the plan id
|
|
Then tdd968 the command should exit with return code 0
|
|
And tdd968 the output should contain the root decision question
|