Files
temp/features/tdd_server_connect_atomic_writes.feature
freemo 8ea00f5185 fix: restore CI quality tests to passing state (#4175)
Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
2026-04-08 11:02:14 +00:00

46 lines
2.5 KiB
Gherkin

# @tdd_expected_fail @tdd_issue @tdd_issue_993
@skip
Feature: TDD Issue #993 — server_connect writes three config values non-atomically
As a developer
I want to verify that server_connect writes all three config values atomically
So that a partial failure does not leave the configuration in a half-written state
# This test captures bug #993: server_connect in server.py makes three
# sequential set_value() calls (server.url, server.namespace, server.tls-verify)
# with no try/except, no transaction, and no rollback. If the second call
# fails (e.g. disk full, permissions error), server.url is already persisted
# but server.namespace and server.tls-verify retain their old values. The
# config is left in a half-written state.
#
# Expected behavior: all three config values are written atomically either
# all succeed or all fail (rollback to original state).
#
# This test uses the @tdd_expected_fail tag until the fix in #993 is merged.
# The tag inverts the result so CI passes while the bug is still unfixed.
# See CONTRIBUTING.md > Bug Fix Workflow > TDD Issue Test Tags.
Scenario: Config remains unchanged when second set_value fails during server_connect
Given a fresh config directory for atomic write test
And the config has pre-existing server values
When I invoke server_connect but set_value fails on the second call
Then an error should have been raised during server_connect
And the config should have rolled back server.url to its original value
And the config should still have the original server.namespace
And the config should still have the original server.tls-verify
Scenario: Config remains unchanged when third set_value fails during server_connect
Given a fresh config directory for atomic write test
And the config has pre-existing server values
When I invoke server_connect but set_value fails on the third call
Then an error should have been raised during server_connect
And the config should have rolled back server.url to its original value
And the config should have rolled back server.namespace to its original value
And the config should still have the original server.tls-verify
Scenario: No partial server.url persisted when namespace write raises
Given a fresh config directory for atomic write test
And the config has no server values
When I invoke server_connect but set_value fails on the second call
Then an error should have been raised during server_connect
And the config should not contain a server.url value