test_integration.pyโข4.31 kB
#!/usr/bin/env python3
"""Test script to verify integration test logic works locally."""
import os
import subprocess
import sys
def test_container_build():
"""Test container build process (Docker/Podman)."""
print("๐จ Testing container build...")
# Try Podman first, then Docker
for cmd in ["podman", "docker"]:
try:
result = subprocess.run(
[
cmd,
"build",
"-f",
"docker/Dockerfile",
"-t",
"oparl-mcp-server:test",
".",
],
capture_output=True,
text=True,
check=True,
)
print(f"โ
Container build successful using {cmd}")
return True, cmd
except (subprocess.CalledProcessError, FileNotFoundError):
continue
print("โ Container build failed: Neither podman nor docker found")
return False, None
def test_container_run(container_cmd):
"""Test container run process."""
print("๐ Testing container run...")
try:
result = subprocess.run(
[
container_cmd,
"run",
"--rm",
"--name",
"oparl-test",
"oparl-mcp-server:test",
],
capture_output=True,
text=True,
check=True,
)
print("โ
Container run successful")
print("Container output:")
print(result.stdout)
return True
except subprocess.CalledProcessError as e:
print(f"โ Container run failed: {e}")
print(f"STDOUT: {e.stdout}")
print(f"STDERR: {e.stderr}")
return False
def test_python_imports():
"""Test Python imports work correctly."""
print("๐ Testing Python imports...")
try:
# Test in virtual environment
result = subprocess.run(
[
"python",
"-c",
"from oparl_mcp import OParlMCPServer, OParlConfig; "
"config = OParlConfig(); "
"server = OParlMCPServer(config); "
"info = server.get_server_info(); "
"print('โ
Python imports successful'); "
'print(f\'Server: {info["name"]} v{info["version"]}\')',
],
capture_output=True,
text=True,
check=True,
)
print("โ
Python imports successful")
print("Python output:")
print(result.stdout)
return True
except subprocess.CalledProcessError as e:
print(f"โ Python imports failed: {e}")
print(f"STDOUT: {e.stdout}")
print(f"STDERR: {e.stderr}")
return False
def main():
"""Run all integration tests."""
print("๐งช Running Integration Tests")
print("=" * 50)
# Check if we're in a virtual environment
if not hasattr(sys, "real_prefix") and not (
hasattr(sys, "base_prefix") and sys.base_prefix != sys.prefix
):
print("โ ๏ธ Warning: Not running in a virtual environment")
# First test Python imports
print(f"\n๐ Running Python Imports...")
python_success = test_python_imports()
results = [("Python Imports", python_success)]
# Then test container build and run
print(f"\n๐ Running Container Build...")
build_success, container_cmd = test_container_build()
results.append(("Container Build", build_success))
if build_success and container_cmd:
print(f"\n๐ Running Container Run...")
run_success = test_container_run(container_cmd)
results.append(("Container Run", run_success))
else:
results.append(("Container Run", False))
print("\n" + "=" * 50)
print("๐ Test Results:")
for test_name, success in results:
status = "โ
PASS" if success else "โ FAIL"
print(f" {test_name}: {status}")
all_passed = all(success for _, success in results)
if all_passed:
print("\n๐ All integration tests passed!")
return 0
else:
print("\n๐ฅ Some integration tests failed!")
return 1
if __name__ == "__main__":
sys.exit(main())