Trilltechnician 3a07f01b97 feat(testing): Add comprehensive testing suite with performance analysis
## Overview
Add complete testing infrastructure for all Bash Buddy operating modes
with automated testing, performance benchmarking, and detailed reporting.

## Features Added

### Test Framework
- Modular testing utilities (test-framework.sh)
- Performance timing and benchmarking
- JSON/Markdown/HTML report generation
- Color-coded output and statistics

### Test Suites
1. Non-Interactive Modes (test-all-modes.sh)
   - 45+ test cases covering all modes
   - Help, ask, task, category, explain, direct lookup, AI
   - Error handling and edge cases
   - Performance benchmarks (10 iterations)

2. Interactive Mode (test-interactive-mode.sh)
   - Automated testing with expect
   - Command selection and filtering
   - Startup performance analysis

3. Performance Analysis (analyze-performance.sh)
   - Historical comparison
   - Benchmark aggregation
   - Report generation (MD, HTML, JSON)

### Master Runner
- run-all-tests.sh: One-command test execution
- Pre-flight checks
- CI/CD integration
- Comprehensive reporting

## Test Coverage
-  All 10 operating modes
-  45+ test cases
-  Performance benchmarks
-  Error conditions
-  Interactive automation

## Performance Results
All targets met or exceeded:
- Database search: ~50ms (target <100ms)
- Category browse: ~30ms (target <100ms)
- Direct lookup: ~100ms (target <200ms)
- Interactive: ~50ms (target <100ms)

## Documentation
- Comprehensive README.md in tests/
- TESTING-SUITE.md with full PR details
- CI/CD integration examples
- Troubleshooting guide

## Usage
```bash
cd tests/
./run-all-tests.sh
```

## Impact
- No breaking changes
- Pure addition in tests/ directory
- Opt-in testing infrastructure
- CI/CD ready

Closes: Testing infrastructure requirement
Related: v2.1.0 release
2025-10-28 00:32:22 -07:00
2025-10-27 20:19:45 -07:00
2025-10-27 20:19:45 -07:00

Bash Buddy

🚀 CLI assistant for impromptu bash scripting help

Description

Interactive bash command helper that uses fzf to browse common bash commands and their options. Perfect for when you need a quick reminder of command flags and usage without digging through man pages.

Features

  • 🔍 Interactive Search - Browse commands with fzf fuzzy finder
  • 📖 Command Descriptions - Clear explanations for each command
  • 🎯 Flag Filtering - Search for specific command options
  • 🎨 Color-Coded Output - Easy-to-read terminal output
  • 📚 Smart Help - Works with both built-in and external commands
  • Quick Access - Fast command reference at your fingertips

Dependencies

# fzf - Fuzzy finder (required)
sudo apt install fzf      # Ubuntu/Debian
brew install fzf          # macOS
sudo pacman -S fzf        # Arch

Installation

# Clone the repository
git clone http://localhost:3030/trill-technician/bash-buddy.git
cd bash-buddy

# Make executable
chmod +x bash-helper.sh

# Optional: Install system-wide
sudo cp bash-helper.sh /usr/local/bin/bash-helper

# Or add to your PATH
echo 'export PATH="$HOME/bash-buddy:$PATH"' >> ~/.bashrc
source ~/.bashrc

Usage

./bash-helper.sh

Workflow

  1. Launch - Run the script
  2. Browse - Use arrow keys to navigate commands
  3. Select - Press Enter to choose a command
  4. Filter - Optionally enter a keyword to filter flags
  5. View - See all available flags for the command

Example Session

$ ./bash-helper.sh

> ls:List directory contents
  cd:Change the current directory
  pwd:Print the name of the current working directory
  cp:Copy files and directories
  mv:Move or rename files and directories
  ...

Command: ls
Description: List directory contents
Filter flags (optional): size

    Flags for ls:
       -s, --size
              print the allocated size of each file, in blocks
       -S     sort by file size, largest first
       --block-size=SIZE
              with -l, scale sizes by SIZE when printing them

Included Commands

The script includes help for these common bash commands:

Command Description
ls List directory contents
cd Change the current directory
pwd Print working directory
cp Copy files and directories
mv Move or rename files
rm Remove files or directories
mkdir Create directories
rmdir Remove empty directories
grep Search text patterns
find Search for files
echo Display text

Customization

Adding More Commands

Edit the COMMANDS array in bash-helper.sh:

COMMANDS=(
  "command-name:Description of what it does"
  "wget:Download files from the web"
  "curl:Transfer data with URLs"
  "tar:Archive files"
  # Add your own...
)

Changing Colors

Modify the color variables at the top of the show_flags() function:

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m'  # No Color

How It Works

  1. Command List - Defines an array of common bash commands with descriptions
  2. FZF Selection - Presents commands in an interactive fuzzy finder
  3. Help Extraction - Retrieves flag information from:
    • Built-in commands using help
    • External commands using man pages
  4. Filtered Output - Optionally filters flags based on your search term

Tips

  • Use partial matching in fzf (type any part of command name)
  • Filter flags to find specific options quickly
  • Add your most-used commands to the array
  • Combine with aliases for even faster access
# Add to ~/.bashrc
alias bh='bash-helper.sh'

Contributing

Feel free to:

  • Add more commands to the default list
  • Improve flag extraction logic
  • Enhance the user interface
  • Fix bugs or improve documentation

License

MIT License - feel free to modify and distribute

Author

Created as a quick reference tool for bash command-line work


Pro Tip: Bookmark common flag patterns you discover, or add them as comments in the script for quick reference!

S
Description
Token-friendly interactive man-page / command flag browser (fzf-based)
Readme 3.9 MiB
Languages
Shell 100%