226 lines
12 KiB
Plaintext
226 lines
12 KiB
Plaintext
*** 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 Setup Test Environment
|
|
Suite Teardown Cleanup Test Environment
|
|
|
|
*** Variables ***
|
|
${TEST_DIR} ${TEMPDIR}${/}cleveragents_robot_test
|
|
${PROJECT_NAME} test-project
|
|
${DEFAULT_TIMEOUT} 10s
|
|
|
|
*** 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=10s
|
|
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=10s
|
|
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=10s
|
|
${result} = Run Process python -m cleveragents init second-project
|
|
... cwd=${TEST_DIR}/project2 timeout=10s
|
|
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=10s
|
|
${result} = Run Process python -m cleveragents init second-project --force
|
|
... cwd=${TEST_DIR}/project3 timeout=10s
|
|
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=10s
|
|
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=10s
|
|
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
|
|
Create Directory ${TEST_DIR}/project5
|
|
Run Process python -m cleveragents init ${PROJECT_NAME} cwd=${TEST_DIR}/project5 timeout=10s
|
|
Create File ${TEST_DIR}/project5/file1.py # File 1
|
|
Create File ${TEST_DIR}/project5/file2.py # File 2
|
|
Run Process python -m cleveragents context add file1.py file2.py
|
|
... cwd=${TEST_DIR}/project5 timeout=10s
|
|
${result} = Run Process python -m cleveragents context list
|
|
... cwd=${TEST_DIR}/project5 timeout=10s
|
|
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=10s
|
|
Create File ${TEST_DIR}/project6/test.py # Test file
|
|
Run Process python -m cleveragents context add test.py cwd=${TEST_DIR}/project6 timeout=10s
|
|
${result} = Run Process python -m cleveragents context clear --yes
|
|
... cwd=${TEST_DIR}/project6 timeout=10s
|
|
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=10s
|
|
${result} = Run Process python -m cleveragents tell Add error handling to main function
|
|
... cwd=${TEST_DIR}/project7 timeout=10s
|
|
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=10s
|
|
Run Process python -m cleveragents tell Create example code cwd=${TEST_DIR}/project8 timeout=10s
|
|
${result} = Run Process python -m cleveragents build cwd=${TEST_DIR}/project8 timeout=10s
|
|
... env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=10s
|
|
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=10s
|
|
Run Process python -m cleveragents tell Create example file cwd=${TEST_DIR}/project9 timeout=10s
|
|
... env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=10s
|
|
Run Process python -m cleveragents build cwd=${TEST_DIR}/project9 timeout=10s
|
|
... env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=10s
|
|
${result} = Run Process python -m cleveragents apply --yes cwd=${TEST_DIR}/project9 timeout=10s
|
|
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=10s
|
|
Run Process python -m cleveragents tell First plan cwd=${TEST_DIR}/project10 timeout=10s
|
|
Run Process python -m cleveragents plan new second-plan cwd=${TEST_DIR}/project10 timeout=10s
|
|
${result} = Run Process python -m cleveragents plan list cwd=${TEST_DIR}/project10 timeout=10s
|
|
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=10s
|
|
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=10s
|
|
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=10s
|
|
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=10s
|
|
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 env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=10s
|
|
Should Be Equal As Numbers ${tell.rc} 0
|
|
# Build plan
|
|
${build} = Run Process python -m cleveragents build cwd=${TEST_DIR}/project12 timeout=10s
|
|
... env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true timeout=10s
|
|
Should Be Equal As Numbers ${build.rc} 0
|
|
# Apply changes
|
|
${apply} = Run Process python -m cleveragents apply --yes cwd=${TEST_DIR}/project12 timeout=10s
|
|
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=10s
|
|
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 timeout=10s
|
|
... cwd=${TEST_DIR}/no_project timeout=10s
|
|
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=10s
|
|
${result} = Run Process python -m cleveragents project status timeout=10s
|
|
... cwd=${TEST_DIR}/with_project timeout=10s
|
|
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 ***
|
|
Run CleverAgents Command
|
|
[Arguments] @{args} ${cwd}=${None} ${env}=${None} ${timeout}=${DEFAULT_TIMEOUT}
|
|
[Documentation] Run a cleveragents command with default timeout
|
|
${kwargs} = Create Dictionary timeout=${timeout}
|
|
IF $cwd is not None
|
|
Set To Dictionary ${kwargs} cwd=${cwd}
|
|
END
|
|
IF $env is not None
|
|
Set To Dictionary ${kwargs} env:CLEVERAGENTS_TESTING_USE_MOCK_AI=true
|
|
END
|
|
${result} = Run Process python -m cleveragents @{args} &{kwargs} timeout=10s
|
|
RETURN ${result}
|
|
|
|
Setup Test Environment
|
|
[Documentation] Setup the test environment
|
|
Create Directory ${TEST_DIR}
|
|
|
|
Cleanup Test Environment
|
|
[Documentation] Clean up after tests
|
|
Remove Directory ${TEST_DIR} recursive=true |