*** Settings *** Documentation Core CLI Commands Integration Tests for Project, Context and Plan Management Library OperatingSystem Library Process Library String Library Collections Resource discovery_common.resource Suite Setup Run Keywords Clean Core CLI Temp Dir AND Setup Test Environment Suite Teardown Cleanup Test Environment Test Timeout 300 seconds *** Variables *** ${PYTHON} python ${TEST_DIR} ${TEMPDIR}${/}cleveragents_core_cli_test ${PROJECT_NAME} test-project *** Test Cases *** Test CLI Help Shows All Commands [Documentation] Verify that CLI help displays all expected command groups ${result} = Run Process ${PYTHON} -m cleveragents --help timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} AI-powered development assistant Should Contain ${result.stdout} project Should Contain ${result.stdout} context Should Contain ${result.stdout} plan Should Contain ${result.stdout} init Should Contain ${result.stdout} tell Should Contain ${result.stdout} build Should Contain ${result.stdout} apply Test Project Initialization [Documentation] Test initializing a new CleverAgents project Create Directory ${TEST_DIR}/project1 ${result} = Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} ... cwd=${TEST_DIR}/project1 timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Project '${PROJECT_NAME}' initialized successfully Directory Should Exist ${TEST_DIR}/project1/.cleveragents File Should Exist ${TEST_DIR}/project1/.cleveragents/db.sqlite File Should Exist ${TEST_DIR}/project1/.cleveragents/config.yaml File Should Exist ${TEST_DIR}/project1/.cleveragents/current ${current} = Get File ${TEST_DIR}/project1/.cleveragents/current Should Be Equal ${current} main Test Project Cannot Initialize Twice [Documentation] Verify project cannot be initialized twice without force Create Directory ${TEST_DIR}/project2 Run Process ${PYTHON} -m cleveragents init first-project cwd=${TEST_DIR}/project2 timeout=120s ${result} = Run Process ${PYTHON} -m cleveragents init second-project ... cwd=${TEST_DIR}/project2 timeout=120s Should Not Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stderr} Project already initialized Should Contain ${result.stderr} --force Test Force Reinitialize Project [Documentation] Test force reinitialization of a project Create Directory ${TEST_DIR}/project3 Run Process ${PYTHON} -m cleveragents init first-project cwd=${TEST_DIR}/project3 timeout=120s ${result} = Run Process ${PYTHON} -m cleveragents init second-project --force ... cwd=${TEST_DIR}/project3 timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Project 'second-project' initialized successfully Test Context Add Files [Documentation] Test adding files to context Create Directory ${TEST_DIR}/project4 Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} cwd=${TEST_DIR}/project4 timeout=120s Create File ${TEST_DIR}/project4/test.py print('hello world') ${result} = Run Process ${PYTHON} -m cleveragents context add test.py ... cwd=${TEST_DIR}/project4 timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Added 1 file(s) to context Should Contain ${result.stdout} test.py Test Context List Files [Documentation] Test listing context files ${unique_dir} = Set Variable ${TEST_DIR}/project5_${TEST NAME.replace(' ', '_')} Create Directory ${unique_dir} ${init_result} = Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} ... cwd=${unique_dir} timeout=120s Should Be Equal As Numbers ${init_result.rc} 0 Create File ${unique_dir}/file1.py # File 1 Create File ${unique_dir}/file2.py # File 2 ${add_result} = Run Process ${PYTHON} -m cleveragents context add file1.py file2.py ... cwd=${unique_dir} timeout=120s Should Be Equal As Numbers ${add_result.rc} 0 Directory Should Exist ${unique_dir} ${result} = Run Process ${PYTHON} -m cleveragents context list ... cwd=${unique_dir} timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} file1.py Should Contain ${result.stdout} file2.py Test Context Clear [Documentation] Test clearing context files Create Directory ${TEST_DIR}/project6 Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} cwd=${TEST_DIR}/project6 timeout=120s Create File ${TEST_DIR}/project6/test.py # Test file Run Process ${PYTHON} -m cleveragents context add test.py cwd=${TEST_DIR}/project6 timeout=120s ${result} = Run Process ${PYTHON} -m cleveragents context clear --yes ... cwd=${TEST_DIR}/project6 timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Cleared all files from context Test Plan Creation With Tell [Documentation] Test creating a plan using tell command Create Directory ${TEST_DIR}/project7 Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} cwd=${TEST_DIR}/project7 timeout=120s ${result} = Run Process ${PYTHON} -m cleveragents tell Add error handling to main function ... cwd=${TEST_DIR}/project7 timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Plan created Should Contain ${result.stdout} error handling Test Plan Build [Documentation] Test building a plan Create Directory ${TEST_DIR}/project8 Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} cwd=${TEST_DIR}/project8 timeout=120s Run Process ${PYTHON} -m cleveragents tell Create example code cwd=${TEST_DIR}/project8 timeout=120s ${result} = Run Process ${PYTHON} -m cleveragents build cwd=${TEST_DIR}/project8 ... env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Plan built successfully Should Contain ${result.stdout} Generated Should Contain ${result.stdout} change(s) Test Plan Apply [Documentation] Test applying plan changes Create Directory ${TEST_DIR}/project9 Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} cwd=${TEST_DIR}/project9 timeout=120s Run Process ${PYTHON} -m cleveragents tell Create example file cwd=${TEST_DIR}/project9 timeout=120s Run Process ${PYTHON} -m cleveragents build cwd=${TEST_DIR}/project9 ... env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=120s ${result} = Run Process ${PYTHON} -m cleveragents apply --yes cwd=${TEST_DIR}/project9 timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Successfully applied File Should Exist ${TEST_DIR}/project9/example.py Test Plan List [Documentation] Test listing plans Create Directory ${TEST_DIR}/project10 Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} cwd=${TEST_DIR}/project10 timeout=120s Run Process ${PYTHON} -m cleveragents tell First plan cwd=${TEST_DIR}/project10 timeout=120s Run Process ${PYTHON} -m cleveragents plan new second-plan cwd=${TEST_DIR}/project10 timeout=120s ${result} = Run Process ${PYTHON} -m cleveragents plan list cwd=${TEST_DIR}/project10 timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Plans (3 total) Test Shortcut Commands Work [Documentation] Test that shortcut commands work properly Create Directory ${TEST_DIR}/project11 Run Process ${PYTHON} -m cleveragents init ${PROJECT_NAME} cwd=${TEST_DIR}/project11 timeout=120s Create File ${TEST_DIR}/project11/test.txt Test content # Test context-load shortcut ${result} = Run Process ${PYTHON} -m cleveragents context-load test.txt ... cwd=${TEST_DIR}/project11 timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Added 1 file(s) to context Test End To End Workflow [Documentation] Test complete workflow from init to apply Create Directory ${TEST_DIR}/project12 # Initialize project ${init} = Run Process ${PYTHON} -m cleveragents init workflow-project ... cwd=${TEST_DIR}/project12 timeout=120s Should Be Equal As Numbers ${init.rc} 0 # Add context Create File ${TEST_DIR}/project12/input.py def main(): pass ${add} = Run Process ${PYTHON} -m cleveragents context add input.py ... cwd=${TEST_DIR}/project12 timeout=120s Should Be Equal As Numbers ${add.rc} 0 # Create plan ${tell} = Run Process ${PYTHON} -m cleveragents tell Add logging to main function ... cwd=${TEST_DIR}/project12 timeout=120s Should Be Equal As Numbers ${tell.rc} 0 # Build plan ${build} = Run Process ${PYTHON} -m cleveragents build cwd=${TEST_DIR}/project12 ... env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=120s Should Be Equal As Numbers ${build.rc} 0 # Apply changes ${apply} = Run Process ${PYTHON} -m cleveragents apply --yes cwd=${TEST_DIR}/project12 timeout=120s Should Be Equal As Numbers ${apply.rc} 0 # Verify file created File Should Exist ${TEST_DIR}/project12/example.py Test Command Error Handling [Documentation] Test error handling for invalid commands ${result} = Run Process ${PYTHON} -m cleveragents invalid-command timeout=120s Should Not Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stderr} Invalid command Test Project Status Without Project [Documentation] Test project status command without initialized project Create Directory ${TEST_DIR}/no_project ${result} = Run Process ${PYTHON} -m cleveragents project status ... cwd=${TEST_DIR}/no_project timeout=120s Should Not Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stderr} No project found Test Project Status With Project [Documentation] Test project status command with initialized project Create Directory ${TEST_DIR}/with_project Run Process ${PYTHON} -m cleveragents init status-test cwd=${TEST_DIR}/with_project timeout=120s ${result} = Run Process ${PYTHON} -m cleveragents project status ... cwd=${TEST_DIR}/with_project timeout=120s Should Be Equal As Numbers ${result.rc} 0 Should Contain ${result.stdout} Project: status-test Should Contain ${result.stdout} Plans: 1 Should Contain ${result.stdout} Context Files: 0 *** Keywords *** Setup Test Environment [Documentation] Setup the test environment Create Directory ${TEST_DIR} ${home}= Set Variable ${TEST_DIR}${/}.cleveragents_home Run Keyword And Ignore Error Remove Directory ${home} recursive=True Create Directory ${home} Set Environment Variable CLEVERAGENTS_HOME ${home} Clean Core CLI Temp Dir Run Keyword And Ignore Error Remove Directory ${TEST_DIR} recursive=True Create Directory ${TEST_DIR} Cleanup Test Environment [Documentation] Clean up after tests # Clean up test directory Run Keyword And Ignore Error Remove Directory ${TEST_DIR} recursive=true