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