Skip to content

Commit 11b4093

Browse files
authored
Rollup merge of rust-lang#62023 - RalfJung:miri-toolstate, r=kennytm
publish_toolstate: don't use 'new' from inside the loop I think I made a mistake in rust-lang#61938 by using `new` outside the inner loop. This PR fixes that. However, no issue got created at all for rust-lang#62003 (comment), and I don't know why that is. The script should be [triggered by Traivs](https://github.com/rust-lang/rust/blob/56a12b2ad058f22f1ef090713df15598525ba4a4/.travis.yml#L240), and I can find no trace of that in [the build log](https://travis-ci.com/rust-lang/rust/jobs/209880042).
2 parents fea6402 + 02863a3 commit 11b4093

File tree

1 file changed

+33
-28
lines changed

1 file changed

+33
-28
lines changed

src/tools/publish_toolstate.py

+33-28
Original file line numberDiff line numberDiff line change
@@ -72,32 +72,33 @@ def issue(
7272
):
7373
# Open an issue about the toolstate failure.
7474
assignees = [x.strip() for x in maintainers.split('@') if x != '']
75-
assignees.append(relevant_pr_user)
7675
if status == 'test-fail':
7776
status_description = 'has failing tests'
7877
else:
7978
status_description = 'no longer builds'
79+
request = json.dumps({
80+
'body': maybe_delink(textwrap.dedent('''\
81+
Hello, this is your friendly neighborhood mergebot.
82+
After merging PR {}, I observed that the tool {} {}.
83+
A follow-up PR to the repository {} is needed to fix the fallout.
84+
85+
cc @{}, do you think you would have time to do the follow-up work?
86+
If so, that would be great!
87+
88+
cc @{}, the PR reviewer, and @rust-lang/compiler -- nominating for prioritization.
89+
90+
''').format(
91+
relevant_pr_number, tool, status_description,
92+
REPOS.get(tool), relevant_pr_user, pr_reviewer
93+
)),
94+
'title': '`{}` no longer builds after {}'.format(tool, relevant_pr_number),
95+
'assignees': assignees,
96+
'labels': ['T-compiler', 'I-nominated'],
97+
})
98+
print("Creating issue:\n{}".format(request))
8099
response = urllib2.urlopen(urllib2.Request(
81100
gh_url(),
82-
json.dumps({
83-
'body': maybe_delink(textwrap.dedent('''\
84-
Hello, this is your friendly neighborhood mergebot.
85-
After merging PR {}, I observed that the tool {} {}.
86-
A follow-up PR to the repository {} is needed to fix the fallout.
87-
88-
cc @{}, do you think you would have time to do the follow-up work?
89-
If so, that would be great!
90-
91-
cc @{}, the PR reviewer, and @rust-lang/compiler -- nominating for prioritization.
92-
93-
''').format(
94-
relevant_pr_number, tool, status_description,
95-
REPOS.get(tool), relevant_pr_user, pr_reviewer
96-
)),
97-
'title': '`{}` no longer builds after {}'.format(tool, relevant_pr_number),
98-
'assignees': assignees,
99-
'labels': ['T-compiler', 'I-nominated'],
100-
}),
101+
request,
101102
{
102103
'Authorization': 'token ' + github_token,
103104
'Content-Type': 'application/json',
@@ -135,13 +136,13 @@ def update_latest(
135136
for status in latest:
136137
tool = status['tool']
137138
changed = False
138-
create_issue = False
139+
create_issue_for_status = None # set to the status that caused the issue
139140

140141
for os, s in current_status.items():
141142
old = status[os]
142143
new = s.get(tool, old)
143144
status[os] = new
144-
if new > old:
145+
if new > old: # comparing the strings, but they are ordered appropriately!
145146
# things got fixed or at least the status quo improved
146147
changed = True
147148
message += '🎉 {} on {}: {} → {} (cc {}, @rust-lang/infra).\n' \
@@ -156,20 +157,24 @@ def update_latest(
156157
# Most tools only create issues for build failures.
157158
# Other failures can be spurious.
158159
if new == 'build-fail' or (tool == 'miri' and new == 'test-fail'):
159-
create_issue = True
160+
create_issue_for_status = new
160161

161-
if create_issue:
162+
if create_issue_for_status is not None:
162163
try:
163164
issue(
164-
tool, new, MAINTAINERS.get(tool, ''),
165+
tool, create_issue_for_status, MAINTAINERS.get(tool, ''),
165166
relevant_pr_number, relevant_pr_user, pr_reviewer,
166167
)
167-
except IOError as e:
168+
except urllib2.HTTPError as e:
168169
# network errors will simply end up not creating an issue, but that's better
169170
# than failing the entire build job
170-
print("I/O error: {0}".format(e))
171+
print("HTTPError when creating issue for status regression: {0}\n{1}"
172+
.format(e, e.read()))
173+
except IOError as e:
174+
print("I/O error when creating issue for status regression: {0}".format(e))
171175
except:
172-
print("Unexpected error: {0}".format(sys.exc_info()[0]))
176+
print("Unexpected error when creating issue for status regression: {0}"
177+
.format(sys.exc_info()[0]))
173178
raise
174179

175180
if changed:

0 commit comments

Comments
 (0)