185 lines
7.1 KiB
Gherkin
185 lines
7.1 KiB
Gherkin
Feature: CLI Plan and Context Commands - Complete Coverage
|
|
As a developer
|
|
I want to verify plan and context workflows work properly
|
|
So that CleverAgents provides complete functionality
|
|
|
|
Background:
|
|
Given I have a clean test environment
|
|
And I have set up the test configuration
|
|
|
|
# Essential Commands (5)
|
|
|
|
Scenario: Initialize a new CleverAgents project
|
|
Given I am in an empty directory
|
|
When I run "cleveragents init test-project"
|
|
Then the command should succeed
|
|
And a .cleveragents directory should be created
|
|
And the database should be initialized in current directory
|
|
And the project should be named "test-project"
|
|
|
|
Scenario: Add files to context with context-load
|
|
Given I have an initialized project
|
|
And I have a file "test.py" with content "print('hello')"
|
|
When I run "cleveragents context-load test.py"
|
|
Then the command should succeed
|
|
And the file should be added to context
|
|
When I run "cleveragents context list"
|
|
Then I should see "test.py" in the output
|
|
|
|
Scenario: Create a plan with tell command
|
|
Given I have an initialized project
|
|
When I run 'cleveragents tell "Add error handling to the main function"'
|
|
Then the command should succeed
|
|
And a new plan should be created
|
|
And the plan should contain the instruction "Add error handling to the main function"
|
|
|
|
Scenario: Build a plan to generate changes
|
|
Given I have an initialized project with a plan
|
|
And the plan has an instruction "Add error handling"
|
|
When I run "cleveragents build"
|
|
Then the command should succeed
|
|
And the plan should have generated changes
|
|
And the changes should be stored in the database
|
|
|
|
Scenario: Build command honors actor selection
|
|
Given I have an initialized project with a plan
|
|
And the plan has an instruction "Add error handling"
|
|
When I run "cleveragents build --actor openai/gpt-cli-test"
|
|
Then the command should succeed
|
|
|
|
Scenario: Apply built changes to filesystem
|
|
|
|
Given I have an initialized project with a built plan
|
|
And the plan has a change to create "new_file.py"
|
|
When I run "cleveragents apply"
|
|
Then the command should succeed
|
|
And the file "new_file.py" should exist
|
|
And the changes should be marked as applied
|
|
|
|
# Supporting Commands (9)
|
|
|
|
Scenario: Create a new empty plan
|
|
Given I have an initialized project
|
|
When I run "cleveragents plan new feature-plan"
|
|
Then the command should succeed
|
|
And a plan named "feature-plan" should be created
|
|
And "feature-plan" should be the current plan
|
|
|
|
Scenario: Show the current plan name
|
|
Given I have an initialized project
|
|
And I have a plan named "main"
|
|
And "main" is the current plan
|
|
When I run "cleveragents plan current"
|
|
Then the command should succeed
|
|
And the output should contain "main"
|
|
|
|
Scenario: List all plans in project
|
|
Given I have an initialized project
|
|
And I have plans named "main", "feature-1", "feature-2"
|
|
When I run "cleveragents plan list"
|
|
Then the command should succeed
|
|
And the output should contain "main"
|
|
And the output should contain "feature-1"
|
|
And the output should contain "feature-2"
|
|
|
|
Scenario: Switch to a different plan
|
|
Given I have an initialized project
|
|
And I have plans named "main" and "feature-1"
|
|
And "main" is the current plan
|
|
When I run "cleveragents plan cd feature-1"
|
|
Then the command should succeed
|
|
And "feature-1" should be the current plan
|
|
|
|
Scenario: Continue working on current plan
|
|
Given I have an initialized project with a plan
|
|
And the plan has previous conversation history
|
|
When I run 'cleveragents plan continue "Also add logging"'
|
|
Then the command should succeed
|
|
And the plan should have the additional instruction
|
|
|
|
Scenario: Show context files
|
|
Given I have an initialized project
|
|
And I have added files "main.py", "utils.py" to context
|
|
When I run "cleveragents context list"
|
|
Then the command should succeed
|
|
And the output should contain "main.py"
|
|
And the output should contain "utils.py"
|
|
|
|
Scenario: Display full context content
|
|
Given I have an initialized project
|
|
And I have a file "test.py" with content "def hello(): pass"
|
|
And I have added "test.py" to context
|
|
When I run "cleveragents context show"
|
|
Then the command should succeed
|
|
And the output should contain "def hello(): pass"
|
|
|
|
Scenario: Remove file from context
|
|
Given I have an initialized project
|
|
And I have added files "main.py", "utils.py" to context
|
|
When I run "cleveragents context rm main.py"
|
|
Then the command should succeed
|
|
And "main.py" should not be in context
|
|
And "utils.py" should still be in context
|
|
|
|
Scenario: Clear all context files
|
|
Given I have an initialized project
|
|
And I have added files "main.py", "utils.py", "test.py" to context
|
|
When I run "cleveragents context clear -y"
|
|
Then the command should succeed
|
|
And the context should be empty
|
|
|
|
Scenario: Remove a file filter from a project
|
|
Given I have an initialized project
|
|
And I run "cleveragents project file-filter add --exclude '**/__pycache__'"
|
|
When I run "cleveragents project file-filter remove --exclude '**/__pycache__'"
|
|
Then the command should succeed
|
|
And the output should not contain "__pycache__"
|
|
|
|
# Error Handling Scenarios
|
|
|
|
Scenario: Cannot initialize project in non-empty directory with existing project
|
|
Given I have an initialized project
|
|
When I run "cleveragents init another-project"
|
|
Then the command should fail
|
|
And the error message should mention "already initialized"
|
|
|
|
Scenario: Cannot use commands without initialized project
|
|
Given I am in an empty directory
|
|
When I run "cleveragents plan tell 'test'"
|
|
Then the command should fail
|
|
And the error message should mention "no project found"
|
|
|
|
Scenario: Cannot switch to non-existent plan
|
|
Given I have an initialized project
|
|
When I run "cleveragents plan cd non-existent"
|
|
Then the command should fail
|
|
And the error message should mention "plan not found"
|
|
|
|
Scenario: Cannot remove non-existent context file
|
|
Given I have an initialized project
|
|
When I run "cleveragents context rm non-existent.py"
|
|
Then the command should fail
|
|
And the error message should mention "not in context"
|
|
|
|
# Command Aliases and Shortcuts
|
|
|
|
Scenario: Context-load is an alias for context add
|
|
Given I have an initialized project
|
|
And I have a file "test.py"
|
|
When I run "cleveragents context-load test.py"
|
|
Then the command should succeed
|
|
When I run "cleveragents context-add test.py"
|
|
Then the command should succeed
|
|
And the output should mention "already in context"
|
|
|
|
Scenario: Top-level shortcuts work
|
|
Given I have an initialized project
|
|
When I run 'cleveragents tell "test instruction"'
|
|
Then the command should succeed
|
|
And it should be equivalent to "cleveragents plan tell"
|
|
When I run "cleveragents build"
|
|
Then the command should succeed
|
|
And it should be equivalent to "cleveragents plan build"
|
|
When I run "cleveragents apply"
|
|
Then the command should succeed
|
|
And it should be equivalent to "cleveragents plan apply" |