]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
add haunt w/ issue guideline spec
authorJacob Thornton <jacobthornton@gmail.com>
Sun, 22 Jul 2012 19:57:39 +0000 (12:57 -0700)
committerJacob Thornton <jacobthornton@gmail.com>
Sun, 22 Jul 2012 19:57:39 +0000 (12:57 -0700)
.issue-guidelines.js [new file with mode: 0644]
Makefile

diff --git a/.issue-guidelines.js b/.issue-guidelines.js
new file mode 100644 (file)
index 0000000..c2de453
--- /dev/null
@@ -0,0 +1,85 @@
+/* ==========================================================
+ * issue-guidelines.js
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================================================== */
+
+var assert = require('assert')
+
+module.exports = {
+
+    'pull-requests': {
+
+        'should always be made against -wip branches': function (pull) {
+            assert.ok(/\-wip$/.test(pull.base.label))
+        },
+
+        'should always be made from feature branches': function (pull) {
+            assert.ok(pull.head.label != 'master')
+        },
+
+        'should always include a unit test if changing js files': function (pull) {
+            var hasJS    = false
+            var hasTests = false
+
+            pull.files.forEach(function (file) {
+                if (/^js\/[^./]+.js/.test(file.filename))            hasJS    = true
+                if (/^js\/test\/unit\/[^.]+.js/.test(file.filename)) hasTests = true
+            })
+
+            assert.ok(!hasJS || hasJS && hasTests)
+        },
+
+        'after': function (pull) {
+            if (pull.reporter.stats.failures) {
+                pull.reportFailures(pull.close.bind(pull))
+            }
+        }
+
+    },
+
+    'issues': {
+
+        'before': function (issue) {
+            var plus   = {}
+            var labels = issue.labels.map(function (label) { return label.name });
+
+            if (~labels.indexOf('popular')) return
+
+            issue.comments.forEach(function (comment) {
+                if (/\+1/.test(comment.body)) plus[comment.user.login] = true
+            })
+
+            if (Object.keys(plus).length > 5) {
+                issue.tag('popular')
+                issue.comment('Tagging this issue as popular, please stop commenting on this issue with +1. thanks!')
+            }
+        },
+
+        'should include a jsfiddle/jsbin illustrating the problem if tagged with js but not a feature': function (issue) {
+            var labels = issue.labels.map(function (label) { return label.name });
+            if (~labels.indexOf('js') && !~labels.indexOf('feature')) assert.ok(/(jsfiddle|jsbin)/.test(issue.body))
+        },
+
+        'after': function (issue) {
+            if (issue.reporter.stats.failures) {
+                issue.reportFailures(issue.close.bind(issue))
+            }
+        }
+
+    }
+
+}
\ No newline at end of file
index 827b6920ec83f9da4c49d9f35b5d8bd3619ab537..ba648de20e526b63972bd3a60ea0613f06b1d167 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -90,5 +90,12 @@ watch:
        echo "Watching less files..."; \
        watchr -e "watch('less/.*\.less') { system 'make' }"
 
+#
+# HAUNT GITHUB ISSUES 4 FAT & MDO ONLY (O_O  )
+#
+
+haunt:
+       @haunt -s .issue-guidelines.js https://github.com/twitter/bootstrap
+
 
 .PHONY: docs watch gh-pages
\ No newline at end of file