- Update ToolboxStack/output/toolbox-base/test.sh with enhanced testing capabilities - Add ToolboxStack/output/toolbox-base/AUDIT_CHECKLIST.md with security audit guidelines - Add ToolboxStack/output/toolbox-base/security-audit.sh with security auditing tools - Update ToolboxStack/output/toolbox-template/test.sh with enhanced testing capabilities - Add ToolboxStack/output/toolbox-template/AUDIT_CHECKLIST.md with security audit guidelines - Add ToolboxStack/output/toolbox-template/security-audit.sh with security auditing tools This enhances both the base and template developer environments with security auditing capabilities.
		
			
				
	
	
		
			112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| set -euo pipefail
 | |
| 
 | |
| # Test script to verify all tools are working properly in the toolbox-base image
 | |
| 
 | |
| IMAGE_NAME="${IMAGE_NAME_OVERRIDE:-tsysdevstack-toolboxstack-toolbox-base:release-current}"
 | |
| 
 | |
| 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
 | |
| echo "🔍 Testing core tools..."
 | |
| 
 | |
| 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
 | |
| echo "🔧 Testing aqua installed tools..."
 | |
| 
 | |
| 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
 | |
| echo "🤖 Testing AI CLI tools..."
 | |
| 
 | |
| 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
 | |
| echo "🧰 Testing additional tools..."
 | |
| 
 | |
| 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 |