un-inception/tests/run_compiled_tests.sh

224 lines
6.7 KiB
Bash
Executable file

#!/bin/bash
# This is free software for the public good of a permacomputer hosted at
# permacomputer.com, an always-on computer by the people, for the people.
# One which is durable, easy to repair, & distributed like tap water
# for machine learning intelligence.
#
# The permacomputer is community-owned infrastructure optimized around
# four values:
#
# TRUTH First principles, math & science, open source code freely distributed
# FREEDOM Voluntary partnerships, freedom from tyranny & corporate control
# HARMONY Minimal waste, self-renewing systems with diverse thriving connections
# LOVE Be yourself without hurting others, cooperation through natural law
#
# This software contributes to that vision by enabling code execution across 42+ programming languages through a unified interface, accessible to all.
# Code is seeds to sprout on any abandoned technology.
# Run all UN CLI Inception tests for compiled languages
# Usage: ./run_compiled_tests.sh
set -e
echo "=========================================="
echo "UN CLI Inception Compiled Languages Test Runner"
echo "=========================================="
echo ""
# Check for API auth keys
if [ -z "$UNSANDBOX_PUBLIC_KEY" ] || [ -z "$UNSANDBOX_SECRET_KEY" ]; then
if [ -z "$UNSANDBOX_API_KEY" ]; then
echo "WARNING: UNSANDBOX authentication not configured"
echo "API and functional tests will be skipped"
echo "Set HMAC keys: export UNSANDBOX_PUBLIC_KEY=... UNSANDBOX_SECRET_KEY=..."
echo "Or legacy key: export UNSANDBOX_API_KEY=..."
echo ""
fi
fi
cd "$(dirname "$0")"
# Track results
TOTAL_TESTS=0
PASSED_TESTS=0
FAILED_TESTS=0
SKIPPED_TESTS=0
# Test Go
echo ">>> Testing Go implementation..."
TOTAL_TESTS=$((TOTAL_TESTS + 1))
if go build -o test_un_go test_un_go.go 2>/dev/null; then
if ./test_un_go >/dev/null 2>&1; then
echo "✓ Go tests PASSED"
PASSED_TESTS=$((PASSED_TESTS + 1))
else
echo "✗ Go tests FAILED"
FAILED_TESTS=$((FAILED_TESTS + 1))
fi
else
echo "⊘ Go tests SKIPPED (compilation failed)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
echo ""
# Test Rust
echo ">>> Testing Rust implementation..."
TOTAL_TESTS=$((TOTAL_TESTS + 1))
if command -v rustc >/dev/null 2>&1; then
if rustc test_un_rs.rs -o test_un_rs 2>/dev/null; then
if ./test_un_rs >/dev/null 2>&1; then
echo "✓ Rust tests PASSED"
PASSED_TESTS=$((PASSED_TESTS + 1))
else
echo "✗ Rust tests FAILED"
FAILED_TESTS=$((FAILED_TESTS + 1))
fi
else
echo "⊘ Rust tests SKIPPED (compilation failed - may need cargo for dependencies)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
else
echo "⊘ Rust tests SKIPPED (rustc not found)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
echo ""
# Test C
echo ">>> Testing C implementation..."
TOTAL_TESTS=$((TOTAL_TESTS + 1))
if gcc -o test_un_c test_un_c.c -lcurl 2>/dev/null; then
if ./test_un_c >/dev/null 2>&1; then
echo "✓ C tests PASSED"
PASSED_TESTS=$((PASSED_TESTS + 1))
else
echo "✗ C tests FAILED"
FAILED_TESTS=$((FAILED_TESTS + 1))
fi
else
echo "⊘ C tests SKIPPED (compilation failed)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
echo ""
# Test C++
echo ">>> Testing C++ implementation..."
TOTAL_TESTS=$((TOTAL_TESTS + 1))
if g++ -o test_un_cpp test_un_cpp.cpp -lcurl 2>/dev/null; then
if ./test_un_cpp >/dev/null 2>&1; then
echo "✓ C++ tests PASSED"
PASSED_TESTS=$((PASSED_TESTS + 1))
else
echo "✗ C++ tests FAILED"
FAILED_TESTS=$((FAILED_TESTS + 1))
fi
else
echo "⊘ C++ tests SKIPPED (compilation failed)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
echo ""
# Test D
echo ">>> Testing D implementation..."
TOTAL_TESTS=$((TOTAL_TESTS + 1))
if command -v dmd >/dev/null 2>&1; then
if dmd test_un_d.d -of=test_un_d 2>/dev/null; then
if ./test_un_d >/dev/null 2>&1; then
echo "✓ D tests PASSED"
PASSED_TESTS=$((PASSED_TESTS + 1))
else
echo "✗ D tests FAILED"
FAILED_TESTS=$((FAILED_TESTS + 1))
fi
else
echo "⊘ D tests SKIPPED (compilation failed)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
else
echo "⊘ D tests SKIPPED (dmd not found)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
echo ""
# Test Zig
echo ">>> Testing Zig implementation..."
TOTAL_TESTS=$((TOTAL_TESTS + 1))
if command -v zig >/dev/null 2>&1; then
if zig build-exe test_un_zig.zig -O ReleaseFast 2>/dev/null; then
if ./test_un_zig >/dev/null 2>&1; then
echo "✓ Zig tests PASSED"
PASSED_TESTS=$((PASSED_TESTS + 1))
else
echo "✗ Zig tests FAILED"
FAILED_TESTS=$((FAILED_TESTS + 1))
fi
else
echo "⊘ Zig tests SKIPPED (compilation failed)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
else
echo "⊘ Zig tests SKIPPED (zig not found)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
echo ""
# Test Nim
echo ">>> Testing Nim implementation..."
TOTAL_TESTS=$((TOTAL_TESTS + 1))
if command -v nim >/dev/null 2>&1; then
if nim c -d:release --hints:off test_un_nim.nim 2>/dev/null; then
if ./test_un_nim >/dev/null 2>&1; then
echo "✓ Nim tests PASSED"
PASSED_TESTS=$((PASSED_TESTS + 1))
else
echo "✗ Nim tests FAILED"
FAILED_TESTS=$((FAILED_TESTS + 1))
fi
else
echo "⊘ Nim tests SKIPPED (compilation failed)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
else
echo "⊘ Nim tests SKIPPED (nim not found)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
echo ""
# Test V
echo ">>> Testing V implementation..."
TOTAL_TESTS=$((TOTAL_TESTS + 1))
if command -v v >/dev/null 2>&1; then
if v test_un_v.v -o test_un_v 2>/dev/null; then
if ./test_un_v >/dev/null 2>&1; then
echo "✓ V tests PASSED"
PASSED_TESTS=$((PASSED_TESTS + 1))
else
echo "✗ V tests FAILED"
FAILED_TESTS=$((FAILED_TESTS + 1))
fi
else
echo "⊘ V tests SKIPPED (compilation failed)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
else
echo "⊘ V tests SKIPPED (v not found)"
SKIPPED_TESTS=$((SKIPPED_TESTS + 1))
fi
echo ""
# Summary
echo "=========================================="
echo "Test Summary"
echo "=========================================="
echo "Total tests: $TOTAL_TESTS"
echo "Passed: $PASSED_TESTS"
echo "Failed: $FAILED_TESTS"
echo "Skipped: $SKIPPED_TESTS"
echo "=========================================="
if [ $FAILED_TESTS -gt 0 ]; then
echo "RESULT: SOME TESTS FAILED"
exit 1
else
echo "RESULT: ALL TESTS PASSED (or skipped)"
exit 0
fi