Skip to content

Commit 6705506

Browse files
committed
If fixing end-to-end tests exceeds max retries limit, we try one more time by starting from scratch (regenerating tests).
1 parent ae527f4 commit 6705506

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

codeplain_REST_api.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def refactor_source_files_if_needed(self, files_to_check, existing_files_content
154154
return self.post_request(endpoint_url, headers, payload)
155155

156156

157-
def render_e2e_tests(self, frid, plain_source_tree, linked_resources, existing_files_content):
157+
def render_e2e_tests(self, frid, functional_requirement_id, plain_source_tree, linked_resources, existing_files_content):
158158
endpoint_url = f"{self.api_url}/render_e2e_tests"
159159
headers = {
160160
"X-API-Key": self.api_key,
@@ -163,6 +163,7 @@ def render_e2e_tests(self, frid, plain_source_tree, linked_resources, existing_f
163163

164164
payload = {
165165
"frid": frid,
166+
"functional_requirement_id": functional_requirement_id,
166167
"plain_source_tree": plain_source_tree,
167168
"linked_resources": linked_resources,
168169
"existing_files_content": existing_files_content

plain2code.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ def run_unittests(args, codeplainAPI, frid, plain_source_tree, linked_resources,
130130
return existing_files, changed_files
131131

132132

133-
def generate_end_to_end_tests(args, codeplainAPI, frid, plain_source_tree, linked_resources, existing_files, e2e_tests_folder_name):
134-
specifications = plain_spec.get_specifications_for_frid(plain_source_tree, frid)
133+
def generate_end_to_end_tests(args, codeplainAPI, frid, functional_requirement_id, plain_source_tree, linked_resources, existing_files, e2e_tests_folder_name):
134+
specifications = plain_spec.get_specifications_for_frid(plain_source_tree, functional_requirement_id)
135135
if args.verbose:
136136
# TODO: Print the definitions.
137137
print(f"\nImplementing test requirements:")
@@ -158,7 +158,7 @@ def generate_end_to_end_tests(args, codeplainAPI, frid, plain_source_tree, linke
158158

159159
existing_files_content = file_utils.get_existing_files_content(args.build_folder, existing_files)
160160

161-
response_files = codeplainAPI.render_e2e_tests(frid, plain_source_tree, linked_resources, existing_files_content)
161+
response_files = codeplainAPI.render_e2e_tests(frid, functional_requirement_id, plain_source_tree, linked_resources, existing_files_content)
162162

163163
e2e_tests_files = file_utils.store_response_files(e2e_tests_folder_name, response_files, [])
164164

@@ -172,6 +172,7 @@ def generate_end_to_end_tests(args, codeplainAPI, frid, plain_source_tree, linke
172172

173173

174174
def run_e2e_tests(args, codeplainAPI, frid, functional_requirement_id, plain_source_tree, linked_resources, existing_files, existing_files_content, code_diff, e2e_tests_folder_name):
175+
recreated_e2e_tests = False
175176
e2e_test_fix_count = 0
176177
implementation_fix_count = 1
177178
e2e_tests_files = file_utils.list_all_text_files(e2e_tests_folder_name)
@@ -183,8 +184,24 @@ def run_e2e_tests(args, codeplainAPI, frid, functional_requirement_id, plain_sou
183184

184185
e2e_tests_issue = execute_test_script(args.e2e_tests_script, [args.build_folder, e2e_tests_folder_name], args.verbose)
185186

186-
if not e2e_tests_issue or e2e_test_fix_count > MAX_E2E_TEST_FIX_ATTEMPTS:
187+
if not e2e_tests_issue:
187188
break
189+
190+
if e2e_test_fix_count > MAX_E2E_TEST_FIX_ATTEMPTS:
191+
print(f"End-to-end tests script {args.e2e_tests_script} for {e2e_tests_folder_name} still failed after {e2e_test_fix_count - 1} attemps at fixing issues.")
192+
if recreated_e2e_tests:
193+
print("We've already tried to fix the issue by recreating the end-to-end tests but tests still fail. Please fix the issues manually.")
194+
sys.exit(1)
195+
196+
print("Recreating end-to-end tests.")
197+
198+
generate_end_to_end_tests(args, codeplainAPI, frid, functional_requirement_id, plain_source_tree, linked_resources, existing_files, e2e_tests_folder_name)
199+
200+
recreated_e2e_tests = True
201+
e2e_test_fix_count = 0
202+
implementation_fix_count = 1
203+
e2e_tests_files = file_utils.list_all_text_files(e2e_tests_folder_name)
204+
continue
188205

189206
e2e_tests_files_content = file_utils.get_existing_files_content(e2e_tests_folder_name, e2e_tests_files)
190207

@@ -217,10 +234,6 @@ def run_e2e_tests(args, codeplainAPI, frid, functional_requirement_id, plain_sou
217234
except Exception as e:
218235
print(f"Error fixing end-to-end tests issue: {str(e)}")
219236
sys.exit(1)
220-
221-
if e2e_tests_issue:
222-
print(f"End-to-end tests script {args.e2e_tests_script} for {e2e_tests_folder_name} still failed after {e2e_test_fix_count - 1} attemps at fixing issues. Please fix the issues manually.")
223-
sys.exit(1)
224237

225238
return [False, existing_files]
226239

@@ -256,7 +269,7 @@ def end_to_end_testing(args, codeplainAPI, frid, plain_source_tree, linked_resou
256269
else:
257270
e2e_tests_folder_name = None
258271

259-
e2e_tests[frid] = generate_end_to_end_tests(args, codeplainAPI, frid, plain_source_tree, linked_resources, existing_files, e2e_tests_folder_name)
272+
e2e_tests[frid] = generate_end_to_end_tests(args, codeplainAPI, frid, frid, plain_source_tree, linked_resources, existing_files, e2e_tests_folder_name)
260273

261274
e2e_tests_folder_name = e2e_tests[functional_requirement_id]['folder_name']
262275

0 commit comments

Comments
 (0)