summaryrefslogtreecommitdiff
path: root/scripts/testing/lib/logging.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/testing/lib/logging.sh')
-rwxr-xr-xscripts/testing/lib/logging.sh151
1 files changed, 151 insertions, 0 deletions
diff --git a/scripts/testing/lib/logging.sh b/scripts/testing/lib/logging.sh
new file mode 100755
index 0000000..eda9eb1
--- /dev/null
+++ b/scripts/testing/lib/logging.sh
@@ -0,0 +1,151 @@
+#!/bin/bash
+# Logging utilities for archsetup testing
+# Author: Craig Jennings <craigmartinjennings@gmail.com>
+# License: GNU GPLv3
+
+# Global log file (set by calling script)
+LOGFILE="${LOGFILE:-/tmp/archsetup-test.log}"
+
+# Initialize logging
+init_logging() {
+ local logfile="$1"
+ LOGFILE="$logfile"
+
+ # Create log directory if it doesn't exist
+ mkdir -p "$(dirname "$LOGFILE")"
+
+ # Initialize log file
+ echo "=== Test Log Started: $(date +'%Y-%m-%d %H:%M:%S') ===" > "$LOGFILE"
+ echo "" >> "$LOGFILE"
+}
+
+# Log message (to file and optionally stdout)
+log() {
+ local message="$1"
+ local timestamp
+ timestamp=$(date +'%Y-%m-%d %H:%M:%S')
+ echo "[$timestamp] $message" >> "$LOGFILE"
+}
+
+# Info message
+info() {
+ local message="$1"
+ echo "[i] $message"
+ log "INFO: $message"
+}
+
+# Success message
+success() {
+ local message="$1"
+ echo "[✓] $message"
+ log "SUCCESS: $message"
+}
+
+# Warning message
+warn() {
+ local message="$1"
+ echo "[!] $message"
+ log "WARNING: $message"
+}
+
+# Error message
+error() {
+ local message="$1"
+ echo "[✗] $message" >&2
+ log "ERROR: $message"
+}
+
+# Fatal error (exits script)
+fatal() {
+ local message="$1"
+ local exit_code="${2:-1}"
+ echo "[✗] FATAL: $message" >&2
+ log "FATAL: $message (exit code: $exit_code)"
+ exit "$exit_code"
+}
+
+# Section header
+section() {
+ local title="$1"
+ echo ""
+ echo "=== $title ==="
+ log "=== $title ==="
+}
+
+# Step message
+step() {
+ local message="$1"
+ echo " -> $message"
+ log " STEP: $message"
+}
+
+# Progress indicator (for long-running operations)
+progress() {
+ local message="$1"
+ echo " ... $message"
+ log " PROGRESS: $message"
+}
+
+# Clear progress line and show completion
+complete() {
+ local message="$1"
+ echo " [✓] $message"
+ log " COMPLETE: $message"
+}
+
+# Show command being executed (useful for debugging)
+show_cmd() {
+ local cmd="$1"
+ echo "$ $cmd"
+ log "CMD: $cmd"
+}
+
+# Separator line
+separator() {
+ echo "----------------------------------------"
+}
+
+# Summary statistics
+summary() {
+ local passed="$1"
+ local failed="$2"
+ local total=$((passed + failed))
+
+ echo ""
+ separator
+ section "Test Summary"
+ echo " Total: $total"
+ echo " Passed: $passed"
+ echo " Failed: $failed"
+ separator
+ echo ""
+
+ log "=== Test Summary ==="
+ log "Total: $total, Passed: $passed, Failed: $failed"
+}
+
+# Timer utilities
+declare -A TIMERS
+
+start_timer() {
+ local name="${1:-default}"
+ TIMERS[$name]=$(date +%s)
+ log "TIMER START: $name"
+}
+
+stop_timer() {
+ local name="${1:-default}"
+ local start=${TIMERS[$name]}
+ local end=$(date +%s)
+ local duration=$((end - start))
+ local mins=$((duration / 60))
+ local secs=$((duration % 60))
+
+ if [ $mins -gt 0 ]; then
+ echo " Time: ${mins}m ${secs}s"
+ log "TIMER STOP: $name (${mins}m ${secs}s)"
+ else
+ echo " Time: ${secs}s"
+ log "TIMER STOP: $name (${secs}s)"
+ fi
+}