|
10 | 10 | import plain_spec
|
11 | 11 | import file_utils
|
12 | 12 |
|
| 13 | +TEST_SCRIPT_EXECUTION_TIMEOUT = 120 # 120 seconds |
| 14 | + |
13 | 15 | CLAUDE_API_KEY = os.getenv('CLAUDE_API_KEY')
|
14 | 16 | DEFAULT_BUILD_FOLDER = 'build'
|
15 | 17 | DEFAULT_E2E_TESTS_FOLDER = "e2e_tests"
|
@@ -67,22 +69,27 @@ def print_response_files_summary(response_files):
|
67 | 69 |
|
68 | 70 |
|
69 | 71 | def execute_test_script(test_script, scripts_args, verbose):
|
70 |
| - |
71 |
| - result = subprocess.run( |
72 |
| - [file_utils.add_current_path_if_no_path(test_script)] + scripts_args, |
73 |
| - stdout=subprocess.PIPE, |
74 |
| - stderr=subprocess.STDOUT, |
75 |
| - text=True |
76 |
| - ) |
77 |
| - |
78 |
| - if verbose: |
79 |
| - print(f"Test script output (exit code:{result.returncode}):\n{result.stdout}") |
80 |
| - |
81 |
| - if result.returncode != 0: |
82 |
| - return result.stdout |
83 |
| - else: |
84 |
| - return None |
85 |
| - |
| 72 | + try: |
| 73 | + result = subprocess.run( |
| 74 | + [file_utils.add_current_path_if_no_path(test_script)] + scripts_args, |
| 75 | + stdout=subprocess.PIPE, |
| 76 | + stderr=subprocess.STDOUT, |
| 77 | + text=True, |
| 78 | + timeout=TEST_SCRIPT_EXECUTION_TIMEOUT |
| 79 | + ) |
| 80 | + |
| 81 | + if verbose: |
| 82 | + print(f"Test script output (exit code:{result.returncode}):\n{result.stdout}") |
| 83 | + |
| 84 | + if result.returncode != 0: |
| 85 | + return result.stdout |
| 86 | + else: |
| 87 | + return None |
| 88 | + except subprocess.TimeoutExpired: |
| 89 | + if verbose: |
| 90 | + print(f"Test script {test_script} timed out after {TEST_SCRIPT_EXECUTION_TIMEOUT} seconds.") |
| 91 | + |
| 92 | + return f"Tests did not finish in {TEST_SCRIPT_EXECUTION_TIMEOUT} seconds." |
86 | 93 |
|
87 | 94 | def run_unittests(args, codeplainAPI, frid, plain_source_tree, linked_resources, existing_files):
|
88 | 95 |
|
|
0 commit comments