#!/usr/bin/env bash set -euo pipefail # Test script to verify all tools are working properly in the toolbox-template IMAGE_NAME="${IMAGE_NAME_OVERRIDE:-tsysdevstack-toolboxstack-{{toolbox_name}}}" echo "๐Ÿงช Testing all tools in ${IMAGE_NAME}" # Function to test a command test_cmd() { local cmd="$1" local description="$2" echo -n "Testing ${cmd} (${description})... " if docker run --rm "${IMAGE_NAME}" "${cmd}" --version >/dev/null 2>&1; then echo "โœ… PASS" return 0 else echo "โŒ FAIL" return 1 fi } # Function to test a command with specific args test_cmd_args() { local cmd="$1" local args="$2" local description="$3" echo -n "Testing ${cmd} ${args} (${description})... " if docker run --rm "${IMAGE_NAME}" "${cmd}" ${args} >/dev/null 2>&1; then echo "โœ… PASS" return 0 else echo "โŒ FAIL" return 1 fi } # Counter for tracking results PASSED=0 FAILED=0 # Test core tools inherited from base echo "๐Ÿ” Testing core tools inherited from base..." test_cmd "zsh" "Z shell" && ((PASSED++)) || ((FAILED++)) test_cmd "git" "Git version control" && ((PASSED++)) || ((FAILED++)) test_cmd "curl" "cURL utility" && ((PASSED++)) || ((FAILED++)) test_cmd "jq" "JSON processor" && ((PASSED++)) || ((FAILED++)) test_cmd "fish" "Fish shell" && ((PASSED++)) || ((FAILED++)) test_cmd "fzf" "Fuzzy finder" && ((PASSED++)) || ((FAILED++)) test_cmd "bat" "Cat clone with wings" && ((PASSED++)) || ((FAILED++)) test_cmd "fd" "Simple, fast alternative to find" && ((PASSED++)) || ((FAILED++)) test_cmd "rg" "Ripgrep - line-oriented search tool" && ((PASSED++)) || ((FAILED++)) test_cmd "htop" "Interactive process viewer" && ((PASSED++)) || ((FAILED++)) test_cmd "btop" "Modern and colorful terminal monitor" && ((PASSED++)) || ((FAILED++)) # Test aqua installed tools inherited from base echo "๐Ÿ”ง Testing aqua installed tools inherited from base..." test_cmd "gh" "GitHub CLI" && ((PASSED++)) || ((FAILED++)) test_cmd "lazygit" "Simple terminal UI for git commands" && ((PASSED++)) || ((FAILED++)) test_cmd "direnv" "Unclutter your .profile" && ((PASSED++)) || ((FAILED++)) test_cmd "delta" "Syntax-highlighting pager for git, diff, and grep output" && ((PASSED++)) || ((FAILED++)) test_cmd "zoxide" "Smarter cd command" && ((PASSED++)) || ((FAILED++)) test_cmd "just" "Just a command runner" && ((PASSED++)) || ((FAILED++)) test_cmd "yq" "Portable command-line YAML processor" && ((PASSED++)) || ((FAILED++)) test_cmd "xh" "Friendly and fast tool for sending HTTP requests" && ((PASSED++)) || ((FAILED++)) test_cmd "curlie" "The power of curl, the ease of use of httpie" && ((PASSED++)) || ((FAILED++)) test_cmd "chezmoi" "Manage your dotfiles across multiple machines" && ((PASSED++)) || ((FAILED++)) test_cmd "shfmt" "Shell formatter" && ((PASSED++)) || ((FAILED++)) test_cmd "shellcheck" "Shell script analysis tool" && ((PASSED++)) || ((FAILED++)) test_cmd "hadolint" "Dockerfile linter" && ((PASSED++)) || ((FAILED++)) test_cmd "uv" "Python package installer and resolver" && ((PASSED++)) || ((FAILED++)) test_cmd "watchexec" "Execute commands in response to file modifications" && ((PASSED++)) || ((FAILED++)) test_cmd "tea" "Gitea CLI" && ((PASSED++)) || ((FAILED++)) # Test AI CLI tools inherited from base echo "๐Ÿค– Testing AI CLI tools inherited from base..." test_cmd_args "code" "--version" "just-every/code AI CLI" && ((PASSED++)) || ((FAILED++)) test_cmd_args "qwen" "--version" "QwenLM/qwen-code AI CLI" && ((PASSED++)) || ((FAILED++)) test_cmd_args "gemini" "--version" "google-gemini/gemini-cli AI CLI" && ((PASSED++)) || ((FAILED++)) test_cmd_args "codex" "--version" "openai/codex AI CLI" && ((PASSED++)) || ((FAILED++)) test_cmd_args "opencode" "--version" "sst/opencode AI CLI" && ((PASSED++)) || ((FAILED++)) # Test additional tools inherited from base echo "๐Ÿงฐ Testing additional tools inherited from base..." test_cmd "starship" "Cross-shell prompt" && ((PASSED++)) || ((FAILED++)) test_cmd "mise" "Polyglot runtime manager" && ((PASSED++)) || ((FAILED++)) test_cmd_args "aqua" "--version" "Declarative CLI Version Manager" && ((PASSED++)) || ((FAILED++)) # Summary echo "" echo "๐Ÿ“Š Test Results:" echo " Passed: ${PASSED}" echo " Failed: ${FAILED}" echo " Total: $((PASSED + FAILED))" if [[ "${FAILED}" -eq 0 ]]; then echo "๐ŸŽ‰ All tests passed!" exit 0 else echo "๐Ÿ’ฅ ${FAILED} tests failed!" exit 1 fi