Skip to content

Commit 5eaaf58

Browse files
authored
Fix create_mute_test_issue (#20765)
1 parent 5ba4433 commit 5eaaf58

File tree

2 files changed

+66
-21
lines changed

2 files changed

+66
-21
lines changed

.github/scripts/tests/create_new_muted_ya.py

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -313,8 +313,9 @@ def create_mute_issues(all_tests, file_path, close_issues=True):
313313

314314
# Check and close issues if needed
315315
closed_issues = []
316+
partially_unmuted_issues = []
316317
if close_issues:
317-
closed_issues = close_unmuted_issues(muted_tests_set)
318+
closed_issues, partially_unmuted_issues = close_unmuted_issues(muted_tests_set)
318319

319320
# First, collect all tests into temporary dictionary
320321
for test in all_tests:
@@ -380,25 +381,60 @@ def create_mute_issues(all_tests, file_path, close_issues=True):
380381

381382
# Add closed issues section if any
382383
if closed_issues:
383-
formatted_results.append("CLOSED ISSUES:")
384+
formatted_results.append("🔒 **CLOSED ISSUES**")
385+
formatted_results.append("─────────────────────────────")
386+
formatted_results.append("")
384387
for issue in closed_issues:
385-
formatted_results.append(f"Closed {issue['url']}")
386-
formatted_results.append("Unmuted tests:")
388+
formatted_results.append(f"✅ **Closed** {issue['url']}")
389+
formatted_results.append(" 📝 **Unmuted tests:**")
387390
for test in issue['tests']:
388-
formatted_results.append(f" - {test}")
391+
formatted_results.append(f" • `{test}`")
392+
formatted_results.append("")
393+
394+
# Add partially unmuted issues section if any
395+
if partially_unmuted_issues:
396+
if closed_issues:
397+
formatted_results.append("─────────────────────────────")
398+
formatted_results.append("")
399+
formatted_results.append("🔓 **PARTIALLY UNMUTED ISSUES**")
400+
formatted_results.append("─────────────────────────────")
389401
formatted_results.append("")
390-
formatted_results.append("CREATED ISSUES:")
402+
for issue in partially_unmuted_issues:
403+
formatted_results.append(f"⚠️ **Partially unmuted** {issue['url']}")
404+
formatted_results.append(" 📝 **Unmuted tests:**")
405+
for test in issue['unmuted_tests']:
406+
formatted_results.append(f" • `{test}`")
407+
formatted_results.append(" 🔒 **Still muted tests:**")
408+
for test in issue['still_muted_tests']:
409+
formatted_results.append(f" • `{test}`")
410+
formatted_results.append("")
391411

392-
# Add created issues
393-
current_owner = None
394-
for result in results:
395-
if current_owner != result['owner']:
396-
if formatted_results and formatted_results[-1] != "": # Add blank line between owner groups if last line is not empty
397-
formatted_results.append('')
398-
current_owner = result['owner']
399-
# Add owner header with team URL
400-
formatted_results.append(f"TEAM:@ydb-platform/{current_owner} @https://github.com/orgs/ydb-platform/teams/{current_owner}")
401-
formatted_results.append(result['message'])
412+
# Add created issues section if any
413+
if results:
414+
if closed_issues or partially_unmuted_issues:
415+
formatted_results.append("─────────────────────────────")
416+
formatted_results.append("")
417+
formatted_results.append("🆕 **CREATED ISSUES**")
418+
formatted_results.append("─────────────────────────────")
419+
formatted_results.append("")
420+
421+
# Add created issues
422+
current_owner = None
423+
for result in results:
424+
if current_owner != result['owner']:
425+
if formatted_results and formatted_results[-1] != "":
426+
formatted_results.append('')
427+
formatted_results.append('')
428+
current_owner = result['owner']
429+
# Add owner header with team URL
430+
formatted_results.append(f"👥 **TEAM** @ydb-platform/{current_owner}")
431+
formatted_results.append(f" https://github.com/orgs/ydb-platform/teams/{current_owner}")
432+
formatted_results.append(" ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")
433+
434+
# Extract issue URL and title
435+
issue_url = result['message'].split('url ')[-1]
436+
title = result['message'].split("'")[1]
437+
formatted_results.append(f" 🎯 {issue_url} - `{title}`")
402438

403439
print("\n\n")
404440
print("\n".join(formatted_results))

.github/scripts/tests/update_mute_issues.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -740,10 +740,11 @@ def close_unmuted_issues(muted_tests_set, do_not_close_issues=False):
740740
do_not_close_issues (bool): If True, issues will NOT be closed. If False, issues will be closed.
741741
742742
Returns:
743-
list: List of dictionaries containing information about closed issues
743+
tuple: (closed_issues, partially_unmuted_issues) - lists of dictionaries containing information about closed and partially unmuted issues
744744
"""
745745
issues = get_muted_tests_from_issues()
746746
closed_issues = []
747+
partially_unmuted_issues = []
747748

748749
# Get status field ID and Unmuted option ID
749750
_, project_fields = get_project_v2_fields(ORG_NAME, PROJECT_ID)
@@ -760,7 +761,7 @@ def close_unmuted_issues(muted_tests_set, do_not_close_issues=False):
760761

761762
if not status_field_id or not unmuted_option_id:
762763
print("Warning: Could not find status field or Unmuted option")
763-
return closed_issues
764+
return closed_issues, partially_unmuted_issues
764765

765766
# First, group tests by issue ID
766767
tests_by_issue = {}
@@ -781,6 +782,8 @@ def close_unmuted_issues(muted_tests_set, do_not_close_issues=False):
781782
if issue_info['state'] != 'CLOSED':
782783
unmuted_tests = [test for test in issue_info['tests'] if test not in muted_tests_set]
783784
if unmuted_tests:
785+
# Get existing comments
786+
existing_comments = get_issue_comments(issue_id)
784787

785788
# If all tests are unmuted, close the issue
786789
if len(unmuted_tests) == len(issue_info['tests']):
@@ -797,19 +800,25 @@ def close_unmuted_issues(muted_tests_set, do_not_close_issues=False):
797800
print(f"Unmuted tests: {', '.join(sorted(unmuted_tests))}")
798801
# If some tests are unmuted but not all, just add a comment if needed
799802
else:
800-
# Get existing comments
801-
existing_comments = get_issue_comments(issue_id)
802803
if not has_unmute_comment(existing_comments, unmuted_tests):
803804
comment = "Some tests have been unmuted:\n" + "\n".join(f"- Test {test}" for test in sorted(unmuted_tests))
804805
add_issue_comment(issue_id, comment)
805806
print(f"Added comment about unmuted tests to issue: {issue_info['url']}")
806807
print(f"Unmuted tests: {', '.join(sorted(unmuted_tests))}")
808+
809+
# Add to partially unmuted issues list
810+
still_muted_tests = [test for test in issue_info['tests'] if test in muted_tests_set]
811+
partially_unmuted_issues.append({
812+
'url': issue_info['url'],
813+
'unmuted_tests': sorted(unmuted_tests),
814+
'still_muted_tests': sorted(still_muted_tests)
815+
})
807816

808817
# Update status for all closed issues
809818
print("Updating status for all closed issues...")
810819
update_all_closed_issues_status(status_field_id, unmuted_option_id)
811820

812-
return closed_issues
821+
return closed_issues, partially_unmuted_issues
813822

814823

815824
def main():

0 commit comments

Comments
 (0)