Repository navigation
Commit 9ae68b5
Fix PR link regexes after the move to react/react-native (#59128)
Summary:
Two workflows stopped working after the move to `react/react-native`, because their regexes only allow `github.com/facebook/react-native`:
- **Merged pull requests no longer get the release FAQ comment.** Before the move, `react-native-bot` posted "This pull request was successfully merged by author in **sha**" with links to "When will my fix make it into a release?" and "How to file a pick request?". The last one is on #56769 (June 9). Pull requests merged on October 15 (#59122, #59050, #59016) only have the `meta-codesync` comment.
- **Issues that link a pull request as the reproducer still get `Needs: Repro`.** Examples: #58970, #58495, #58445, #55708. The bot's message for `Needs: Repro` asks for a pull request that edits `RNTesterPlayground.js`, but the bot does not accept a link to one.
### Why
1. `.github/workflows/close-pr.yml` looks for `Pull Request resolved: https://github.com/facebook/react-native/pull/N` in the commit message. Commits now say `https://github.com/react/react-native/pull/N`, so `getClosedPrIfExists` returns `undefined` and the script stops before `createComment`. #57167 changed the `if:` line in this file to `react/react-native`, but not the regex. The regex is written with escaped slashes (`facebook\/react-native`).
2. `.github/workflow-scripts/checkForReproducer.js` builds the pull request pattern in a template literal with single backslashes. In a template literal, `\d` is just `d`, so the pattern is `https?://github.com/facebook/react-native/pull/d+/?`. It did not match real links even before the move (the line was added in #50848). The other two patterns in the same function use `\\` and work.
In the whole repo, `facebook\/react-native` appears only in these two lines.
### Fix
Both regexes now accept `facebook` and `react`. People still write links with `facebook`: the four issues above all do. In `checkForReproducer.js`, the pattern now uses `\\` like the other two patterns. `(?:...)` does not capture, so the group numbers in `close-pr.yml` do not change.
The new test file is `checkForReproducer-links-test.js`, so it does not conflict with `checkForReproducer-test.js` from #58429. That PR fixes a different problem in the same script: the bot treats its own `Needs: Repro` label as a maintainer change. Because of that, an issue that already has the label keeps it after an edit, also with this PR. New issues with a pull request link do not get the label.
## Changelog:
[INTERNAL] [FIXED] - Fix pull request link regexes in the close-pr and check-for-reproducer workflows after the move to react/react-native
Pull Request resolved: #59128
Test Plan:
Windows 11, Node 22.17.1, Yarn 1.22.22.
New Jest test for `checkForReproducer` with 4 cases: a link to a pull request in `react/react-native`, the same link with `facebook/react-native`, a pull request in another repository, and no link.
```
yarn test .github/workflow-scripts
```
| Code | Result |
| --- | --- |
| `main` (e04aaf6) | 2 of the 4 new tests fail: both pull request links are not accepted |
| this PR | 11 suites, 72 tests pass |
Each part of the fix is needed:
- `facebook|react` with single backslashes: both link tests fail.
- Double backslashes with only `facebook`: the `react` link test fails.
`close-pr.yml` runs an inline script, so it has no Jest test. I took `prClosingRegex` from the file and ran `getClosedPrIfExists` (copied from the file) on real commit messages from `main`:
| Commit message | `main` | this PR |
| --- | --- | --- |
| #59016: `Pull Request resolved: https://github.com/react/react-native/pull/59016` | `undefined` | `59016` |
| #56769: `Pull Request resolved: https://github.com/facebook/react-native/pull/56769` | `56769` | `56769` |
| "Update React Native DevTools binaries", no pull request link | `undefined` | `undefined` |
`npx prettier --check` passes for the 3 files.
Not covered:
- I did not run the workflows. They run on push to `main` and on issue events in this repository.
- `yarn lint` does not check these files, because ESLint skips the `.github` folder.
Reviewed By: cipolleschi
Differential Revision: D125650549
Pulled By: cortinico
fbshipit-source-id: c1d1b49381730f755d13e3c822ac1df33a4808b81 parent bf4fac3 commit 9ae68b5
3 files changed
Lines changed: 73 additions & 2 deletions
File tree
- .github
- workflow-scripts
- __tests__
- workflows
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
| 46 | + | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| |||
0 commit comments