Files
EMS-ESP32/scripts/build_run_test.py

46 lines
1.5 KiB
Python
Executable File

import os
import shutil
import subprocess
import sys
Import("env")
# Import the streaming function from the separate module
from run_executable import run_with_streaming_input
def get_python_executable():
"""Get the appropriate Python executable for the current platform."""
# Try different Python executable names
python_names = ['python3', 'python', 'py']
for name in python_names:
if shutil.which(name):
return name
# Fallback to sys.executable if available
return sys.executable
def build_run_test(source, target, env):
# Get the executable path
program_path = source[0].get_abspath()
# Get output file and test command from environment variable or use defaults
output_file = os.path.join("docs", env.GetProjectOption("custom_output_file", "dump_default_output.txt"))
test_command = env.GetProjectOption("custom_test_command", "test entity_dump")
# run the test command and save the output to the output file
run_with_streaming_input(program_path, test_command, output_file)
# if we have a post command defined run it
post_script = env.GetProjectOption("custom_post_script", None)
if post_script:
print(f"Running post script: {post_script}")
python_exe = get_python_executable()
subprocess.run([python_exe, post_script, program_path], check=True)
env.AddCustomTarget(
"build",
"$BUILD_DIR/${PROGNAME}$PROGSUFFIX",
build_run_test
)