From 8fb4a60fb3510c128ce8652fdc123ec5b405928c Mon Sep 17 00:00:00 2001 From: PhilKunz Date: Sat, 30 Jan 2016 05:29:54 +0100 Subject: [PATCH] now includes mocha --- index.d.ts | 18 +++++++++++- index.js | 60 ++++++++++++++++++++++++++++++++++++++-- test/assets/package.json | 1 - test/assets/test/test.js | 1 + ts/index.ts | 2 +- ts/npmts.default.ts | 5 +++- ts/npmts.options.ts | 8 ++++++ ts/npmts.promisechain.ts | 6 +++- ts/npmts.tests.ts | 7 +++-- 9 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 test/assets/test/test.js diff --git a/index.d.ts b/index.d.ts index 3456ecf..a260187 100644 --- a/index.d.ts +++ b/index.d.ts @@ -2,6 +2,7 @@ declare module NpmtsPlugins { var init: () => { beautylog: any; + fs: any; gulp: any; g: { insert: any; @@ -10,18 +11,30 @@ declare module NpmtsPlugins { typescript: any; }; mergeStream: any; + mocha: any; path: any; + q: any; smartcli: any; }; } declare module NpmtsPaths { var init: () => any; } +declare module NpmtsOptions { + var run: () => any; +} declare module NpmtsDefault { - var init: () => void; + var run: () => any; +} +declare module NpmtsTests { + var run: () => any; +} +declare module NpmtsPromisechain { + var init: () => any; } declare var plugins: { beautylog: any; + fs: any; gulp: any; g: { insert: any; @@ -30,7 +43,10 @@ declare var plugins: { typescript: any; }; mergeStream: any; + mocha: any; path: any; + q: any; smartcli: any; }; declare var paths: any; +declare var promisechain: any; diff --git a/index.js b/index.js index 489271f..eac587c 100644 --- a/index.js +++ b/index.js @@ -6,6 +6,7 @@ var NpmtsPlugins; NpmtsPlugins.init = function () { var plugins = { beautylog: require("beautylog"), + fs: require("fs"), gulp: require("gulp"), g: { insert: require("gulp-insert"), @@ -14,7 +15,9 @@ var NpmtsPlugins; typescript: require("gulp-typescript") }, mergeStream: require("merge2"), + mocha: require("mocha"), path: require("path"), + q: require("q"), smartcli: require("smartcli") }; return plugins; @@ -30,14 +33,25 @@ var NpmtsPaths; paths.tsd = plugins.path.join(paths.cwd, "ts/tsd.json"); paths.indexTS = plugins.path.join(paths.cwd, "ts/index.ts"); paths.testTS = plugins.path.join(paths.cwd, "ts/test.ts"); + paths.testDir = plugins.path.join(paths.cwd, "test/"); return paths; }; })(NpmtsPaths || (NpmtsPaths = {})); +/// +var NpmtsOptions; +(function (NpmtsOptions) { + NpmtsOptions.run = function () { + var done = plugins.q.defer(); + done.resolve(); //TODO: check for options + return done.promise; + }; +})(NpmtsOptions || (NpmtsOptions = {})); /// /// var NpmtsDefault; (function (NpmtsDefault) { - NpmtsDefault.init = function () { + NpmtsDefault.run = function () { + var done = plugins.q.defer(); plugins.gulp.task("defaultTsd", function (cb) { if (!process.env.TRAVIS) { plugins.g.tsd({ @@ -71,18 +85,56 @@ var NpmtsDefault; .pipe(plugins.g.typescript({ out: "test.js" })) - .pipe(plugins.gulp.dest(paths.cwd)); + .pipe(plugins.gulp.dest(paths.testDir)); }); plugins.gulp.task("defaultCleanup", function (cb) { plugins.beautylog.success("TypeScript for this module compiled successfully."); + done.resolve(); cb(); }); plugins.gulp.task("default", function (cb) { plugins.g.sequence("defaultTsd", "defaultIndexTS", "defaultTestTS", "defaultCleanup", cb); }); plugins.gulp.start.apply(plugins.gulp, ['default']); + return done.promise; }; })(NpmtsDefault || (NpmtsDefault = {})); +/// +var NpmtsTests; +(function (NpmtsTests) { + NpmtsTests.run = function () { + var done = plugins.q.defer(); + plugins.beautylog.info("Now running mocha tests"); + // Instantiate a Mocha instance. + var mocha = new plugins.mocha(); + var testDir = paths.testDir; + // Add each .js file to the mocha instance + plugins.fs.readdirSync(testDir).filter(function (file) { + // Only keep the .js files + return file.substr(-3) === '.js'; + }).forEach(function (file) { + mocha.addFile(plugins.path.join(testDir, file)); + }); + // Run the tests. + mocha.run(function (failures) { + process.on('exit', function () { + process.exit(failures); + }); + }); + return done.promise; + }; +})(NpmtsTests || (NpmtsTests = {})); +/// +var NpmtsPromisechain; +(function (NpmtsPromisechain) { + NpmtsPromisechain.init = function () { + var promisechain; + NpmtsOptions.run() + .then(NpmtsDefault.run) + .then(NpmtsTests.run); + return promisechain; + }; +})(NpmtsPromisechain || (NpmtsPromisechain = {})); /// /// /// @@ -90,6 +142,8 @@ var NpmtsDefault; /// /// /// +/// +/// var plugins = NpmtsPlugins.init(); var paths = NpmtsPaths.init(); -NpmtsDefault.init(); +var promisechain = NpmtsPromisechain.init(); diff --git a/test/assets/package.json b/test/assets/package.json index 2b7f147..f3ac885 100644 --- a/test/assets/package.json +++ b/test/assets/package.json @@ -9,6 +9,5 @@ "author": "", "license": "ISC", "dependencies": { - "npmts": "*" } } diff --git a/test/assets/test/test.js b/test/assets/test/test.js new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/test/assets/test/test.js @@ -0,0 +1 @@ + diff --git a/ts/index.ts b/ts/index.ts index cec0bee..abf6a2e 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -10,4 +10,4 @@ var plugins = NpmtsPlugins.init(); var paths = NpmtsPaths.init(); -NpmtsDefault.init(); +var promisechain = NpmtsPromisechain.init(); diff --git a/ts/npmts.default.ts b/ts/npmts.default.ts index 43740ce..4ec7747 100644 --- a/ts/npmts.default.ts +++ b/ts/npmts.default.ts @@ -1,7 +1,8 @@ /// module NpmtsDefault { - export var init = function() { + export var run = function() { + var done = plugins.q.defer(); plugins.gulp.task("defaultTsd",function(cb){ if(!process.env.TRAVIS) { plugins.g.tsd({ @@ -44,6 +45,7 @@ module NpmtsDefault { plugins.gulp.task("defaultCleanup",function(cb){ plugins.beautylog.success("TypeScript for this module compiled successfully."); + done.resolve(); cb(); }); @@ -52,5 +54,6 @@ module NpmtsDefault { }); plugins.gulp.start.apply(plugins.gulp, ['default']); + return done.promise; } } diff --git a/ts/npmts.options.ts b/ts/npmts.options.ts index e69de29..bf16d9b 100644 --- a/ts/npmts.options.ts +++ b/ts/npmts.options.ts @@ -0,0 +1,8 @@ +/// +module NpmtsOptions { + export var run = function(){ + var done = plugins.q.defer(); + done.resolve(); //TODO: check for options + return done.promise; + } +} \ No newline at end of file diff --git a/ts/npmts.promisechain.ts b/ts/npmts.promisechain.ts index 8dd03d9..6ae03b6 100644 --- a/ts/npmts.promisechain.ts +++ b/ts/npmts.promisechain.ts @@ -1,6 +1,10 @@ /// module NpmtsPromisechain { export var init = function(){ - + var promisechain; + NpmtsOptions.run() + .then(NpmtsDefault.run) + .then(NpmtsTests.run); + return promisechain; } } \ No newline at end of file diff --git a/ts/npmts.tests.ts b/ts/npmts.tests.ts index a3a253b..e30e771 100644 --- a/ts/npmts.tests.ts +++ b/ts/npmts.tests.ts @@ -1,10 +1,12 @@ /// module NpmtsTests { - export var init = function() { + export var run = function() { + var done = plugins.q.defer(); + plugins.beautylog.info("Now running mocha tests"); // Instantiate a Mocha instance. var mocha = new plugins.mocha(); - var testDir = 'some/dir/test'; + var testDir = paths.testDir; // Add each .js file to the mocha instance plugins.fs.readdirSync(testDir).filter(function(file){ @@ -23,5 +25,6 @@ module NpmtsTests { process.exit(failures); }); }); + return done.promise; } } \ No newline at end of file