This commit is contained in:
136
.tests/test_recorder.py
Normal file
136
.tests/test_recorder.py
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
"""Tests for CLI Command Memory recorder."""
|
||||||
|
|
||||||
|
import tempfile
|
||||||
|
import os
|
||||||
|
from cli_memory.recorder import CommandRecorder
|
||||||
|
from cli_memory.models import Command, CommandType
|
||||||
|
from cli_memory.config import Config
|
||||||
|
|
||||||
|
|
||||||
|
def test_recorder_initialization():
|
||||||
|
"""Test recorder initializes correctly."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
assert recorder._current_project is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_record_command():
|
||||||
|
"""Test recording a single command."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(
|
||||||
|
command="ls -la",
|
||||||
|
exit_code=0,
|
||||||
|
duration_ms=25,
|
||||||
|
)
|
||||||
|
assert cmd.command == "ls -la"
|
||||||
|
assert cmd.exit_code == 0
|
||||||
|
assert cmd.duration_ms == 25
|
||||||
|
|
||||||
|
|
||||||
|
def test_record_multiple_commands():
|
||||||
|
"""Test recording multiple commands."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
recorder.record_command(command="pwd", exit_code=0)
|
||||||
|
recorder.record_command(command="ls", exit_code=0)
|
||||||
|
recorder.record_command(command="cd /tmp", exit_code=0)
|
||||||
|
|
||||||
|
assert recorder is not None
|
||||||
|
|
||||||
|
|
||||||
|
def test_command_classification_git():
|
||||||
|
"""Test git command classification."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(command="git status")
|
||||||
|
assert cmd.command_type == CommandType.GIT
|
||||||
|
|
||||||
|
cmd = recorder.record_command(command="git checkout main")
|
||||||
|
assert cmd.command_type == CommandType.GIT
|
||||||
|
|
||||||
|
|
||||||
|
def test_command_classification_docker():
|
||||||
|
"""Test docker command classification."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(command="docker ps")
|
||||||
|
assert cmd.command_type == CommandType.DOCKER
|
||||||
|
|
||||||
|
cmd = recorder.record_command(command="docker-compose up -d")
|
||||||
|
assert cmd.command_type == CommandType.DOCKER
|
||||||
|
|
||||||
|
|
||||||
|
def test_command_classification_build():
|
||||||
|
"""Test build command classification."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(command="make build")
|
||||||
|
assert cmd.command_type == CommandType.BUILD
|
||||||
|
|
||||||
|
cmd = recorder.record_command(command="npm run build")
|
||||||
|
assert cmd.command_type == CommandType.BUILD
|
||||||
|
|
||||||
|
|
||||||
|
def test_command_classification_test():
|
||||||
|
"""Test test command classification."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(command="pytest")
|
||||||
|
assert cmd.command_type == CommandType.TEST
|
||||||
|
|
||||||
|
cmd = recorder.record_command(command="npm test")
|
||||||
|
assert cmd.command_type == CommandType.TEST
|
||||||
|
|
||||||
|
|
||||||
|
def test_command_classification_deploy():
|
||||||
|
"""Test deploy command classification."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(command="kubectl apply -f deploy.yaml")
|
||||||
|
assert cmd.command_type == CommandType.DEPLOY
|
||||||
|
|
||||||
|
|
||||||
|
def test_command_classification_file_op():
|
||||||
|
"""Test file operation classification."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(command="cp file1 file2")
|
||||||
|
assert cmd.command_type == CommandType.FILE_OP
|
||||||
|
|
||||||
|
cmd = recorder.record_command(command="rm -rf temp")
|
||||||
|
assert cmd.command_type == CommandType.FILE_OP
|
||||||
|
|
||||||
|
|
||||||
|
def test_command_classification_system():
|
||||||
|
"""Test system command classification."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(command="sudo apt-get update")
|
||||||
|
assert cmd.command_type == CommandType.SYSTEM
|
||||||
|
|
||||||
|
|
||||||
|
def test_command_classification_other():
|
||||||
|
"""Test unknown command classification."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(command="my_custom_command arg1 arg2")
|
||||||
|
assert cmd.command_type == CommandType.OTHER
|
||||||
|
|
||||||
|
|
||||||
|
def test_record_with_tags():
|
||||||
|
"""Test recording with tags."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(
|
||||||
|
command="echo test",
|
||||||
|
tags=["test-tag", "debug"],
|
||||||
|
)
|
||||||
|
assert "test-tag" in cmd.tags
|
||||||
|
assert "debug" in cmd.tags
|
||||||
|
|
||||||
|
|
||||||
|
def test_record_with_metadata():
|
||||||
|
"""Test recording with metadata."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
cmd = recorder.record_command(
|
||||||
|
command="echo test",
|
||||||
|
metadata={"key": "value", "count": 5},
|
||||||
|
)
|
||||||
|
assert cmd.metadata["key"] == "value"
|
||||||
|
assert cmd.metadata["count"] == 5
|
||||||
|
|
||||||
|
|
||||||
|
def test_sanitize_command():
|
||||||
|
"""Test command sanitization."""
|
||||||
|
recorder = CommandRecorder()
|
||||||
|
sanitized = recorder.sanitize_command(" ls -la ")
|
||||||
|
assert sanitized == "ls -la"
|
||||||
Reference in New Issue
Block a user