Skip to content

Commit 0c3baab

Browse files
authored
Merge pull request #302 from CyberShadow/pull-20230624-050612
First phase of GitHub Issues support
2 parents cef4cd7 + 835295f commit 0c3baab

9 files changed

+86
-53
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ Features
2222
Automated references
2323
--------------------
2424

25-
For example let's say you fixed [Issue 16582](https://issues.dlang.org/show_bug.cgi?id=16582)
25+
For example let's say you fixed [Bugzilla Issue 16582](https://issues.dlang.org/show_bug.cgi?id=16582)
2626
and make a PR for on GitHub.
2727
If one of your commits mentions the issue, e.g. like this Git commit message:
2828

2929
```
30-
fix Issue 16582 - ParameterDefaults fails w/ scope parameter
30+
fix Bugzilla Issue 16582 - ParameterDefaults fails w/ scope parameter
3131
```
3232

3333
The Dlang-Bot will do all the hard work of linking and referencing
@@ -68,7 +68,7 @@ Using this syntax is also very important because for the changelog generation, t
6868
git history will be used. Thus _only_ if the Dlang-Bot has detected an issue
6969
and commented on your PR it can become part of the changelog.
7070

71-
In doubt, you can use e.g. [Regex101](https://regex101.com/r/aI0Rp6/7) to validate your commit message.
71+
In doubt, you can use e.g. [Regex101](https://regex101.com/r/vjOAM4/1) to validate your commit message.
7272

7373
### Referencing multiple issues
7474

data/hooks/trello/active_issue_16794.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
"card": {
5959
"shortLink": "H1IPmxHc",
6060
"idShort": 279,
61-
"name": "Test Card Issue 16794",
61+
"name": "Test Card Bugzilla 16794",
6262
"id": "583f517a333add7c28e0cec7"
6363
}
6464
},

data/payloads/github_repos_dlang_dmd_pulls_6359_commits

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"email": "code@dawg.eu",
1313
"date": "2016-12-24T17:58:32Z"
1414
},
15-
"message": "fix Issue 16794 - dmd not working on Ubuntu 16.10\n\n- enable PIC by default on amd64 linux (no significant overhead, full\n PIC/PIE support)\n- also see https://github.com/dlang/installer/pull/207",
15+
"message": "fix Bugzilla Issue 16794 - dmd not working on Ubuntu 16.10\n\n- enable PIC by default on amd64 linux (no significant overhead, full\n PIC/PIE support)\n- also see https://github.com/dlang/installer/pull/207",
1616
"tree": {
1717
"sha": "7fe104c3fc612cb2b527eab295f858d2e14796a3",
1818
"url": "https://api.github.com/repos/dlang/dmd/git/trees/7fe104c3fc612cb2b527eab295f858d2e14796a3"

data/payloads/github_repos_dlang_phobos_pulls_4921_commits

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"email": "razvan.nitu1305@gmail.com",
1313
"date": "2016-12-16T09:11:07Z"
1414
},
15-
"message": "Issue 8573 - A simpler Phobos function that returns the index of the mix or max item\n\nIssue 8573 - A simpler Phobos function that returns the index of the mix or max item\n\nadded some review fixes\n\nfixed an issue with a mutable variable\n\nApplied review feedback\n\nRenamed functions to minIndex and maxIndex + used sizediff_t for return value type\n\nUpdated function so that it works optimally even for lazy ranges and algorithms\n\nReverted to having only copyable elements in ranges\n\nAdded more unittests; implemented an array path; fixed documentation\n\nSquashed commits",
15+
"message": "Bugzilla Issue 8573 - A simpler Phobos function that returns the index of the mix or max item\n\nBugzilla Issue 8573 - A simpler Phobos function that returns the index of the mix or max item\n\nadded some review fixes\n\nfixed an issue with a mutable variable\n\nApplied review feedback\n\nRenamed functions to minIndex and maxIndex + used sizediff_t for return value type\n\nUpdated function so that it works optimally even for lazy ranges and algorithms\n\nReverted to having only copyable elements in ranges\n\nAdded more unittests; implemented an array path; fixed documentation\n\nSquashed commits",
1616
"tree": {
1717
"sha": "dae14cbc7dcd78423698c41f9f20d30b89d249c3",
1818
"url": "https://api.github.com/repos/dlang/phobos/git/trees/dae14cbc7dcd78423698c41f9f20d30b89d249c3"

data/payloads/github_repos_dlang_phobos_pulls_5519_commits

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"email": "code@dawg.eu",
1313
"date": "2017-06-28T23:45:01Z"
1414
},
15-
"message": "Fix issue 17564: Eliminate \"static this\" for theAllocator\n\nThis switches to lazy initialization of theAllocator, so that accessing it form within `shared static this` works as expected.",
15+
"message": "Fix bugzilla issue 17564: Eliminate \"static this\" for theAllocator\n\nThis switches to lazy initialization of theAllocator, so that accessing it form within `shared static this` works as expected.",
1616
"tree": {
1717
"sha": "b490839e4489d62864e0aa8aab9e308a535a8ad8",
1818
"url": "https://api.github.com/repos/dlang/phobos/git/trees/b490839e4489d62864e0aa8aab9e308a535a8ad8"

source/dlangbot/app.d

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,8 @@ void handlePR(string action, PullRequest* _pr)
248248
refs = getIssueRefs(commits);
249249
descs = getDescriptions(refs);
250250
if (action == "opened" || action == "synchronize" || action == "ready_for_review")
251-
{
252-
msgs = pr.checkForWarnings(descs, refs);
253-
}
251+
msgs ~= pr.checkForWarnings(descs, refs);
252+
msgs ~= checkLegacyIssueRefs(commits);
254253

255254
pr.updateGithubComment(comment, action, refs, descs, msgs);
256255

source/dlangbot/bugzilla.d

Lines changed: 59 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,23 @@ static immutable bugzillaProjectSlugs = ["dlang/dmd", "dlang/druntime", "dlang/p
1313
import std.algorithm, std.conv, std.range, std.string;
1414
import std.exception : enforce;
1515
import std.format : format;
16+
import std.regex : ctRegex, matchFirst, matchAll;
17+
18+
import dlangbot.warnings : UserMessage;
1619

1720
//==============================================================================
1821
// Bugzilla
1922
//==============================================================================
2023

21-
auto matchIssueRefs(string message)
22-
{
23-
import std.regex;
24+
private enum issueRE = ctRegex!(
25+
`(?:^fix(?:es)?(?:\s+bugzilla)(?:\s+(?:issues?|bugs?))?\s+(#?\d+(?:[\s,\+&and]+#?\d+)*))|` ~
26+
`(?:bugzilla\s+(?:(?:issues?|bugs?)\s+)?(#?\d+(?:[\s,\+&and]+#?\d+)*))`, "im");
27+
private enum oldIssueRE = ctRegex!(
28+
`(?:^fix(?:es)?(?:\s+(?:issues?|bugs?))?\s+(#?\d+(?:[\s,\+&and]+#?\d+)*))|` ~
29+
`(?:(?:issues?|bugs?)\s+(#?\d+(?:[\s,\+&and]+#?\d+)*))`, "im");
2430

31+
auto matchIssueRefs(RE)(string message, RE re = issueRE)
32+
{
2533
static auto matchToRefs(M)(M m)
2634
{
2735
enum splitRE = ctRegex!(`(\d+)`);
@@ -31,44 +39,44 @@ auto matchIssueRefs(string message)
3139
.map!(match => IssueRef(match.hit.to!int, closed));
3240
}
3341

34-
enum issueRE = ctRegex!(`(?:^fix(?:es)?(?:\s+(?:issues?|bugs?))?\s+(#?\d+(?:[\s,\+&and]+#?\d+)*))|` ~
35-
`(?:(?:issues?|bugs?)\s+(#?\d+(?:[\s,\+&and]+#?\d+)*))`, "im");
36-
return matchToRefs(message.matchFirst(issueRE));
42+
return matchToRefs(message.matchFirst(re));
3743
}
3844

3945
unittest
4046
{
41-
assert(equal(matchIssueRefs("fix issue 16319 and fix std.traits.isInnerClass"),
47+
assert(equal(matchIssueRefs("fix bugzilla issue 16319 and fix std.traits.isInnerClass"),
4248
[IssueRef(16319, true)]));
43-
assert(equal(matchIssueRefs("Fixes issues 17494, 17505, 17506"),
49+
assert(equal(matchIssueRefs("Fixes Bugzilla issues 17494, 17505, 17506"),
4450
[IssueRef(17494, true),IssueRef(17505, true), IssueRef(17506, true)]));
45-
assert(equal(matchIssueRefs("Fix issues 42, 55, 98: Baguette poisson fraise"),
51+
assert(equal(matchIssueRefs("Fix bugzilla issues 42, 55, 98: Baguette poisson fraise"),
4652
[ IssueRef(42, true), IssueRef(55, true), IssueRef(98, true) ]));
4753
// Multi-line
48-
assert(equal(matchIssueRefs("Bla bla bla\n\nFixes issue #123"),
54+
assert(equal(matchIssueRefs("Bla bla bla\n\nFixes bugzilla issue #123"),
4955
[IssueRef(123, true)]));
5056
// only first match considered, see #175
51-
assert(equal(matchIssueRefs("Fixes Issues 1234 and 2345\nblabla\nFixes Issue 3456"),
57+
assert(equal(matchIssueRefs("Fixes BugZilla Issues 1234 and 2345\nblabla\nFixes BugZilla Issue 3456"),
5258
[IssueRef(1234, true), IssueRef(2345, true)]));
5359
// Related, but not closing
54-
assert(equal(matchIssueRefs("Issue 242: Refactor prior to fix"),
60+
assert(equal(matchIssueRefs("Bugzilla Issue 242: Refactor prior to fix"),
5561
[IssueRef(242, false)]));
56-
assert(equal(matchIssueRefs("Bug 123: Add a test"),
62+
assert(equal(matchIssueRefs("Bugzilla Bug 123: Add a test"),
5763
[IssueRef(123, false)]));
58-
assert(equal(matchIssueRefs("Issue #456: Improve error message"),
64+
assert(equal(matchIssueRefs("Bugzilla Issue #456: Improve error message"),
5965
[IssueRef(456, false)]));
6066

6167
// Short hand syntax
62-
assert(equal(matchIssueRefs("Fix 222, 333 and 42000: Baguette poisson fraise"),
68+
assert(equal(matchIssueRefs("Fix Bugzilla 222, 333 and 42000: Baguette poisson fraise"),
6369
[ IssueRef(222, true), IssueRef(333, true), IssueRef(42000, true) ]));
64-
assert(equal(matchIssueRefs("Fix 4242 & 131 Baguette poisson fraise"),
70+
assert(equal(matchIssueRefs("Fix Bugzilla 4242 & 131 Baguette poisson fraise"),
6571
[ IssueRef(4242, true), IssueRef(131, true) ]));
6672
// Just a reference, not a fix
67-
assert(equal(matchIssueRefs("Issue 242: Warn about buggy behavior"),
73+
assert(equal(matchIssueRefs("Bugzilla Issue 242: Warn about buggy behavior"),
6874
[IssueRef(242, false)]));
69-
assert(equal(matchIssueRefs("Do not quite fix issue 242 but it's a start"),
75+
assert(equal(matchIssueRefs("Do not quite fix bugzilla issue 242 but it's a start"),
7076
[IssueRef(242, false)]));
71-
assert(equal(matchIssueRefs("Workaround needed to make bug 131415 less deadly"),
77+
assert(equal(matchIssueRefs("Workaround needed to make bugzilla bug 131415 less deadly"),
78+
[IssueRef(131415, false)]));
79+
assert(equal(matchIssueRefs("Workaround needed to make bugzilla 131415 less deadly"),
7280
[IssueRef(131415, false)]));
7381

7482
// Shouldn't match
@@ -79,19 +87,19 @@ unittest
7987
assert(equal(matchIssueRefs("#4242: Reduce indentation prior to fix"), empty));
8088

8189
// Note: This *will match* so just don't use that verb?
82-
assert(equal(matchIssueRefs("DMD issues 10 weird error message on shutdown"),
83-
[IssueRef(10, false)]));
90+
// assert(equal(matchIssueRefs("DMD issues 10 weird error message on shutdown"),
91+
// [IssueRef(10, false)]));
8492
}
8593

8694
struct IssueRef { int id; bool fixed; Json[] commits; }
8795
// get all issues mentioned in a commit
88-
IssueRef[] getIssueRefs(Json[] commits)
96+
IssueRef[] getIssueRefs(RE)(Json[] commits, RE re = issueRE)
8997
{
9098
return commits
9199
// Collect all issue references (range of ranges per commit)
92100
.map!(c => c["commit"]["message"]
93101
.get!string
94-
.matchIssueRefs
102+
.matchIssueRefs(re)
95103
.map!((r) { r.commits = [c]; return r; })
96104
)
97105
// Join to flat list
@@ -110,8 +118,8 @@ IssueRef[] getIssueRefs(Json[] commits)
110118

111119
unittest
112120
{
113-
Json fix(int id) { return ["commit":["message":"Fix Issue %d".format(id).Json].Json].Json; }
114-
Json mention(int id) { return ["commit":["message":"Issue %d".format(id).Json].Json].Json; }
121+
Json fix(int id) { return ["commit":["message":"Fix Bugzilla %d".format(id).Json].Json].Json; }
122+
Json mention(int id) { return ["commit":["message":"Bugzilla %d".format(id).Json].Json].Json; }
115123

116124
assert(getIssueRefs([fix(1)]) == [IssueRef(1, true, [fix(1)])]);
117125
assert(getIssueRefs([mention(1)]) == [IssueRef(1, false, [mention(1)])]);
@@ -120,6 +128,32 @@ unittest
120128
assert(getIssueRefs([mention(1), fix(2), fix(1)]) == [IssueRef(1, true, [mention(1), fix(1)]), IssueRef(2, true, [fix(2)])]);
121129
}
122130

131+
UserMessage[] checkLegacyIssueRefs(Json[] commits)
132+
{
133+
auto oldHits = commits.getIssueRefs(oldIssueRE).map!(r => r.id);
134+
auto newHits = commits.getIssueRefs(issueRE).map!(r => r.id);
135+
auto onlyOld = oldHits.filter!(id => !newHits.canFind(id));
136+
if (!onlyOld.empty)
137+
return [UserMessage(UserMessage.Type.Warning,
138+
"In preparation for migrating from Bugzilla to GitHub Issues, the issue reference syntax has changed. " ~
139+
"Please add the word \"Bugzilla\" to issue references. For example, `Fix Bugzilla Issue 12345` or `Fix Bugzilla 12345`." ~
140+
"(Reminder: the edit needs to be done in the Git *commit message*, not the GitHub *pull request*.)"
141+
)];
142+
return null;
143+
}
144+
145+
unittest
146+
{
147+
Json fixOld(int id) { return ["commit":["message":"Fix Issue %d".format(id).Json].Json].Json; }
148+
Json fixNew(int id) { return ["commit":["message":"Fix Bugzilla %d".format(id).Json].Json].Json; }
149+
150+
assert( checkLegacyIssueRefs([]).empty);
151+
assert( checkLegacyIssueRefs([fixNew(1)]).empty);
152+
assert( checkLegacyIssueRefs([fixOld(1), fixNew(1)]).empty);
153+
assert(!checkLegacyIssueRefs([fixOld(1)]).empty);
154+
assert(!checkLegacyIssueRefs([fixOld(1), fixNew(2)]).empty);
155+
}
156+
123157
struct Issue
124158
{
125159
int id;

test/bugzilla.d

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ unittest
77
{
88
setAPIExpectations(
99
"/github/repos/dlang/phobos/pulls/4963/commits", (ref Json j) {
10-
j[0]["commit"]["message"] = "Fix Issue 17564";
10+
j[0]["commit"]["message"] = "Fix bugzilla Issue 17564";
1111
},
1212
"/github/repos/dlang/phobos/issues/4963/comments",
1313
"/github/repos/dlang/phobos/issues/4963/labels",
@@ -46,7 +46,7 @@ unittest
4646
dlang/phobos pull request #4963 "[DEMO for DIP1005] Converted imports to selective imports in std.array" was merged into master:
4747
4848
- e064d5664f92c4b2f0866c08f6d0290ba66825ed by Andrei Alexandrescu:
49-
Fix Issue 17564
49+
Fix bugzilla Issue 17564
5050
5151
https://github.com/dlang/phobos/pull/4963
5252
EOF".chomp;
@@ -65,7 +65,7 @@ unittest
6565
{
6666
setAPIExpectations(
6767
"/github/repos/dlang/phobos/pulls/4963/commits", (ref Json j) {
68-
j[0]["commit"]["message"] = "Do something with Issue 17564";
68+
j[0]["commit"]["message"] = "Do something with Bugzilla Issue 17564";
6969
},
7070
"/github/repos/dlang/phobos/issues/4963/comments",
7171
"/trello/1/search?query=name:%22Issue%2017564%22&"~trelloAuth,
@@ -96,7 +96,7 @@ unittest
9696
dlang/phobos pull request #4963 "[DEMO for DIP1005] Converted imports to selective imports in std.array" was merged into master:
9797
9898
- e064d5664f92c4b2f0866c08f6d0290ba66825ed by Andrei Alexandrescu:
99-
Do something with Issue 17564
99+
Do something with Bugzilla Issue 17564
100100
101101
https://github.com/dlang/phobos/pull/4963
102102
EOF".chomp;
@@ -115,7 +115,7 @@ unittest
115115
{
116116
setAPIExpectations(
117117
"/github/repos/notdlang/bar/pulls/12347/commits", (ref Json j) {
118-
j[0]["commit"]["message"] = "Do something with Issue 17564";
118+
j[0]["commit"]["message"] = "Do something with Bugzilla Issue 17564";
119119
},
120120
"/github/repos/notdlang/bar/issues/12347/comments",
121121
);
@@ -128,7 +128,7 @@ unittest
128128
{
129129
setAPIExpectations(
130130
"/github/repos/dlang/dub/pulls/12345/commits", (ref Json j) {
131-
j[0]["commit"]["message"] = "Do something with Issue 17564";
131+
j[0]["commit"]["message"] = "Do something with Bugzilla Issue 17564";
132132
},
133133
"/github/repos/dlang/dub/issues/12345/comments",
134134
);
@@ -141,7 +141,7 @@ unittest
141141
{
142142
setAPIExpectations(
143143
"/github/repos/dlang/phobos/pulls/4963/commits", (ref Json j) {
144-
j[0]["commit"]["message"] = "Fix Issue 17564";
144+
j[0]["commit"]["message"] = "Fix Bugzilla Issue 17564";
145145
},
146146
"/github/repos/dlang/phobos/issues/4963/comments",
147147
"/github/repos/dlang/phobos/issues/4963/labels",
@@ -161,7 +161,7 @@ unittest
161161
dlang/phobos pull request #4963 "[DEMO for DIP1005] Converted imports to selective imports in std.array" was merged into stable:
162162
163163
- e064d5664f92c4b2f0866c08f6d0290ba66825ed by Andrei Alexandrescu:
164-
Fix Issue 17564
164+
Fix Bugzilla Issue 17564
165165
166166
https://github.com/dlang/phobos/pull/4963
167167
EOF".chomp;
@@ -224,7 +224,7 @@ unittest
224224
enum expected = q"EOF
225225
@MartinNowak created dlang/dmd pull request #6359 "fix Issue 16794 - dmd not working on Ubuntu 16.10" fixing this issue:
226226
227-
- fix Issue 16794 - dmd not working on Ubuntu 16.10
227+
- fix Bugzilla Issue 16794 - dmd not working on Ubuntu 16.10
228228
229229
- enable PIC by default on amd64 linux (no significant overhead, full
230230
PIC/PIE support)
@@ -248,7 +248,7 @@ unittest
248248
setAPIExpectations(
249249
"/github/repos/dlang/dmd/pulls/6359/commits",
250250
(ref Json j){
251-
j[0]["commit"]["message"] = "Fix Issue 20540 - (White|Black)Hole does not work with return|scope functions";
251+
j[0]["commit"]["message"] = "Fix Bugzilla Issue 20540 - (White|Black)Hole does not work with return|scope functions";
252252
},
253253
"/github/repos/dlang/dmd/issues/6359/comments",
254254
"/bugzilla/buglist.cgi?bug_id=20540&ctype=csv&columnlist=short_desc,bug_status,resolution,bug_severity,priority,keywords",

test/comments.d

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ unittest
121121
{
122122
setAPIExpectations(
123123
"/github/repos/dlang/phobos/pulls/4921/commits", (ref Json j) {
124-
j[0]["commit"]["message"] = "Fix Issue 8573";
124+
j[0]["commit"]["message"] = "Fix Bugzilla Issue 8573";
125125
},
126126
"/github/repos/dlang/phobos/issues/4921/comments",
127127
"/bugzilla/buglist.cgi?bug_id=8573&ctype=csv&columnlist=short_desc,bug_status,resolution,bug_severity,priority,keywords",
@@ -158,7 +158,7 @@ unittest
158158
{
159159
setAPIExpectations(
160160
"/github/repos/dlang/phobos/pulls/4921/commits", (ref Json j) {
161-
j[0]["commit"]["message"] = "Fix Issue 8573, 8574";
161+
j[0]["commit"]["message"] = "Fix Bugzilla 8573, 8574";
162162
},
163163
"/github/repos/dlang/phobos/issues/4921/comments",
164164
"/bugzilla/buglist.cgi?bug_id=8573,8574&ctype=csv&columnlist=short_desc,bug_status,resolution,bug_severity,priority,keywords",
@@ -195,7 +195,7 @@ unittest
195195
{
196196
setAPIExpectations(
197197
"/github/repos/dlang/phobos/pulls/4921/commits", (ref Json j) {
198-
j[0]["commit"]["message"] = "Fix Issue 8573";
198+
j[0]["commit"]["message"] = "Fix Bugzilla 8573";
199199
},
200200
"/github/repos/dlang/phobos/issues/4921/comments",
201201
"/bugzilla/buglist.cgi?bug_id=8573&ctype=csv&columnlist=short_desc,bug_status,resolution,bug_severity,priority,keywords",
@@ -259,7 +259,7 @@ unittest
259259
{
260260
setAPIExpectations(
261261
"/github/repos/dlang/phobos/pulls/4921/commits", (ref Json j) {
262-
j[0]["commit"]["message"] = "Fix Issue 8573";
262+
j[0]["commit"]["message"] = "Fix Bugzilla Issue 8573";
263263
},
264264
"/github/repos/dlang/phobos/issues/4921/labels",
265265
"/github/repos/dlang/phobos/issues/4921/comments", (ref Json j) {
@@ -397,7 +397,7 @@ unittest
397397
{
398398
setAPIExpectations(
399399
"/github/repos/dlang/phobos/pulls/4921/commits", (ref Json j) {
400-
j[0]["commit"]["message"] = "Issue 8573";
400+
j[0]["commit"]["message"] = "Bugzilla 8573";
401401
},
402402
"/github/repos/dlang/phobos/issues/4921/labels",
403403
"/github/repos/dlang/phobos/issues/4921/comments", (ref Json j) {
@@ -428,7 +428,7 @@ unittest
428428
{
429429
setAPIExpectations(
430430
"/github/repos/dlang/phobos/pulls/4921/commits", (ref Json j) {
431-
j[0]["commit"]["message"] = "Fix Issue 8573";
431+
j[0]["commit"]["message"] = "Fix Bugzilla 8573";
432432
},
433433
"/github/repos/dlang/phobos/issues/4921/labels",
434434
"/github/repos/dlang/phobos/issues/4921/comments", (ref Json j) {
@@ -495,7 +495,7 @@ unittest
495495

496496
setAPIExpectations(
497497
"/github/repos/dlang/phobos/pulls/4921/commits", (ref Json j) {
498-
j[0]["commit"]["message"] = "Issue 19296";
498+
j[0]["commit"]["message"] = "Bugzilla 19296";
499499
},
500500
"/github/repos/dlang/phobos/issues/4921/labels",
501501
"/github/repos/dlang/phobos/issues/4921/comments", (ref Json j) {
@@ -525,7 +525,7 @@ unittest
525525

526526
setAPIExpectations(
527527
"/github/repos/dlang/phobos/pulls/4921/commits", (ref Json j) {
528-
j[0]["commit"]["message"] = "Issue 19296";
528+
j[0]["commit"]["message"] = "Bugzilla 19296";
529529
},
530530
"/github/repos/dlang/phobos/issues/4921/labels",
531531
"/github/repos/dlang/phobos/issues/4921/comments", (ref Json j) {

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy