diff --git a/.bithoundrc b/.bithoundrc new file mode 100644 index 0000000..d1fbecb --- /dev/null +++ b/.bithoundrc @@ -0,0 +1,5 @@ +{ + "ignore": [ + "es5/**/*.js" + ] +} diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..a7c7506 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,4 @@ +languages: + JavaScript: true +exclude_paths: + - es5/* diff --git a/.travis.yml b/.travis.yml index 4ff24fd..b40afc5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,3 +19,5 @@ env: global: - secure: MTVqTtbba6LXdAdB6xrp2VfQeDez40bFpwPmSdmlMTDlP0nv4FtM8TiWvRNWhwiGJBFBtTIyezzs/Rwje8kY4CopUsIqEnLzRCr3tr2UydnMNUqU8ELwxW+WDw+LJ+oUmXcqiqjQsWkDS8u1S7a+oRcv35NnsR7cPkVhJ8lwugyK0fz2/U0P76vgxNCbJq5pun4UoQ/uT55VzaJ5+ugjyOPmiwF0pXTiGSFtqi6toxl85YA/j8aO4IIGHOdjBceStcUoKILV/icZc4ea/cLUVSuRRsjoruun1qmmNDJBWBdiMfoyKfVjEl0A4zNMgY8XWI2vvkjfuUWfEftcAO/7EdPbIJFWLEoViRe6ZLw/4LBdGSJFXx/11K/o4f9XRus9OnKrPoSLHvX2Kb0rjIH5J1KlG/KsL0FEV2I1RUhTDm3RLmiQU7/kohe2KXZKd7yZGbgT6qVKNR3+zmA+tthZwk6kjlXFKbrTGry8DAwLWz5piVW3ZOev4bVfYxUS6trMuCplmkPUJ3H1xwDnoU0j56G9yurqbKEnTY90x84KZ67uRwRszPz/XnHq2kiJzQUgPM/TPsoXw/vGQMhifncGZ+iW24UehmY97JjUwJo3jGVKR6auDTNbRNpNortAKV9okC6xrWtPbtICPFe8PRY14prdwG/GOlU/zicz3J22VbM= - secure: nfqljCdoIS8KjZUxtsd5v1F1eqDmHwR29MTafGKYRKqiTVNGUMiEqY79VA4Hcmra/JSz0lDrX1ji2IQfrUgRFLzNEXjlA6JBz2R3xEMapkfpVSB7SBpKA49UljcBy5rw/SCmERQJba/BwBeXMOnZYJjL9wDypVfXITx5m+M47kNxEYgjj3TULGAGw2K31ZSDEBxpQXQ0BA1qNCjnJ971CICerlsc6LFpQJgZq17lSAZvJR1RYdLVn5sK1Z2iiir0WYQJv93L8djAYtiMKyWCZ9StYnc0+eUT0//6PBKlPF5jqdNSvqnrtkZbh+BGOf2OBcUEJGwX1R6xerx5rha1sClNh7KpNn8WtB2tzHhFjGtfwMNSfKdtWh+HrP/nKD+agALZVyCpVrxZkg1HoakFqhOxnddhSy/fvvCcV4fAk5yIQTmqEDF+/4IkVFN7NsA8gfbT6wzU9au75B9G5EKAtsZruloYXlIaIDLOSIStqJEqlU3iHwbHFG6kgevpR7Oap5wx68E6C9R+Zai1KxLvRMkxyQNNdK5QtpxHHEZq11lDHvM+RYQIaOjeuzaoDQWxuLA6pPufe27Qvb+RMp8BJhbiJUhhH7/HYwougqgoDJzRDIdNoU+lDKzbK8j4Jai9AU0SBOZx6WOVV84MJ326g0AL6UShfm4aL9yAQGzc5Wo= + - secure: xPgbWdG+KWotf09h1SRVnIhXXBHYtTuUHfVPVEBbtckVerD9T2tJkrqiV0UpN5crcwqfp/bux4g1KZfkm+5AF2rE6n5zFc830wZCkBJjUfuwEk+9RbbXfyeT/UqsHMqAwoTAoWhECI+NPOMO9CuH6/EI48grqIu0TnbFVLLTGVKn2gJMnhNuE8Yg8JjyAhHlUVOaelH+u5kClkQHafE346PXZB/ZNlB+Hlu/57mTu8X3ZzWlGSb5WK07sCw/1eiOZGklBL73P6C7s0lb+51Kg7Z/RXbNBJv8z3P6ejl7W8T3dkguqG+/JDTpSyzJqbLbKZcJCdoUNQmv0OtfUj4mJ2l0iMzlWKnfcGRyjXvhX4b96Bi03kaYzzVJyWEu3NNl+pko9wTfVMo9x3HrPspyMy++xo2OFLVwJyuOj+LQf/0A0OXmmRaYA2k+RPhd/aPHgyiBLKneo1WbAMX9wDoZa4XhvZupNY61olYxITma1s6AXghOuXqoEqNBmWQUY9QRDju8iH7fslBOIKdwJtvY5UgupTcf5/u+jTSNpRfg9qx63mbNTmMMMQ/eX5rmHz26szwQYrUISYHPHV6awbWwMP7I/epH1GBX/OhpZLd/ooZrc74IcfppHNmS/BJj9Jf29qolkpCFWKIIJI45wZarMKm/NDDj2EX2RWI5N0nhkWA= + - secure: oSJX2FoFbEzD8cD0wrXFWEsAK1YD7twkbukF99dJBp60Hz6DLp5UBvy0MK8u9vhmyQjfuGPCM4UzZrSy4nD6KrsM/s0JjZbZsTTGgtBRSjUA/zCpwvc9iPJSGKQHUKJnuHspQKPvp9L3txm1BvsoruGyRAz3u7L76SQ+DDTasMjcQRvbtp28xmWZ292LGSir6WWgGfKBeUnLZRVdzpdhFl07q/xOBsgUGIUo+qLJ6QnDn/gQ4DK9/9hhUvuGiMqHFbllO2j18habtwd2O+yQkqIftSOSgj7h+t7aHs0WgXweD6K3UxaAV5xMz3X54kuJpSEhibF7nNlNVzQuMi4/d3fwvtB1fkc71GwDZiH7VkXYx+sgnNegpu7KUZLRuR30+HEhu3dQW6JF2KnaKCHG0GyDVcak/U5ERlBvXyNVz5Y6OL7rjmIhDGrXOE1wnLLC0BDp+gKumcMCl8EKBhvXzq31YGlEe9drb57R2RUQvZdnkq0E6udCTopXGAtO5KELj8Zf2RAA94mNErg/REGcu0et/sN6JzgdNtWvTyl6qB689R72aKJRN6tVVr6WPYabcW0MkQI+48WSSos1vtVF9VtkCF5AlJ8MWjFYcL9XJL3SzMor9Xmj1wL9jfQQwz/H1/LcUyf4eUj6s+r79j1V8ccDWJBDfyeWjCmtyBhg5SY= diff --git a/gulpfile.babel.js b/gulpfile.babel.js index b2cb701..52034bb 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -1,3 +1,4 @@ +import "./tasks/suppress-errors.js"; import "./tasks/build-spec.js"; import "./tasks/build-spec-assets.js"; import "./tasks/build-lib.js"; @@ -6,3 +7,4 @@ import "./tasks/build.js"; import "./tasks/test-local.js"; import "./tasks/test-browsers.js"; import "./tasks/test.js"; +import "./tasks/test-watch.js"; diff --git a/package.json b/package.json index 7b39bd9..36ef5e7 100644 --- a/package.json +++ b/package.json @@ -41,24 +41,27 @@ "devDependencies": { "babel": "^5.5.6", "babel-eslint": "^3.1.20", - "eslint": "^0.24.0", "chai": "^3.0.0", "coveralls": "^2.11.2", + "eslint": "^0.24.0", "gulp": "^3.9.0", "gulp-babel": "^5.1.0", "gulp-istanbul": "^0.10.0", "gulp-mocha": "^2.1.1", + "gulp-util": "^3.0.6", "karma": "^0.12.36", "karma-browserify": "^4.2.1", "karma-chai": "^0.1.0", - "karma-mocha": "^0.1.10", - "karma-detect-browsers": "^2.0.0", "karma-chrome-launcher": "^0.2.0", + "karma-detect-browsers": "^2.0.0", "karma-firefox-launcher": "^0.1.6", "karma-ie-launcher": "^0.2.0", + "karma-mocha": "^0.1.10", "karma-phantomjs-launcher": "^0.2.0", "karma-safari-launcher": "^0.1.1", "karma-sauce-launcher": "^0.2.11", - "mocha": "^2.2.5" - } + "mocha": "^2.2.5", + "superstack": "0.0.4" + }, + "generatorVersion": "0.2.20" } diff --git a/tasks/suppress-errors.js b/tasks/suppress-errors.js new file mode 100644 index 0000000..fcfa22c --- /dev/null +++ b/tasks/suppress-errors.js @@ -0,0 +1,31 @@ +import gulp from "gulp"; +import gutil from "gulp-util"; + +// Watch tasks should depend on suppress-errors - it will force all stream pipes to print but not crash on error +gulp.task("suppress-errors", function(){ + function monkeyPatchPipe(o){ + while(!o.hasOwnProperty("pipe")){ + o = Object.getPrototypeOf(o); + if(!o){ + return; + } + } + var originalPipe = o.pipe; + var newPipe = function(){ + var result = originalPipe.apply(this, arguments); + result.setMaxListeners(0); + if(!result.pipe["monkey patched for suppress-errors"]){ + monkeyPatchPipe(result); + } + + return result.on("error", function (err) { + gutil.log(gutil.colors.yellow(err)); + gutil.beep(); + this.emit("end"); + }); + }; + newPipe["monkey patched for suppress-errors"] = true; + o.pipe = newPipe; + } + monkeyPatchPipe(gulp.src("")); +}); diff --git a/tasks/test-local.js b/tasks/test-local.js index f6a843a..381da73 100644 --- a/tasks/test-local.js +++ b/tasks/test-local.js @@ -1,5 +1,6 @@ import gulp from "gulp"; import mocha from "gulp-mocha"; +import "superstack"; import istanbul from "gulp-istanbul"; import paths from "../paths.json"; diff --git a/tasks/test-watch.js b/tasks/test-watch.js new file mode 100644 index 0000000..9c32b8c --- /dev/null +++ b/tasks/test-watch.js @@ -0,0 +1,11 @@ +import gulp from "gulp"; +import paths from "../paths.json"; + +gulp.task("test-watch", ["suppress-errors"], () => { + gulp.watch([ + paths.source.lib, + paths.source.spec, + paths.source.specAssets, + paths.source.libAssets + ], ["test-local"]); +});