b122ec7ed5
CI / lint (pull_request) Successful in 23s
CI / quality (pull_request) Successful in 51s
CI / typecheck (pull_request) Successful in 1m0s
CI / security (pull_request) Successful in 55s
CI / build (pull_request) Successful in 25s
CI / helm (pull_request) Successful in 32s
CI / push-validation (pull_request) Successful in 26s
CI / e2e_tests (pull_request) Successful in 3m38s
CI / integration_tests (pull_request) Successful in 6m42s
CI / unit_tests (pull_request) Successful in 8m19s
CI / docker (pull_request) Successful in 13s
CI / coverage (pull_request) Successful in 15m23s
CI / status-check (pull_request) Successful in 2s
Remove the local ${PYTHON} python (and python3) variable definitions from
the *** Variables *** sections of all affected robot files. These local
definitions were overriding the pabot-injected venv Python path passed via
--variable PYTHON:/path/to/venv/python, causing tests to use the system
Python (which lacks required packages like structlog, sqlalchemy, etc.)
instead of the nox venv Python.
The correct ${PYTHON} value is already set by Setup Test Environment in
common.resource via sys.executable, and pabot passes it via --variable.
The local fallback definitions are redundant and harmful in parallel runs.
Audit found 56 robot files with the pattern (more than the 9 originally
identified in the issue). All occurrences have been removed.
ISSUES CLOSED: #1309
336 lines
12 KiB
Plaintext
336 lines
12 KiB
Plaintext
*** Settings ***
|
|
Documentation Integration tests for context delete with --all and --yes flags
|
|
... SEC1: Uses simple_echo_config.yaml which requires code blocks.
|
|
Library Process
|
|
Library OperatingSystem
|
|
Library String
|
|
Library DateTime
|
|
Resource ${CURDIR}/v2_paths.resource
|
|
Force Tags code_blocks
|
|
Suite Setup Setup Test Environment
|
|
Suite Teardown Cleanup Test Environment
|
|
|
|
*** Variables ***
|
|
${SIMPLE_CONFIG} ${V2_CONFIG_DIR}/simple_echo_config.yaml
|
|
${CONTEXT_DIR} ${TEMPDIR}/test_contexts_delete_all_yes
|
|
${UNIQUE_ID} ${EMPTY}
|
|
${TEMP} ${EMPTY}
|
|
|
|
*** Test Cases ***
|
|
Test Delete Single Context With Yes Flag
|
|
[Documentation] Test context delete with --yes bypasses confirmation
|
|
${context_name} = Set Variable delete_yes_${UNIQUE_ID}
|
|
|
|
# Create context
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${context_name}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test message"
|
|
|
|
Directory Should Exist ${CONTEXT_DIR}/${context_name}
|
|
|
|
# Delete it with --yes flag
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... ${context_name}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --yes
|
|
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Directory Should Not Exist ${CONTEXT_DIR}/${context_name}
|
|
Should Contain ${result.stdout} deleted
|
|
|
|
Test Delete Single Context With Short Yes Flag
|
|
[Documentation] Test context delete with -y shorthand flag
|
|
${context_name} = Set Variable delete_short_${UNIQUE_ID}
|
|
|
|
# Create context
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${context_name}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test message"
|
|
|
|
Directory Should Exist ${CONTEXT_DIR}/${context_name}
|
|
|
|
# Delete it with -y flag
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... ${context_name}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... -y
|
|
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Directory Should Not Exist ${CONTEXT_DIR}/${context_name}
|
|
|
|
Test Delete Single Context With Confirmation Accept
|
|
[Documentation] Test context delete with confirmation accepted
|
|
${context_name} = Set Variable delete_confirm_${UNIQUE_ID}
|
|
|
|
# Create context
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${context_name}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test message"
|
|
|
|
Directory Should Exist ${CONTEXT_DIR}/${context_name}
|
|
|
|
# Delete with confirmation (answer 'y')
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... ${context_name}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... stdin=y\n
|
|
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Directory Should Not Exist ${CONTEXT_DIR}/${context_name}
|
|
|
|
Test Delete Single Context With Confirmation Reject
|
|
[Documentation] Test context delete with confirmation rejected
|
|
${context_name} = Set Variable delete_reject_${UNIQUE_ID}
|
|
|
|
# Create context
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${context_name}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test message"
|
|
|
|
Directory Should Exist ${CONTEXT_DIR}/${context_name}
|
|
|
|
# Delete with confirmation rejected (answer 'n')
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... ${context_name}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... stdin=n\n
|
|
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Directory Should Exist ${CONTEXT_DIR}/${context_name}
|
|
Should Contain ${result.stdout} cancelled
|
|
|
|
Test Delete All Contexts With All And Yes Flags
|
|
[Documentation] Test delete all contexts with --all --yes
|
|
[Setup] Empty Directory ${CONTEXT_DIR}
|
|
${ctx1} = Set Variable all_ctx1_${UNIQUE_ID}
|
|
${ctx2} = Set Variable all_ctx2_${UNIQUE_ID}
|
|
${ctx3} = Set Variable all_ctx3_${UNIQUE_ID}
|
|
|
|
# Create multiple contexts
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx1}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx2}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx3}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
Directory Should Exist ${CONTEXT_DIR}/${ctx1}
|
|
Directory Should Exist ${CONTEXT_DIR}/${ctx2}
|
|
Directory Should Exist ${CONTEXT_DIR}/${ctx3}
|
|
|
|
# Delete all with --all --yes
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... --all
|
|
... --yes
|
|
... --context-dir ${CONTEXT_DIR}
|
|
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Directory Should Not Exist ${CONTEXT_DIR}/${ctx1}
|
|
Directory Should Not Exist ${CONTEXT_DIR}/${ctx2}
|
|
Directory Should Not Exist ${CONTEXT_DIR}/${ctx3}
|
|
Should Contain ${result.stdout} Deleted 3 context
|
|
|
|
Test Delete All With Confirmation Accept
|
|
[Documentation] Test delete all with confirmation accepted
|
|
[Setup] Empty Directory ${CONTEXT_DIR}
|
|
${ctx1} = Set Variable all_confirm1_${UNIQUE_ID}
|
|
${ctx2} = Set Variable all_confirm2_${UNIQUE_ID}
|
|
|
|
# Create contexts
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx1}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx2}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
# Delete all with confirmation
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... --all
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... stdin=y\n
|
|
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Directory Should Not Exist ${CONTEXT_DIR}/${ctx1}
|
|
Directory Should Not Exist ${CONTEXT_DIR}/${ctx2}
|
|
Should Contain ${result.stdout} Found
|
|
Should Contain ${result.stdout} to delete
|
|
|
|
Test Delete All With Confirmation Reject
|
|
[Documentation] Test delete all with confirmation rejected
|
|
[Setup] Empty Directory ${CONTEXT_DIR}
|
|
${ctx1} = Set Variable all_reject1_${UNIQUE_ID}
|
|
${ctx2} = Set Variable all_reject2_${UNIQUE_ID}
|
|
|
|
# Create contexts
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx1}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx2}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
# Delete all with confirmation rejected
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... --all
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... stdin=n\n
|
|
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Directory Should Exist ${CONTEXT_DIR}/${ctx1}
|
|
Directory Should Exist ${CONTEXT_DIR}/${ctx2}
|
|
Should Contain ${result.stdout} cancelled
|
|
|
|
Test Error When Both Name And All Provided
|
|
[Documentation] Test error when both NAME and --all are provided
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... test_context
|
|
... --all
|
|
... --context-dir ${CONTEXT_DIR}
|
|
|
|
Should Not Be Equal As Integers ${result.rc} 0
|
|
Should Contain Any ${result.stderr} ${result.stdout} Cannot specify NAME when using --all
|
|
|
|
Test Error When Neither Name Nor All Provided
|
|
[Documentation] Test error when neither NAME nor --all is provided
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... --context-dir ${CONTEXT_DIR}
|
|
|
|
Should Not Be Equal As Integers ${result.rc} 0
|
|
Should Contain Any ${result.stderr} ${result.stdout} Must specify NAME or use --all
|
|
|
|
Test Delete All When No Contexts Exist
|
|
[Documentation] Test delete all when directory is empty
|
|
# Ensure directory is empty
|
|
Empty Directory ${CONTEXT_DIR}
|
|
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... --all
|
|
... --yes
|
|
... --context-dir ${CONTEXT_DIR}
|
|
|
|
Should Be Equal As Integers ${result.rc} 0
|
|
Should Contain ${result.stdout} No contexts found
|
|
|
|
Test Delete Non Existent Context
|
|
[Documentation] Test deleting a context that doesn't exist
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... non_existent_context_${UNIQUE_ID}
|
|
... --yes
|
|
... --context-dir ${CONTEXT_DIR}
|
|
|
|
Should Not Be Equal As Integers ${result.rc} 0
|
|
Should Contain Any ${result.stderr} ${result.stdout} does not exist
|
|
|
|
Test Delete All Shows Context List Before Deletion
|
|
[Documentation] Test that --all shows context list before confirmation
|
|
[Setup] Empty Directory ${CONTEXT_DIR}
|
|
${ctx1} = Set Variable list_ctx1_${UNIQUE_ID}
|
|
${ctx2} = Set Variable list_ctx2_${UNIQUE_ID}
|
|
${ctx3} = Set Variable list_ctx3_${UNIQUE_ID}
|
|
|
|
# Create contexts
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx1}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx2}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
Run Process ${PYTHON} -m cleveragents actor run
|
|
... -c ${SIMPLE_CONFIG}
|
|
... --context ${ctx3}
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... --unsafe
|
|
... --allow-rxpy-in-run-mode
|
|
... test-actor "test"
|
|
|
|
# Delete all with confirmation to see list
|
|
${result} = Run Process ${PYTHON} -m cleveragents context delete
|
|
... --all
|
|
... --context-dir ${CONTEXT_DIR}
|
|
... stdin=n\n
|
|
|
|
Should Contain ${result.stdout} Found 3 context
|
|
Should Contain ${result.stdout} ${ctx1}
|
|
Should Contain ${result.stdout} ${ctx2}
|
|
Should Contain ${result.stdout} ${ctx3}
|
|
|
|
*** Keywords ***
|
|
Setup Test Environment
|
|
${timestamp} = Get Current Date result_format=%Y%m%d_%H%M%S
|
|
${random} = Evaluate random.randint(1000, 9999) modules=random
|
|
Set Suite Variable ${UNIQUE_ID} ${timestamp}_${random}
|
|
Set Suite Variable ${TEMP} ${TEMPDIR}/ca_delete_test_${UNIQUE_ID}
|
|
Set Suite Variable ${CONTEXT_DIR} ${TEMP}/contexts
|
|
Create Directory ${TEMP}
|
|
Create Directory ${CONTEXT_DIR}
|
|
|
|
Cleanup Test Environment
|
|
Run Keyword And Ignore Error Remove Directory ${TEMP} recursive=True
|
|
|
|
Should Contain Any
|
|
[Arguments] ${text1} ${text2} ${expected}
|
|
${combined} = Set Variable ${text1}${text2}
|
|
Should Contain ${combined} ${expected}
|