Skip to content

Commit ae527f4

Browse files
committed
There should be a timeout if test script is not ending in allotted maximum time.
1 parent 0af010a commit ae527f4

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

plain2code.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import plain_spec
1111
import file_utils
1212

13+
TEST_SCRIPT_EXECUTION_TIMEOUT = 120 # 120 seconds
14+
1315
CLAUDE_API_KEY = os.getenv('CLAUDE_API_KEY')
1416
DEFAULT_BUILD_FOLDER = 'build'
1517
DEFAULT_E2E_TESTS_FOLDER = "e2e_tests"
@@ -67,22 +69,27 @@ def print_response_files_summary(response_files):
6769

6870

6971
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."
8693

8794
def run_unittests(args, codeplainAPI, frid, plain_source_tree, linked_resources, existing_files):
8895

0 commit comments

Comments
 (0)