Add skills
This commit is contained in:
231
.config/opencode/skills/skill-migrator/evals/run-tests.sh
Executable file
231
.config/opencode/skills/skill-migrator/evals/run-tests.sh
Executable file
@@ -0,0 +1,231 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Skill Migrator Test Script
|
||||
# Tests the non-interactive mode functionality
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
MIGRATE_SCRIPT="$HOME/.config/opencode/skills/skill-migrator/scripts/migrate.sh"
|
||||
TEST_DIR="$HOME/.agents-test"
|
||||
|
||||
echo "========================================"
|
||||
echo " SKILL MIGRATOR TEST SUITE"
|
||||
echo "========================================"
|
||||
echo ""
|
||||
|
||||
# Setup: Create test skills
|
||||
setup_test_env() {
|
||||
echo "Setting up test environment..."
|
||||
rm -rf "$TEST_DIR"
|
||||
mkdir -p "$TEST_DIR"
|
||||
|
||||
# Create a test skill
|
||||
mkdir -p "$TEST_DIR/test-skill-1"
|
||||
cat > "$TEST_DIR/test-skill-1/SKILL.md" << 'EOF'
|
||||
---
|
||||
name: test-skill-1
|
||||
description: Test skill 1 for migration testing
|
||||
---
|
||||
|
||||
# Test Skill 1
|
||||
|
||||
This is a test skill.
|
||||
EOF
|
||||
|
||||
# Create another test skill
|
||||
mkdir -p "$TEST_DIR/test-skill-2"
|
||||
cat > "$TEST_DIR/test-skill-2/SKILL.md" << 'EOF'
|
||||
---
|
||||
name: test-skill-2
|
||||
description: Test skill 2 for migration testing
|
||||
---
|
||||
|
||||
# Test Skill 2
|
||||
|
||||
This is another test skill.
|
||||
EOF
|
||||
|
||||
echo "✓ Test environment created"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 1: Basic non-interactive migration
|
||||
test_basic_migration() {
|
||||
echo "Test 1: Basic Non-Interactive Migration"
|
||||
echo "----------------------------------------"
|
||||
|
||||
# Clean target
|
||||
rm -rf "$HOME/.config/opencode/skills/test-skill-1"
|
||||
rm -rf "$HOME/.config/opencode/skills/test-skill-2"
|
||||
|
||||
# Run migration with non-interactive flags
|
||||
if "$MIGRATE_SCRIPT" "$TEST_DIR" --all --yes; then
|
||||
echo "✓ Migration completed successfully"
|
||||
else
|
||||
echo "✗ Migration failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Verify skills were migrated
|
||||
if [[ -d "$HOME/.config/opencode/skills/test-skill-1" && -d "$HOME/.config/opencode/skills/test-skill-2" ]]; then
|
||||
echo "✓ Skills migrated to correct location"
|
||||
else
|
||||
echo "✗ Skills not found in target directory"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 2: Skip conflict strategy
|
||||
test_skip_strategy() {
|
||||
echo "Test 2: Skip Conflict Strategy"
|
||||
echo "-------------------------------"
|
||||
|
||||
# Modify source skill
|
||||
echo "# Modified" >> "$TEST_DIR/test-skill-1/SKILL.md"
|
||||
|
||||
# Run migration with skip strategy
|
||||
if "$MIGRATE_SCRIPT" "$TEST_DIR" --all --yes --conflict-strategy skip; then
|
||||
echo "✓ Migration with skip strategy completed"
|
||||
else
|
||||
echo "✗ Migration failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Verify original skill was NOT overwritten
|
||||
if ! grep -q "# Modified" "$HOME/.config/opencode/skills/test-skill-1/SKILL.md"; then
|
||||
echo "✓ Existing skill was skipped (not overwritten)"
|
||||
else
|
||||
echo "✗ Existing skill was overwritten (should have been skipped)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 3: Overwrite conflict strategy
|
||||
test_overwrite_strategy() {
|
||||
echo "Test 3: Overwrite Conflict Strategy"
|
||||
echo "------------------------------------"
|
||||
|
||||
# Run migration with overwrite strategy
|
||||
if "$MIGRATE_SCRIPT" "$TEST_DIR" --all --yes --conflict-strategy overwrite; then
|
||||
echo "✓ Migration with overwrite strategy completed"
|
||||
else
|
||||
echo "✗ Migration failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Verify skill WAS overwritten
|
||||
if grep -q "# Modified" "$HOME/.config/opencode/skills/test-skill-1/SKILL.md"; then
|
||||
echo "✓ Existing skill was overwritten"
|
||||
else
|
||||
echo "✗ Existing skill was not overwritten"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 4: Backup conflict strategy
|
||||
test_backup_strategy() {
|
||||
echo "Test 4: Backup Conflict Strategy"
|
||||
echo "---------------------------------"
|
||||
|
||||
# Run migration with backup strategy
|
||||
if "$MIGRATE_SCRIPT" "$TEST_DIR" --all --yes --conflict-strategy backup; then
|
||||
echo "✓ Migration with backup strategy completed"
|
||||
else
|
||||
echo "✗ Migration failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Verify backup was created
|
||||
if ls "$HOME/.config/opencode/skills/test-skill-1.backup."* 1> /dev/null 2>&1; then
|
||||
echo "✓ Backup was created"
|
||||
else
|
||||
echo "✗ Backup not found"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Test 5: Dry run
|
||||
test_dry_run() {
|
||||
echo "Test 5: Dry Run Mode"
|
||||
echo "---------------------"
|
||||
|
||||
# Create a new test skill that doesn't exist yet
|
||||
mkdir -p "$TEST_DIR/test-skill-3"
|
||||
cat > "$TEST_DIR/test-skill-3/SKILL.md" << 'EOF'
|
||||
---
|
||||
name: test-skill-3
|
||||
description: Test skill 3 for dry run testing
|
||||
---
|
||||
|
||||
# Test Skill 3
|
||||
|
||||
This skill should not be migrated in dry run.
|
||||
EOF
|
||||
|
||||
# Run migration with dry-run
|
||||
if "$MIGRATE_SCRIPT" "$TEST_DIR" --all --dry-run; then
|
||||
echo "✓ Dry run completed"
|
||||
else
|
||||
echo "✗ Dry run failed"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Verify skill was NOT actually migrated
|
||||
if [[ ! -d "$HOME/.config/opencode/skills/test-skill-3" ]]; then
|
||||
echo "✓ Dry run correctly made no changes"
|
||||
else
|
||||
echo "✗ Skill was migrated (should not happen in dry run)"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Cleanup
|
||||
cleanup() {
|
||||
echo "Cleaning up..."
|
||||
rm -rf "$TEST_DIR"
|
||||
rm -rf "$HOME/.config/opencode/skills/test-skill-1"
|
||||
rm -rf "$HOME/.config/opencode/skills/test-skill-2"
|
||||
rm -rf "$HOME/.config/opencode/skills/test-skill-3"
|
||||
rm -f "$HOME/.config/opencode/skills/test-skill-1.backup."*
|
||||
echo "✓ Cleanup complete"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Run all tests
|
||||
main() {
|
||||
setup_test_env
|
||||
|
||||
local failed=0
|
||||
|
||||
test_basic_migration || ((failed++))
|
||||
test_skip_strategy || ((failed++))
|
||||
test_overwrite_strategy || ((failed++))
|
||||
test_backup_strategy || ((failed++))
|
||||
test_dry_run || ((failed++))
|
||||
|
||||
cleanup
|
||||
|
||||
echo "========================================"
|
||||
echo " TEST RESULTS"
|
||||
echo "========================================"
|
||||
if [[ $failed -eq 0 ]]; then
|
||||
echo "✓ All tests passed!"
|
||||
exit 0
|
||||
else
|
||||
echo "✗ $failed test(s) failed"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user