# @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