#!/usr/bin/env nu # AWS Provider Test Suite Runner # Orchestrates unit and integration tests def main [] { print "╔════════════════════════════════════════════════════════════════════╗" print "║ AWS Provider Test Suite (Mock Mode) ║" print "║ ║" print "║ Unit Tests (14) + Integration Tests (37) = Total 51 Tests ║" print "╚════════════════════════════════════════════════════════════════════╝" print "" let test_start = (date now | into int) # Run unit tests print "▶ Running Unit Tests..." print "" let unit_result = (nu ($env.PROVISIONING)/extensions/providers/aws/tests/unit/test_utils.nu) print "" # Run integration tests - API Client print "▶ Running Integration Tests (API Client)..." print "" let api_result = (nu ($env.PROVISIONING)/extensions/providers/aws/tests/integration/test_api_client.nu) print "" # Run integration tests - Server Lifecycle print "▶ Running Integration Tests (Server Lifecycle)..." print "" let lifecycle_result = (nu ($env.PROVISIONING)/extensions/providers/aws/tests/integration/test_server_lifecycle.nu) print "" # Run integration tests - Pricing print "▶ Running Integration Tests (Pricing)..." print "" let pricing_result = (nu ($env.PROVISIONING)/extensions/providers/aws/tests/integration/test_pricing.nu) print "" let test_end = (date now | into int) let elapsed_seconds = ($test_end - $test_start) # Aggregate results let unit_passed = ($unit_result | get -o passed) let unit_failed = ($unit_result | get -o failed) let api_passed = ($api_result | get -o passed) let api_failed = ($api_result | get -o failed) let lifecycle_passed = ($lifecycle_result | get -o passed) let lifecycle_failed = ($lifecycle_result | get -o failed) let pricing_passed = ($pricing_result | get -o passed) let pricing_failed = ($pricing_result | get -o failed) let total_passed = ($unit_passed + $api_passed + $lifecycle_passed + $pricing_passed) let total_failed = ($unit_failed + $api_failed + $lifecycle_failed + $pricing_failed) let total_tests = ($total_passed + $total_failed) # Print summary print "═══════════════════════════════════════════════════════════════════" print "" print "TEST SUMMARY" print "" print $"Unit Tests: ($unit_passed) passed, ($unit_failed) failed" print $"API Client Tests: ($api_passed) passed, ($api_failed) failed" print $"Server Lifecycle Tests: ($lifecycle_passed) passed, ($lifecycle_failed) failed" print $"Pricing Tests: ($pricing_passed) passed, ($pricing_failed) failed" print "" print "─────────────────────────────────────────────────────────────────────" print "" if ($total_failed == 0) { print "✅ ALL TESTS PASSED" } else { print $"⚠️ SOME TESTS FAILED: ($total_failed) failures" } print "" print $"Total: ($total_passed) passed, ($total_failed) failed (($total_tests) total)" print $"Execution Time: ($elapsed_seconds)s" print "" # Return aggregated results { unit: $unit_result, api_client: $api_result, server_lifecycle: $lifecycle_result, pricing: $pricing_result, total_passed: $total_passed, total_failed: $total_failed, total: $total_tests, elapsed_seconds: $elapsed_seconds, success: ($total_failed == 0) } } let results = (main) # Exit with appropriate code if $results.success { exit 0 } else { exit 1 }