chore: Implement danger for PRs (#1905)
This commit is contained in:
parent
49e52c6c00
commit
a7849a67ca
4 changed files with 2615 additions and 67 deletions
3
.babelrc
Normal file
3
.babelrc
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
// This is solely to avoid https://github.com/danger/danger-js/issues/261
|
||||||
|
// and should be fine to remove before much longer
|
||||||
|
{}
|
||||||
56
dangerfile.js
Normal file
56
dangerfile.js
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
/* global danger warn fail */
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var fs = require("fs"),
|
||||||
|
path = require("path"),
|
||||||
|
|
||||||
|
locater = require("locater"),
|
||||||
|
pinpoint = require("pinpoint"),
|
||||||
|
dedent = require("dedent");
|
||||||
|
|
||||||
|
// Various views of changed/added files
|
||||||
|
var jsfiles = danger.git.created_files
|
||||||
|
.concat(danger.git.modified_files)
|
||||||
|
.filter((file) => path.extname(file) === ".js"),
|
||||||
|
|
||||||
|
changelog = danger.git.modified_files.find((file) =>
|
||||||
|
file === "docs/change-log.md"
|
||||||
|
),
|
||||||
|
|
||||||
|
appfiles = jsfiles.filter((file) =>
|
||||||
|
file.indexOf("tests/") === -1
|
||||||
|
);
|
||||||
|
|
||||||
|
function link(file, anchor, text) {
|
||||||
|
var repo = danger.github.pr.head.repo.html_url,
|
||||||
|
ref = danger.github.pr.head.ref;
|
||||||
|
|
||||||
|
return danger.utils.href(`${repo}/blob/${ref}/${file}${anchor || ""}`, file || text);
|
||||||
|
}
|
||||||
|
|
||||||
|
// All PRs should be targeted against `next`
|
||||||
|
if(danger.github.pr.base.ref !== "next") {
|
||||||
|
warn("PRs should be based on `next`, rebase before submitting please");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Any non-test JS changes should probably have a change-log entry
|
||||||
|
if(appfiles.length && !changelog) {
|
||||||
|
warn(`Please include a ${link("docs/change-log.md", "changelog")} entry.`)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Call out if `o.only(...)` was left in
|
||||||
|
jsfiles
|
||||||
|
.filter((file) => file.indexOf("tests/") > -1)
|
||||||
|
.forEach((file) => {
|
||||||
|
var code = fs.readFileSync(file, "utf8"),
|
||||||
|
locs = locater.find("o.only", code);
|
||||||
|
|
||||||
|
locs.forEach((loc) =>
|
||||||
|
fail(dedent(`
|
||||||
|
${link(file, `#L${loc.line}`)} is preventing tests from running.
|
||||||
|
<pre lang="javascript">
|
||||||
|
${pinpoint(code, {line: loc.line, column : loc.cursor})}
|
||||||
|
</pre>
|
||||||
|
`))
|
||||||
|
)
|
||||||
|
});
|
||||||
2616
package-lock.json
generated
2616
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -11,6 +11,7 @@
|
||||||
"build": "npm run build-browser & npm run build-min",
|
"build": "npm run build-browser & npm run build-min",
|
||||||
"build-browser": "node bundler/cli browser.js -output mithril.js",
|
"build-browser": "node bundler/cli browser.js -output mithril.js",
|
||||||
"build-min": "node bundler/cli browser.js -output mithril.min.js -minify",
|
"build-min": "node bundler/cli browser.js -output mithril.min.js -minify",
|
||||||
|
"danger": "danger",
|
||||||
"lintdocs": "node docs/lint",
|
"lintdocs": "node docs/lint",
|
||||||
"gendocs": "node docs/generate",
|
"gendocs": "node docs/generate",
|
||||||
"lint": "eslint . || true",
|
"lint": "eslint . || true",
|
||||||
|
|
@ -26,9 +27,13 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"benchmark": "^2.1.4",
|
"benchmark": "^2.1.4",
|
||||||
|
"danger": "^1.0.0",
|
||||||
|
"dedent": "^0.7.0",
|
||||||
"eslint": "^3.19.0",
|
"eslint": "^3.19.0",
|
||||||
"istanbul": "^0.4.5",
|
"istanbul": "^0.4.5",
|
||||||
"marked": "^0.3.6"
|
"locater": "^1.3.0",
|
||||||
|
"marked": "^0.3.6",
|
||||||
|
"pinpoint": "^1.1.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"ospec": "./ospec/bin/ospec"
|
"ospec": "./ospec/bin/ospec"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue