forked from HAL9000/cleveragents-core
8ea00f5185
Co-authored-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me> Co-committed-by: Jeffrey Phillips Freeman <the@jeffreyfreeman.me>
46 lines
2.5 KiB
Gherkin
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
|