"use strict"; require("typings-test"); var gulp = require("gulp"); var gulpFunction = require("../dist/index.js"); var beautylog = require("beautylog"); var Q = require("q"); var myFunction = function () { var done = Q.defer(); beautylog.log("Function executed"); done.resolve(); return done.promise; }; var myFunction2 = function () { var done = Q.defer(); beautylog.ok("Function2 executed"); done.resolve(); return done.promise; }; var myFunction3 = function () { var done = Q.defer(); beautylog.success("Function3 executed"); done.resolve(); return done.promise; }; var beforeFunction = function () { var done = Q.defer(); beautylog.success("beforeFunction executed"); done.resolve(); return done.promise; }; var middleFunctionRun = false; var middleFunction = function () { var done = Q.defer(); beautylog.success("middleFunction executed"); setTimeout(function () { beautylog.log("timeout fired"); middleFunctionRun = true; done.resolve(); }, 500); return done.promise; }; var afterFunction = function () { var done = Q.defer(); beautylog.success("afterFunction executed"); done.resolve(); return done.promise; }; var timeoutFunction = function () { var done = Q.defer(); setTimeout(function () { beautylog.log("largeTimeout fired"); done.resolve(); }, 2000); return done.promise; }; describe("gulpFunction", function () { it("should run through smoothly with " + "'forEach'".blue, function (done) { gulp.src('./test/*.md') .pipe(gulpFunction(myFunction, 'forEach')) .pipe(gulp.dest("./test/result/")); gulp.src('./test/*.md') .pipe(gulpFunction([myFunction2, myFunction3], 'forEach')) .pipe(gulp.dest("./test/result/")) .pipe(gulpFunction(done, "atEnd")); }); it("should run through smoothly with " + "'atEnd'".blue, function (done) { gulp.src('./test/*.md') .pipe(gulpFunction(myFunction, 'atEnd')) .pipe(gulp.dest("./test/result/")); gulp.src('./test/*.md') .pipe(gulpFunction([myFunction2, myFunction3], 'atEnd')) .pipe(gulp.dest("./test/result/")) .pipe(gulpFunction(done, "atEnd")); }); it("should run through smoothly once with " + "'atFirst'".blue, function (done) { gulp.src('./test/*.md') .pipe(gulpFunction([myFunction2, myFunction3], 'forFirst')) .pipe(gulp.dest("./test/result/")) .pipe(gulpFunction(done, "atEnd")); }); it("should run in order", function (done) { this.timeout(5000); var stream = gulp.src('./test/*.md') .pipe(gulpFunction([beforeFunction, middleFunction, middleFunction], 'atEnd')) .pipe(gulpFunction(function () { beautylog.log("stream progressed"); var done2 = Q.defer(); done2.resolve(); return done2.promise; }, "forEach")) .pipe(gulpFunction(function () { beautylog.log("nextStep"); })) .pipe(gulpFunction(afterFunction, "atEnd")) .pipe(gulpFunction(timeoutFunction, "atEnd")); stream.on("finish", function () { beautylog.info("stream finished"); done(); }); }); }); //# sourceMappingURL=data:application/json;charset=utf8;base64,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QyxDQUFDLENBQUM7UUFFakQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUM7WUFDZixTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEMsSUFBSSxFQUFFLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtdGVzdFwiXHJcbnZhciBndWxwID0gcmVxdWlyZShcImd1bHBcIik7XHJcbnZhciBndWxwRnVuY3Rpb24gPSByZXF1aXJlKFwiLi4vZGlzdC9pbmRleC5qc1wiKTtcclxudmFyIGJlYXV0eWxvZyA9IHJlcXVpcmUoXCJiZWF1dHlsb2dcIik7XHJcbnZhciBRID0gcmVxdWlyZShcInFcIik7XHJcblxyXG52YXIgbXlGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBkb25lID0gUS5kZWZlcigpXHJcbiAgICBiZWF1dHlsb2cubG9nKFwiRnVuY3Rpb24gZXhlY3V0ZWRcIik7XHJcbiAgICBkb25lLnJlc29sdmUoKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn07XHJcbnZhciBteUZ1bmN0aW9uMiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBkb25lID0gUS5kZWZlcigpO1xyXG4gICAgYmVhdXR5bG9nLm9rKFwiRnVuY3Rpb24yIGV4ZWN1dGVkXCIpO1xyXG4gICAgZG9uZS5yZXNvbHZlKCk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59O1xyXG52YXIgbXlGdW5jdGlvbjMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZG9uZSA9IFEuZGVmZXIoKTtcclxuICAgIGJlYXV0eWxvZy5zdWNjZXNzKFwiRnVuY3Rpb24zIGV4ZWN1dGVkXCIpO1xyXG4gICAgZG9uZS5yZXNvbHZlKCk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59O1xyXG5cclxudmFyIGJlZm9yZUZ1bmN0aW9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGRvbmUgPSBRLmRlZmVyKCk7XHJcbiAgICBiZWF1dHlsb2cuc3VjY2VzcyhcImJlZm9yZUZ1bmN0aW9uIGV4ZWN1dGVkXCIpO1xyXG4gICAgZG9uZS5yZXNvbHZlKCk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59O1xyXG5cclxudmFyIG1pZGRsZUZ1bmN0aW9uUnVuID0gZmFsc2U7XHJcblxyXG52YXIgbWlkZGxlRnVuY3Rpb24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZG9uZSA9IFEuZGVmZXIoKTtcclxuICAgIGJlYXV0eWxvZy5zdWNjZXNzKFwibWlkZGxlRnVuY3Rpb24gZXhlY3V0ZWRcIik7XHJcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgYmVhdXR5bG9nLmxvZyhcInRpbWVvdXQgZmlyZWRcIik7XHJcbiAgICAgICAgbWlkZGxlRnVuY3Rpb25SdW4gPSB0cnVlO1xyXG4gICAgICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgfSwgNTAwKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn07XHJcblxyXG52YXIgYWZ0ZXJGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBkb25lID0gUS5kZWZlcigpO1xyXG4gICAgYmVhdXR5bG9nLnN1Y2Nlc3MoXCJhZnRlckZ1bmN0aW9uIGV4ZWN1dGVkXCIpO1xyXG4gICAgZG9uZS5yZXNvbHZlKCk7XHJcbiAgICByZXR1cm4gZG9uZS5wcm9taXNlO1xyXG59O1xyXG5cclxubGV0IHRpbWVvdXRGdW5jdGlvbiA9IGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgZG9uZSA9IFEuZGVmZXIoKTtcclxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuICAgICAgICBiZWF1dHlsb2cubG9nKFwibGFyZ2VUaW1lb3V0IGZpcmVkXCIpO1xyXG4gICAgICAgIGRvbmUucmVzb2x2ZSgpO1xyXG4gICAgfSwyMDAwKTtcclxuICAgIHJldHVybiBkb25lLnByb21pc2U7XHJcbn07XHJcblxyXG5cclxuXHJcbmRlc2NyaWJlKFwiZ3VscEZ1bmN0aW9uXCIsZnVuY3Rpb24oKXtcclxuICAgIGl0KFwic2hvdWxkIHJ1biB0aHJvdWdoIHNtb290aGx5IHdpdGggXCIgKyBcIidmb3JFYWNoJ1wiLmJsdWUsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgZ3VscC5zcmMoJy4vdGVzdC8qLm1kJylcclxuICAgICAgICAgICAgLnBpcGUoZ3VscEZ1bmN0aW9uKG15RnVuY3Rpb24sJ2ZvckVhY2gnKSlcclxuICAgICAgICAgICAgLnBpcGUoZ3VscC5kZXN0KFwiLi90ZXN0L3Jlc3VsdC9cIikpO1xyXG5cclxuICAgICAgICBndWxwLnNyYygnLi90ZXN0LyoubWQnKVxyXG4gICAgICAgICAgICAucGlwZShndWxwRnVuY3Rpb24oW215RnVuY3Rpb24yLG15RnVuY3Rpb24zXSwnZm9yRWFjaCcpKVxyXG4gICAgICAgICAgICAucGlwZShndWxwLmRlc3QoXCIuL3Rlc3QvcmVzdWx0L1wiKSlcclxuICAgICAgICAgICAgLnBpcGUoZ3VscEZ1bmN0aW9uKGRvbmUsXCJhdEVuZFwiKSk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgaXQoXCJzaG91bGQgcnVuIHRocm91Z2ggc21vb3RobHkgd2l0aCBcIiArIFwiJ2F0RW5kJ1wiLmJsdWUsZnVuY3Rpb24oZG9uZSl7XHJcbiAgICAgICAgZ3VscC5zcmMoJy4vdGVzdC8qLm1kJylcclxuICAgICAgICAgICAgLnBpcGUoZ3VscEZ1bmN0aW9uKG15RnVuY3Rpb24sJ2F0RW5kJykpXHJcbiAgICAgICAgICAgIC5waXBlKGd1bHAuZGVzdChcIi4vdGVzdC9yZXN1bHQvXCIpKTtcclxuXHJcbiAgICAgICAgZ3VscC5zcmMoJy4vdGVzdC8qLm1kJylcclxuICAgICAgICAgICAgLnBpcGUoZ3VscEZ1bmN0aW9uKFtteUZ1bmN0aW9uMixteUZ1bmN0aW9uM10sJ2F0RW5kJykpXHJcbiAgICAgICAgICAgIC5waXBlKGd1bHAuZGVzdChcIi4vdGVzdC9yZXN1bHQvXCIpKVxyXG4gICAgICAgICAgICAucGlwZShndWxwRnVuY3Rpb24oZG9uZSxcImF0RW5kXCIpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGl0KFwic2hvdWxkIHJ1biB0aHJvdWdoIHNtb290aGx5IG9uY2Ugd2l0aCBcIiArIFwiJ2F0Rmlyc3QnXCIuYmx1ZSxmdW5jdGlvbihkb25lKXtcclxuXHJcbiAgICAgICAgZ3VscC5zcmMoJy4vdGVzdC8qLm1kJylcclxuICAgICAgICAgICAgLnBpcGUoZ3VscEZ1bmN0aW9uKFtteUZ1bmN0aW9uMixteUZ1bmN0aW9uM10sJ2ZvckZpcnN0JykpXHJcbiAgICAgICAgICAgIC5waXBlKGd1bHAuZGVzdChcIi4vdGVzdC9yZXN1bHQvXCIpKVxyXG4gICAgICAgICAgICAucGlwZShndWxwRnVuY3Rpb24oZG9uZSxcImF0RW5kXCIpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGl0KFwic2hvdWxkIHJ1biBpbiBvcmRlclwiLGZ1bmN0aW9uKGRvbmUpe1xyXG4gICAgICAgIHRoaXMudGltZW91dCg1MDAwKTtcclxuICAgICAgICBsZXQgc3RyZWFtID0gZ3VscC5zcmMoJy4vdGVzdC8qLm1kJylcclxuICAgICAgICAgICAgLnBpcGUoZ3VscEZ1bmN0aW9uKFtiZWZvcmVGdW5jdGlvbixtaWRkbGVGdW5jdGlvbixtaWRkbGVGdW5jdGlvbl0sJ2F0RW5kJykpXHJcbiAgICAgICAgICAgIC5waXBlKGd1bHBGdW5jdGlvbihmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgYmVhdXR5bG9nLmxvZyhcInN0cmVhbSBwcm9ncmVzc2VkXCIpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRvbmUyID0gUS5kZWZlcigpO1xyXG4gICAgICAgICAgICAgICAgZG9uZTIucmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUyLnByb21pc2U7XHJcbiAgICAgICAgICAgIH0sXCJmb3JFYWNoXCIpKVxyXG4gICAgICAgICAgICAucGlwZShndWxwRnVuY3Rpb24oZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgICAgIGJlYXV0eWxvZy5sb2coXCJuZXh0U3RlcFwiKTtcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIC5waXBlKGd1bHBGdW5jdGlvbihhZnRlckZ1bmN0aW9uLFwiYXRFbmRcIikpXHJcbiAgICAgICAgICAgIC5waXBlKGd1bHBGdW5jdGlvbih0aW1lb3V0RnVuY3Rpb24sXCJhdEVuZFwiKSk7XHJcblxyXG4gICAgICAgIHN0cmVhbS5vbihcImZpbmlzaFwiLGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIGJlYXV0eWxvZy5pbmZvKFwic3RyZWFtIGZpbmlzaGVkXCIpO1xyXG4gICAgICAgICAgICBkb25lKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxufSk7XHJcblxyXG4iXX0=