kopia lustrzana https://github.com/c9/core
Merge pull request +10231 from c9/movetests
Move integration tests to profile dirpull/223/head
commit
3d718d9e21
|
@ -6,7 +6,7 @@
|
|||
require("c9/inline-mocha")(module);
|
||||
if (typeof define === "undefined") {
|
||||
require("amd-loader");
|
||||
require("../../test/setup_paths");
|
||||
require("./setup_paths");
|
||||
}
|
||||
|
||||
var assert = require("assert-diff");
|
||||
|
|
|
@ -192,7 +192,7 @@ function plugin(options, imports, register) {
|
|||
api.get("/test/all.json", function(req, res, next) {
|
||||
var base = __dirname + "/../../";
|
||||
var blacklistfile = base + "/test/blacklist.txt";
|
||||
var filefinder = require(base + "/test/filefinder.js");
|
||||
var filefinder = require(base + "/test/lib/filefinder.js");
|
||||
filefinder.find(base, "plugins", ".*_test.js", blacklistfile, function(err, result) {
|
||||
result.all = result.list.concat(result.blacklist);
|
||||
async.filterSeries(result.list, function(file, next) {
|
||||
|
|
|
@ -1,166 +0,0 @@
|
|||
/*
|
||||
filefinder - find files matching a specific file name pattern that are not found on a specified blacklist
|
||||
|
||||
=example=
|
||||
ff.find("/tmp", "files", ".*_test.js", "/tmp/blacklist", function(err, res) {
|
||||
console.log(util.inspect(res));
|
||||
});
|
||||
|
||||
--dirlist--
|
||||
one_test.js
|
||||
two_test.js
|
||||
three.js
|
||||
four_test.js
|
||||
|
||||
--blacklist--
|
||||
one_test.js
|
||||
files/two_test.js
|
||||
four
|
||||
|
||||
--result--
|
||||
{ countOk: 2,
|
||||
countPatternMis: 1,
|
||||
countBl: 1,
|
||||
list: [ 'files/four_test.js', 'files/one_test.js' ] }
|
||||
|
||||
*/
|
||||
|
||||
var fs = require("fs");
|
||||
var util = require("util");
|
||||
var path = require("path");
|
||||
|
||||
|
||||
var DEBUGMODE = false;
|
||||
|
||||
|
||||
|
||||
function filefinder(basedir, subdir, fnpattern, blacklistfile, cb) {
|
||||
if (DEBUGMODE) console.log("\n\n\n\nfilefinder()");
|
||||
if (cb) cb();
|
||||
}
|
||||
|
||||
filefinder.prototype.find = function(basedir, subdir, fnpattern, blacklistfile, cb) {
|
||||
if (DEBUGMODE) console.log("\n\n\n\nfind(%s, %s, %s)", path.join(basedir, subdir), fnpattern, blacklistfile);
|
||||
this.basedir = basedir;
|
||||
this.subdir = subdir;
|
||||
this.pattern = fnpattern;
|
||||
this.blacklistfile = blacklistfile;
|
||||
|
||||
this.flist = [];
|
||||
this.countBlacklisted = 0;
|
||||
this.countPatternMis = 0;
|
||||
var _self = this;
|
||||
|
||||
_self.getBlacklist(this.blacklistfile, function(err, blacklist) {
|
||||
_self.treewalk(basedir, subdir, fnpattern, blacklist, _self.flist, function(err, res) {
|
||||
// compose results object
|
||||
var result = {
|
||||
countOk: _self.flist.length,
|
||||
countPatternMis: _self.countPatternMis,
|
||||
countBl: _self.countBlacklisted,
|
||||
list: _self.flist,
|
||||
blacklist: blacklist
|
||||
};
|
||||
cb(null, result);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
filefinder.prototype.getBlacklist = function(filename, cb) {
|
||||
if (DEBUGMODE) console.log("getBlacklist()");
|
||||
var _self = this;
|
||||
_self.getFileInArray(filename, function(err, blacklist) {
|
||||
if (err) return cb(new Error("error reading blacklist file"));
|
||||
_self.arrayRemoveCrap(blacklist, function(err, blacklist) {
|
||||
if (DEBUGMODE) console.log("--blacklist--\nlength: %s\n%s\n-------------", blacklist.length, util.inspect(blacklist));
|
||||
cb(null, blacklist);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// read a text file and make each line a member of an array
|
||||
filefinder.prototype.getFileInArray = function(filename, cb) {
|
||||
if (DEBUGMODE) console.log("getFileInArray()");
|
||||
var array = [];
|
||||
fs.exists(filename, function (exists) {
|
||||
if (!exists) return cb(null, array);
|
||||
fs.readFile(filename, function(err, data) {
|
||||
if(err) return cb(err);
|
||||
array = data.toString().split("\n");
|
||||
cb(null, array);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
filefinder.prototype.arrayRemoveCrap = function(array, cb) {
|
||||
if (DEBUGMODE) console.log("arrayRemoveCrap()");
|
||||
|
||||
function removeComments(element, index, array) {
|
||||
// clean-up whitespace, comments etc.
|
||||
array[index] = array[index].replace(/\s*#.*|^\s*|\s*$/g, '');
|
||||
}
|
||||
array.forEach(removeComments);
|
||||
|
||||
array = array.filter(function(e) {
|
||||
return e !== "";
|
||||
});
|
||||
|
||||
cb(null, array);
|
||||
};
|
||||
|
||||
|
||||
filefinder.prototype.treewalk = function(basedir, subdir, fnpattern, blacklist, foundfilesarray, cb) {
|
||||
var _self = this;
|
||||
var fulldir = path.join(basedir, subdir);
|
||||
if (DEBUGMODE) console.log(">treewalk (dir: %s, fnpattern: %s)", fulldir, fnpattern);
|
||||
var results = [];
|
||||
|
||||
fs.readdir(fulldir, function(err, list) {
|
||||
if (err) return cb(err);
|
||||
var i = 0;
|
||||
|
||||
function next() {
|
||||
var file = list[i++];
|
||||
if (!file) return cb(null, foundfilesarray.length);
|
||||
var partName = path.join(subdir, file);
|
||||
var filepath = path.join(fulldir, file);
|
||||
|
||||
// get file info
|
||||
fs.stat(filepath, function(err, stat) {
|
||||
if (stat && stat.isDirectory()) {
|
||||
if (blacklist && blacklist.indexOf(partName + "/") !== -1)
|
||||
return next();
|
||||
// directory, so recurse
|
||||
_self.treewalk(basedir, partName, fnpattern, blacklist, foundfilesarray, function(err, res) {
|
||||
results = results.concat(res);
|
||||
next();
|
||||
});
|
||||
}
|
||||
else {
|
||||
// file found, matches pattern?
|
||||
if (file.match(fnpattern) === null) {
|
||||
_self.countPatternMis++;
|
||||
return next();
|
||||
}
|
||||
|
||||
// check if blacklisted
|
||||
if (!blacklist || blacklist.indexOf(partName) == -1) {
|
||||
if (DEBUGMODE) console.log("file found: %s", partName);
|
||||
foundfilesarray.push(partName);
|
||||
}
|
||||
else {
|
||||
_self.countBlacklisted++;
|
||||
if (DEBUGMODE) console.log("File blacklisted: ", partName);
|
||||
}
|
||||
next();
|
||||
}
|
||||
});
|
||||
}
|
||||
next();
|
||||
});
|
||||
};
|
||||
|
||||
// export the class
|
||||
module.exports = new filefinder();
|
||||
|
||||
|
Ładowanie…
Reference in New Issue