3fa07fb772
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 41s
CI / lint (pull_request) Successful in 3m19s
CI / quality (pull_request) Successful in 3m45s
CI / typecheck (pull_request) Successful in 3m56s
CI / security (pull_request) Successful in 4m6s
CI / integration_tests (pull_request) Successful in 5m50s
CI / unit_tests (pull_request) Successful in 6m7s
CI / docker (pull_request) Successful in 1m40s
CI / e2e_tests (pull_request) Successful in 8m16s
CI / coverage (pull_request) Successful in 11m48s
CI / status-check (pull_request) Successful in 1s
CI / build (push) Successful in 13s
CI / lint (push) Successful in 3m17s
CI / quality (push) Successful in 3m48s
CI / typecheck (push) Successful in 3m53s
CI / benchmark-regression (push) Has been skipped
CI / security (push) Successful in 4m1s
CI / integration_tests (push) Successful in 5m55s
CI / unit_tests (push) Successful in 6m0s
CI / docker (push) Failing after 51s
CI / e2e_tests (push) Successful in 8m48s
CI / coverage (push) Successful in 12m36s
CI / status-check (push) Successful in 6s
CI / benchmark-publish (push) Successful in 34m54s
CI / benchmark-regression (pull_request) Successful in 1h1m15s
Add @tdd_issue and @tdd_issue_1080 so the expected-fail scenario passes the global tag validator during unit_tests.
48 lines
2.6 KiB
Gherkin
48 lines
2.6 KiB
Gherkin
@tdd_issue @tdd_issue_1080 @tdd_bug @tdd_bug_1080 @mock_only
|
|
Feature: TDD Bug #1080 — execution environment resolution ignores project-level override
|
|
As a developer
|
|
I want execution environment resolution to honour the 6-level precedence chain
|
|
So that project-level overrides (precedence level 2) take effect correctly
|
|
|
|
# Bug #1080: The ExecutionEnvironmentResolver uses a flat priority chain
|
|
# (tool > plan > project > default) that does not distinguish between
|
|
# "override" and "fallback" priority semantics. Per the spec (§Execution
|
|
# Environment Routing), the correct 6-level precedence is:
|
|
#
|
|
# 1. Plan-level with priority: override
|
|
# 2. Project-level with priority: override
|
|
# 3. Nearest-ancestor devcontainer (auto-detected)
|
|
# 4. Plan-level with priority: fallback
|
|
# 5. Project-level with priority: fallback
|
|
# 6. Host (default)
|
|
#
|
|
# The critical failure: when a project has execution_environment set with
|
|
# priority "override" and a plan has execution_environment set with
|
|
# priority "fallback", the plan incorrectly wins because the resolver
|
|
# treats all plan-level settings as higher priority than project-level.
|
|
#
|
|
# This test captures the bug by asserting the CORRECT precedence behavior.
|
|
# The @tdd_expected_fail tag on the bug-capturing scenario inverts the
|
|
# result: the assertion fails (proving the bug exists) but CI reports it
|
|
# as passed. When bug #1080 is fixed, the @tdd_expected_fail tag must
|
|
# be removed.
|
|
#
|
|
# The @mock_only tag restricts this feature to in-process mock execution;
|
|
# it does not require any external services or container infrastructure.
|
|
|
|
@tdd_expected_fail
|
|
Scenario: Bug #1080 - Project-level override beats plan-level fallback (precedence level 2 vs 4)
|
|
Given a precedence-aware execution environment resolver
|
|
When I resolve precedence with plan env "host" at priority "fallback" and project env "container" at priority "override"
|
|
Then the precedence-resolved environment should be "container"
|
|
|
|
Scenario: Regression guard - Plan-level override still beats project-level override (precedence level 1 vs 2)
|
|
Given a precedence-aware execution environment resolver
|
|
When I resolve precedence with plan env "host" at priority "override" and project env "container" at priority "override"
|
|
Then the precedence-resolved environment should be "host"
|
|
|
|
Scenario: Regression guard - Project-level override beats host default (precedence level 2 vs 6)
|
|
Given a precedence-aware execution environment resolver
|
|
When I resolve precedence with no plan env and project env "container" at priority "override"
|
|
Then the precedence-resolved environment should be "container"
|