react-native/danger/dangerfile.js

163 lines
7.4 KiB
JavaScript
Raw Normal View History

Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
/**
* Copyright (c) 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
'use strict';
const fs = require('fs');
const includes = require('lodash.includes');
Warn if base !== master, tag CODEOWNERS Summary: The following PR modifies the Danger rules in the following way: 1. Verifies if a PR is opened against master. If not, it will warn (if opened against stable) or fail (anything else). 2. No longer adds a markdown message tagging the facebook/react-native team, as the bot does not have the necessary scope to mention the team. 3. Mentions people that have marked themselves as interested in a file, when that file is modified. This is based off CODEOWNERS. The bot should be able to use mentions here as it will act as any other regular user. Verify it tags the right people in https://github.com/facebook/react-native/pull/15139 ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15139 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15139" { fails: [], warnings: [], messages: [], markdowns: ["Attention: grabbou, kureev"] } ``` It should not tag anyone for https://github.com/facebook/react-native/pull/15175: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` It should warn on https://github.com/facebook/react-native/pull/14640 as it targets 0.45-stable: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/14640 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14640" { fails: [], warnings: [ { message: ":grey_question: Base Branch - <i>The base branch for this PR is something other than `master`. Are you sure you want to merge these changes into a stable release? If you are interested in backporting updates to an older release, the suggested approach is to land those changes on `master` first and then cherry-pick the commits into the branch for that release. The [Releases Guide](https://github.com/facebook/react-native/blob/master/Releases.md) has more information.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` It should not warn on https://github.com/facebook/react-native/pull/15175 because it targets master. ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` Closes https://github.com/facebook/react-native/pull/15179 Differential Revision: D5490047 Pulled By: hramos fbshipit-source-id: a46a23b7d0a59d12b8039746d6e9c4399ef32d5f
2017-07-25 19:14:41 +00:00
const minimatch = require('minimatch');
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
import { danger, fail, markdown, message, warn } from 'danger';
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
const isDocsFile = path => includes(path, 'docs/');
const editsDocs = danger.git.modified_files.filter(isDocsFile).length > 0;
const addsDocs = danger.git.created_files.filter(isDocsFile).length > 0;
if (addsDocs || editsDocs) {
// Note, this does not yet cover edits to the autogenerated docs
// (e.g. comments within JS source files)
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':page_facing_up: Docs';
const idea = 'Thanks for your contribution to the docs!';
message(`${title} - <i>${idea}</i>`);
// Add the Documentation label via bot, as @facebook-open-source-bot does not have write privileges on the repo.
markdown('@facebook-github-bot label Documentation');
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
const isBlogFile = path => includes(path, 'blog/');
// Flags new blog posts. Note that mentions will not be parsed as the access token we're using does
// not belong to the Facebook org (on purpose)
const addsBlogPost = danger.git.created_files.filter(isBlogFile).length > 0;
if (addsBlogPost) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':memo: Blog post';
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
const idea = 'This PR appears to add a new blog post, ' +
'and may require further review from the React Native team.';
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
warn(`${title} - <i>${idea}</i>`);
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
// Flags edits to blog posts
const editsBlogPost = danger.git.modified_files.filter(isBlogFile).length > 0;
if (editsBlogPost) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':memo: Blog post';
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
const idea = 'This PR appears to edit an existing blog post, ' +
'and may require further review from the React Native team.';
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
warn(`${title} - <i>${idea}</i>`);
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
// Fails if the description is too short.
if (danger.github.pr.body.length < 10) {
fail(':grey_question: This pull request needs a description.');
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
markdown('@facebook-github-bot label Needs more information');
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
// Warns if the PR title contains [WIP]
const isWIP = includes(danger.github.pr.title, '[WIP]');
if (isWIP) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':construction_worker: Work In Progress';
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
const idea = 'This PR appears to be a work in progress, and may not be ready to be merged yet.';
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
warn(`${title} - <i>${idea}</i>`);
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
// Warns if there are changes to package.json, and tags the team.
const packageChanged = includes(danger.git.modified_files, 'package.json');
if (packageChanged) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':lock: package.json';
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
const idea = 'Changes were made to package.json. ' +
'This will require a manual import by a Facebook employee.';
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
warn(`${title} - <i>${idea}</i>`);
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
// Warns if a test plan is missing.
const gettingStartedChanged = includes(danger.git.modified_files, 'docs/GettingStarted.md');
const includesTestPlan = danger.github.pr.body.toLowerCase().includes('test plan');
// Warns if a test plan is missing, when editing the Getting Started guide. This page needs to be
// tested in all its permutations.
if (!includesTestPlan && gettingStartedChanged) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':clipboard: Test Plan';
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
const idea = 'This PR appears to be missing a Test Plan.';
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
warn(`${title} - <i>${idea}</i>`);
markdown('@facebook-github-bot label Needs more information');
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
// Doc edits rarely require a test plan. We'll trust the reviewer to push back if one is needed.
if (!includesTestPlan && !editsDocs) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':clipboard: Test Plan';
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
const idea = 'This PR appears to be missing a Test Plan.';
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
warn(`${title} - <i>${idea}</i>`);
markdown('@facebook-github-bot label Needs more information');
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
// Tags PRs that have been submitted by a core contributor.
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
// TODO: Switch to using an actual MAINTAINERS file.
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
const taskforce = fs.readFileSync('../bots/IssueCommands.txt', 'utf8').split('\n')[0].split(':')[1];
const isSubmittedByTaskforce = includes(taskforce, danger.github.pr.user.login);
if (isSubmittedByTaskforce) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
markdown('@facebook-github-bot label Core Team');
}
// Tags big PRs
var bigPRThreshold = 600;
if (danger.github.pr.additions + danger.github.pr.deletions > bigPRThreshold) {
const title = ':exclamation: Big PR';
const idea = `This PR is extremely unlikely to get reviewed because it touches ${danger.github.pr.additions + danger.github.pr.deletions} lines.`;
warn(`${title} - <i>${idea}</i>`);
markdown('@facebook-github-bot large-pr');
}
if (danger.git.modified_files + danger.git.added_files + danger.git.deleted_files > bigPRThreshold) {
const title = ':exclamation: Big PR';
const idea = `This PR is extremely unlikely to get reviewed because it touches ${danger.git.modified_files + danger.git.added_files + danger.git.deleted_files} files.`;
warn(`${title} - <i>${idea}</i>`);
markdown('@facebook-github-bot large-pr');
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
// Warns if the bots whitelist file is updated.
const issueCommandsFileModified = includes(danger.git.modified_files, 'bots/IssueCommands.txt');
if (issueCommandsFileModified) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':exclamation: Bots';
const idea = 'This PR appears to modify the list of people that may issue ' +
'commands to the GitHub bot.';
warn(`${title} - <i>${idea}</i>`);
Adds Danger support Summary: Testing Danger support in CI. Continuation of #14964, which Circle stopped building. Update your node modules first: `npm install` `npm run danger pr https://github.com/facebook/react-native/pull/14951` Verify output. This PR should trigger a WIP warning, as well as a package.json warning: ``` > react-native@1000.0.0 danger /Users/hramos/git/react-native > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14951" { fails: [], warnings: [ { message: ":construction_worker: Work In Progress - <i>Do not merge yet.</i>" }, { message: ":lock: Changes were made to package.json - <i>This will require a manual import. Once approved, a Facebook employee should import the PR, then run `yarn add` for any new packages.</i>" } ], messages: [], markdowns: ["This PR requires attention from the facebook/react-native team."] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/14946` Verify output. This PR should trigger a warning against the lack of a test plan (note that the PR does have a test plan, but it does not title it as such): ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan</i>" } ], messages: [], markdowns: [] } ``` `npm run danger pr https://github.com/facebook/react-native/pull/13186` Should warn against a missing test plan: ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` If the author is able to issue bot commands, we reasonably assume that this is coming from an established core contributor. Their PRs will be flagged for expedited review: `npm run danger pr https://github.com/facebook/react-native/pull/14895` ``` { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" } ], messages: [], markdowns: ["This PR has been submitted by a core contributor. Notifying facebook/react-native."] } ``` Closes https://github.com/facebook/react-native/pull/15061 Differential Revision: D5436605 Pulled By: hramos fbshipit-source-id: 4ba9e812387d8a69893dab537af9b6cd108753cf
2017-07-18 18:08:35 +00:00
}
Warn if base !== master, tag CODEOWNERS Summary: The following PR modifies the Danger rules in the following way: 1. Verifies if a PR is opened against master. If not, it will warn (if opened against stable) or fail (anything else). 2. No longer adds a markdown message tagging the facebook/react-native team, as the bot does not have the necessary scope to mention the team. 3. Mentions people that have marked themselves as interested in a file, when that file is modified. This is based off CODEOWNERS. The bot should be able to use mentions here as it will act as any other regular user. Verify it tags the right people in https://github.com/facebook/react-native/pull/15139 ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15139 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15139" { fails: [], warnings: [], messages: [], markdowns: ["Attention: grabbou, kureev"] } ``` It should not tag anyone for https://github.com/facebook/react-native/pull/15175: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` It should warn on https://github.com/facebook/react-native/pull/14640 as it targets 0.45-stable: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/14640 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14640" { fails: [], warnings: [ { message: ":grey_question: Base Branch - <i>The base branch for this PR is something other than `master`. Are you sure you want to merge these changes into a stable release? If you are interested in backporting updates to an older release, the suggested approach is to land those changes on `master` first and then cherry-pick the commits into the branch for that release. The [Releases Guide](https://github.com/facebook/react-native/blob/master/Releases.md) has more information.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` It should not warn on https://github.com/facebook/react-native/pull/15175 because it targets master. ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` Closes https://github.com/facebook/react-native/pull/15179 Differential Revision: D5490047 Pulled By: hramos fbshipit-source-id: a46a23b7d0a59d12b8039746d6e9c4399ef32d5f
2017-07-25 19:14:41 +00:00
// Warns if the PR is opened against stable, as commits need to be cherry picked and tagged by a release maintainer.
// Fails if the PR is opened against anything other than `master` or `-stable`.
const isMergeRefMaster = danger.github.pr.base.ref === 'master';
const isMergeRefStable = danger.github.pr.base.ref.indexOf(`-stable`) !== -1;
if (!isMergeRefMaster && isMergeRefStable) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':grey_question: Base Branch';
Warn if base !== master, tag CODEOWNERS Summary: The following PR modifies the Danger rules in the following way: 1. Verifies if a PR is opened against master. If not, it will warn (if opened against stable) or fail (anything else). 2. No longer adds a markdown message tagging the facebook/react-native team, as the bot does not have the necessary scope to mention the team. 3. Mentions people that have marked themselves as interested in a file, when that file is modified. This is based off CODEOWNERS. The bot should be able to use mentions here as it will act as any other regular user. Verify it tags the right people in https://github.com/facebook/react-native/pull/15139 ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15139 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15139" { fails: [], warnings: [], messages: [], markdowns: ["Attention: grabbou, kureev"] } ``` It should not tag anyone for https://github.com/facebook/react-native/pull/15175: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` It should warn on https://github.com/facebook/react-native/pull/14640 as it targets 0.45-stable: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/14640 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14640" { fails: [], warnings: [ { message: ":grey_question: Base Branch - <i>The base branch for this PR is something other than `master`. Are you sure you want to merge these changes into a stable release? If you are interested in backporting updates to an older release, the suggested approach is to land those changes on `master` first and then cherry-pick the commits into the branch for that release. The [Releases Guide](https://github.com/facebook/react-native/blob/master/Releases.md) has more information.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` It should not warn on https://github.com/facebook/react-native/pull/15175 because it targets master. ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` Closes https://github.com/facebook/react-native/pull/15179 Differential Revision: D5490047 Pulled By: hramos fbshipit-source-id: a46a23b7d0a59d12b8039746d6e9c4399ef32d5f
2017-07-25 19:14:41 +00:00
const idea = 'The base branch for this PR is something other than `master`. Are you sure you want to merge these changes into a stable release? If you are interested in backporting updates to an older release, the suggested approach is to land those changes on `master` first and then cherry-pick the commits into the branch for that release. The [Releases Guide](https://github.com/facebook/react-native/blob/master/Releases.md) has more information.';
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
warn(`${title} - <i>${idea}</i>`);
Warn if base !== master, tag CODEOWNERS Summary: The following PR modifies the Danger rules in the following way: 1. Verifies if a PR is opened against master. If not, it will warn (if opened against stable) or fail (anything else). 2. No longer adds a markdown message tagging the facebook/react-native team, as the bot does not have the necessary scope to mention the team. 3. Mentions people that have marked themselves as interested in a file, when that file is modified. This is based off CODEOWNERS. The bot should be able to use mentions here as it will act as any other regular user. Verify it tags the right people in https://github.com/facebook/react-native/pull/15139 ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15139 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15139" { fails: [], warnings: [], messages: [], markdowns: ["Attention: grabbou, kureev"] } ``` It should not tag anyone for https://github.com/facebook/react-native/pull/15175: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` It should warn on https://github.com/facebook/react-native/pull/14640 as it targets 0.45-stable: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/14640 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14640" { fails: [], warnings: [ { message: ":grey_question: Base Branch - <i>The base branch for this PR is something other than `master`. Are you sure you want to merge these changes into a stable release? If you are interested in backporting updates to an older release, the suggested approach is to land those changes on `master` first and then cherry-pick the commits into the branch for that release. The [Releases Guide](https://github.com/facebook/react-native/blob/master/Releases.md) has more information.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` It should not warn on https://github.com/facebook/react-native/pull/15175 because it targets master. ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` Closes https://github.com/facebook/react-native/pull/15179 Differential Revision: D5490047 Pulled By: hramos fbshipit-source-id: a46a23b7d0a59d12b8039746d6e9c4399ef32d5f
2017-07-25 19:14:41 +00:00
} else if (!isMergeRefMaster && !isMergeRefStable) {
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
const title = ':exclamation: Base Branch';
Warn if base !== master, tag CODEOWNERS Summary: The following PR modifies the Danger rules in the following way: 1. Verifies if a PR is opened against master. If not, it will warn (if opened against stable) or fail (anything else). 2. No longer adds a markdown message tagging the facebook/react-native team, as the bot does not have the necessary scope to mention the team. 3. Mentions people that have marked themselves as interested in a file, when that file is modified. This is based off CODEOWNERS. The bot should be able to use mentions here as it will act as any other regular user. Verify it tags the right people in https://github.com/facebook/react-native/pull/15139 ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15139 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15139" { fails: [], warnings: [], messages: [], markdowns: ["Attention: grabbou, kureev"] } ``` It should not tag anyone for https://github.com/facebook/react-native/pull/15175: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` It should warn on https://github.com/facebook/react-native/pull/14640 as it targets 0.45-stable: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/14640 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14640" { fails: [], warnings: [ { message: ":grey_question: Base Branch - <i>The base branch for this PR is something other than `master`. Are you sure you want to merge these changes into a stable release? If you are interested in backporting updates to an older release, the suggested approach is to land those changes on `master` first and then cherry-pick the commits into the branch for that release. The [Releases Guide](https://github.com/facebook/react-native/blob/master/Releases.md) has more information.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` It should not warn on https://github.com/facebook/react-native/pull/15175 because it targets master. ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` Closes https://github.com/facebook/react-native/pull/15179 Differential Revision: D5490047 Pulled By: hramos fbshipit-source-id: a46a23b7d0a59d12b8039746d6e9c4399ef32d5f
2017-07-25 19:14:41 +00:00
const idea = 'The base branch for this PR is something other than `master`. [Are you sure you want to target something other than the `master` branch?](http://facebook.github.io/react-native/docs/contributing.html#pull-requests)';
Flag large pull requests, add large-pr command Summary: We sometimes get large PRs that sit for a long time without being reviewed. In some cases, the PR touches too many files or lines, and the author would benefit from splitting the PR into smaller easier-to-review PRs. In this PR, we automatically flag such PRs using the existing Danger PR automation functionality. This PR achieves the objective by doing the following: * Add facebook-open-source-bot to `IssueCommands.txt`, allowing it to add labels and close issues/PRs via facebook-github-bot commands. * Adds a `large-pr` command to facebook-github-bot. This command will add a short blurb, apply a new "Large PR" label, and close the PR. * Updates the Dangerfile to check for PRs that touch over 600 lines and/or files. In such cases it will warn and then issue the large-pr command. Additional changes: * Tag core contributor PRs with the "Core Team" label. This is a slight change in policy, in that the label used to be applied after the fact (after the PR was escalated for review). It's more convenient to monitor labels, so we'll start checking for PRs tagged as such and ensure they get escalated as needed. cc skevy Thanks to TheSavior for suggesting this change. Testing against PR #10084 which touches over 600 lines: ``` $ cd danger $ DANGER_GITHUB_API_TOKEN="e622517d9f1136ea8900""07c6373666312cdfaa69" npm run danger pr https://github.com/facebook/react-native/pull/10084 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/10084" { fails: [], warnings: [ { message: ":clipboard: Test Plan - <i>This PR appears to be missing a Test Plan.</i>" }, { message: ":exclamation: Big PR - <i>This PR is extremely unlikely to get reviewed because it touches 613 lines.</i>" } ], messages: [], markdowns: ["facebook-github-bot label Needs more information", "facebook-github-bot large-pr"] } ``` Result: successfully flagged as being a large PR. Closes https://github.com/facebook/react-native/pull/15519 Differential Revision: D5647085 Pulled By: hramos fbshipit-source-id: dfa0f6580b9373085eba856de257a8d2452efbdc
2017-08-17 03:55:18 +00:00
fail(`${title} - <i>${idea}</i>`);
Warn if base !== master, tag CODEOWNERS Summary: The following PR modifies the Danger rules in the following way: 1. Verifies if a PR is opened against master. If not, it will warn (if opened against stable) or fail (anything else). 2. No longer adds a markdown message tagging the facebook/react-native team, as the bot does not have the necessary scope to mention the team. 3. Mentions people that have marked themselves as interested in a file, when that file is modified. This is based off CODEOWNERS. The bot should be able to use mentions here as it will act as any other regular user. Verify it tags the right people in https://github.com/facebook/react-native/pull/15139 ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15139 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15139" { fails: [], warnings: [], messages: [], markdowns: ["Attention: grabbou, kureev"] } ``` It should not tag anyone for https://github.com/facebook/react-native/pull/15175: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` It should warn on https://github.com/facebook/react-native/pull/14640 as it targets 0.45-stable: ``` $ npm run danger pr https://github.com/facebook/react-native/pull/14640 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/14640" { fails: [], warnings: [ { message: ":grey_question: Base Branch - <i>The base branch for this PR is something other than `master`. Are you sure you want to merge these changes into a stable release? If you are interested in backporting updates to an older release, the suggested approach is to land those changes on `master` first and then cherry-pick the commits into the branch for that release. The [Releases Guide](https://github.com/facebook/react-native/blob/master/Releases.md) has more information.</i>" } ], messages: [], markdowns: [":page_facing_up: Thanks for your contribution to the docs!"] } ``` It should not warn on https://github.com/facebook/react-native/pull/15175 because it targets master. ``` $ npm run danger pr https://github.com/facebook/react-native/pull/15175 > @ danger /Users/hramos/git/react-native/danger > node ./node_modules/.bin/danger "pr" "https://github.com/facebook/react-native/pull/15175" { fails: [], warnings: [], messages: [], markdowns: [] } ``` Closes https://github.com/facebook/react-native/pull/15179 Differential Revision: D5490047 Pulled By: hramos fbshipit-source-id: a46a23b7d0a59d12b8039746d6e9c4399ef32d5f
2017-07-25 19:14:41 +00:00
}
// People can add themselves to CODEOWNERS in order to be automatically added as reviewers when a file matching a glob pattern is modified. The following will have the bot add a mention in that case.
const codeowners = fs.readFileSync('../.github/CODEOWNERS', 'utf8').split('\n');
let mentions = [];
codeowners.forEach((codeowner) => {
const pattern = codeowner.split(' ')[0];
const owners = codeowner.substring(pattern.length).trim().split(' ');
const modifiedFileHasOwner = path => minimatch(path, pattern);
const modifiesOwnedCode = danger.git.modified_files.filter(modifiedFileHasOwner).length > 0;
if (modifiesOwnedCode) {
mentions = mentions.concat(owners);
}
});
const isOwnedCodeModified = mentions.length > 0;
if (isOwnedCodeModified) {
const uniqueMentions = new Set(mentions);
markdown('Attention: ' + [...uniqueMentions].join(', '));
}