11"""
22Main script to run all SEA connector tests.
33
4- This scriptimports and runs all the individual test modules and displays
4+ This script runs all the individual test modules and displays
55a summary of test results with visual indicators.
66"""
77import os
88import sys
99import logging
10- import importlib . util
11- from typing import Dict , Callable , List ,Tuple
10+ import subprocess
11+ from typing import List ,Tuple
1212
13- # Configure logging
1413logging .basicConfig (level = logging .INFO )
1514logger = logging .getLogger (__name__ )
1615
17- # Define test modules and their main test functions
1816TEST_MODULES = [
1917"test_sea_session" ,
2018"test_sea_sync_query" ,
2321]
2422
2523
26- def load_test_function (module_name :str )-> Callable :
27- """Load a testfunction from a module ."""
24+ def run_test_module (module_name :str )-> bool :
25+ """Run a testmodule and return success status ."""
2826module_path = os .path .join (
2927os .path .dirname (os .path .abspath (__file__ )),"tests" ,f"{ module_name } .py"
3028 )
3129
32- spec = importlib .util .spec_from_file_location (module_name ,module_path )
33- module = importlib .util .module_from_spec (spec )
34- spec .loader .exec_module (module )
30+ # Simply run the module as a script - each module handles its own test execution
31+ result = subprocess .run (
32+ [sys .executable ,module_path ],capture_output = True ,text = True
33+ )
3534
36- # Get the main test function (assuming it starts with "test_")
37- for name in dir (module ):
38- if name .startswith ("test_" )and callable (getattr (module ,name )):
39- # For sync and async query modules, we want the main function that runs both tests
40- if name == f"test_sea_{ module_name .replace ('test_sea_' ,'' )} _exec" :
41- return getattr (module ,name )
35+ # Log the output from the test module
36+ if result .stdout :
37+ for line in result .stdout .strip ().split ("\n " ):
38+ logger .info (line )
4239
43- # Fallback to the first test function found
44- for name in dir (module ):
45- if name .startswith ("test_" )and callable (getattr (module ,name )):
46- return getattr (module ,name )
40+ if result .stderr :
41+ for line in result .stderr .strip ().split ("\n " ):
42+ logger .error (line )
4743
48- raise ValueError ( f"No test function found in module { module_name } " )
44+ return result . returncode == 0
4945
5046
5147def run_tests ()-> List [Tuple [str ,bool ]]:
@@ -54,12 +50,11 @@ def run_tests() -> List[Tuple[str, bool]]:
5450
5551for module_name in TEST_MODULES :
5652try :
57- test_func = load_test_function (module_name )
5853logger .info (f"\n { '=' * 50 } " )
5954logger .info (f"Running test:{ module_name } " )
6055logger .info (f"{ '-' * 50 } " )
6156
62- success = test_func ( )
57+ success = run_test_module ( module_name )
6358results .append ((module_name ,success ))
6459
6560status = "✅ PASSED" if success else "❌ FAILED"