refactoring the testing process
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
"use strict;"
|
||||
var fs = require('fs');
|
||||
'use strict';
|
||||
|
||||
var mout = require('mout');
|
||||
var extend = mout.object.deepMixIn;
|
||||
var forOwn = mout.object.forOwn;
|
||||
@@ -14,19 +14,18 @@ var JsonFile = module.exports = function JsonFile(file){
|
||||
return new JsonFile(file);
|
||||
|
||||
this._file = String(file);
|
||||
this._errors = this._errors || [];
|
||||
this._json = this._json || {};
|
||||
this._errors = [];
|
||||
this._json = {};
|
||||
|
||||
if( !(/\.json$/.test(file)) ){
|
||||
this.error(this._file + ' is not json file');
|
||||
|
||||
} else {
|
||||
|
||||
try{
|
||||
try {
|
||||
extend(this._json, require(this._file));
|
||||
|
||||
} catch(e) {
|
||||
|
||||
this.error(e.message);
|
||||
}
|
||||
|
||||
@@ -38,12 +37,12 @@ JsonFile.prototype.error = function(msg){
|
||||
this._errors.push(msg);
|
||||
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
JsonFile.prototype.errors = function(){
|
||||
|
||||
return this._errors;
|
||||
}
|
||||
};
|
||||
|
||||
JsonFile.prototype.forEach = function(fn){
|
||||
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
"use strict;"
|
||||
|
||||
var fs = require('fs');
|
||||
var util = require('util');
|
||||
var path = require('path');
|
||||
var glob = require('glob');
|
||||
var mout = require('mout');
|
||||
var colors = require('colors/safe');
|
||||
var JsonFile = require('./JsonFile');
|
||||
|
||||
var registries = {
|
||||
github: require('jspm-github'),
|
||||
npm: require('jspm-npm')
|
||||
};
|
||||
|
||||
/**
|
||||
* @constructor OverrideFile
|
||||
*/
|
||||
var OverrideFile = module.exports = function OverrideFile(endpoint){
|
||||
|
||||
if( !(this instanceof OverrideFile) )
|
||||
return new OverrideFile(endpoint);
|
||||
|
||||
this._endpoint = endpoint;
|
||||
this._files = [];
|
||||
this._errors = this._errors || [];
|
||||
this._registry;
|
||||
this._package;
|
||||
|
||||
var match = /^([^:\s]*):([^\s]*)$/.exec(endpoint);
|
||||
|
||||
if(!match)
|
||||
{
|
||||
this.error('invalid enpoint package');
|
||||
}
|
||||
else
|
||||
{
|
||||
this._registry = match[1];
|
||||
this._package = match[2];
|
||||
|
||||
if(!registries[this._registry])
|
||||
{
|
||||
this.error('invalid registry');
|
||||
}
|
||||
else if(!registries[this._registry].packageFormat.test(this._package))
|
||||
{
|
||||
this.error('invalid pacakge name');
|
||||
}
|
||||
|
||||
this._glob = path.resolve('./package-overrides', this._registry) + '/' + this._package + '@*.json';
|
||||
|
||||
|
||||
this._files = glob.sync(this._glob);
|
||||
this.forEach(function(file){
|
||||
|
||||
var err = JsonFile(file).errors();
|
||||
|
||||
if(err.length > 0)
|
||||
this.error(JsonFile(file).errors().join('\n'));
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
util.inherits(OverrideFile, JsonFile);
|
||||
|
||||
OverrideFile.prototype.error = function(msg){
|
||||
|
||||
var result = '';
|
||||
result += this._endpoint ? colors.gray(this._endpoint) + ' ' : '';
|
||||
result += msg;
|
||||
|
||||
return JsonFile.prototype.error.call(this, result);
|
||||
};
|
||||
|
||||
OverrideFile.prototype.forEach = function(fn){
|
||||
|
||||
mout.array.forEach(this._files, fn, this);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
OverrideFile.prototype.isFile = function(){
|
||||
|
||||
return this._files.length > 0;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
'use strict';
|
||||
|
||||
var path = require('path');
|
||||
var glob = require('glob');
|
||||
var mout = require('mout');
|
||||
var forOwn = mout.object.forOwn;
|
||||
var FILE_EXTENSION = /[^.]*$/i;
|
||||
var PACKAGE_EXPECTATION = /(.*)@(.*).json$/;
|
||||
|
||||
/**
|
||||
* @constructor RegistryEntry
|
||||
*/
|
||||
|
||||
var RegistryEntryCollection = module.exports = function RegistryEntry(endpoint){
|
||||
|
||||
this._endpoint = endpoint;
|
||||
this._basePath = path.resolve('./package-overrides', this._endpoint);
|
||||
this._files = glob.sync('**/*', {cwd: this._basePath, nodir: true});
|
||||
|
||||
};
|
||||
|
||||
RegistryEntryCollection.prototype.forEachFile = function(fn){
|
||||
|
||||
forOwn(this._files, function(file, index){
|
||||
|
||||
var pathfile = path.resolve(this._basePath, file);
|
||||
var extfile = FILE_EXTENSION.exec(pathfile)[0];
|
||||
|
||||
var fileinfo = {
|
||||
packageName: undefined,
|
||||
packageVersion: undefined,
|
||||
packageValue: undefined,
|
||||
|
||||
file: file,
|
||||
endpoint: this._endpoint,
|
||||
path: pathfile,
|
||||
ext: extfile
|
||||
};
|
||||
|
||||
var match = PACKAGE_EXPECTATION.exec(file);
|
||||
|
||||
if (match) {
|
||||
fileinfo.packageName = match[1];
|
||||
fileinfo.packageVersion = match[2];
|
||||
fileinfo.packageValue = fileinfo.endpoint + ':' + fileinfo.packageName;
|
||||
}
|
||||
|
||||
fn.call(this, fileinfo, index);
|
||||
|
||||
}, this);
|
||||
|
||||
return this;
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
"use strict;"
|
||||
'use strict';
|
||||
|
||||
var util = require('util');
|
||||
var path = require('path');
|
||||
var JsonFile = require('./JsonFile');
|
||||
var PACKAGE_EXPECTATION = /^([^:\s]*):([^\s]*)$/;
|
||||
|
||||
/**
|
||||
* @constructor RegistryFile
|
||||
@@ -15,5 +17,32 @@ var RegistryFile = module.exports = function RegistryFile(){
|
||||
JsonFile.call(this, path.resolve('./registry.json'));
|
||||
};
|
||||
|
||||
util.inherits(RegistryFile, JsonFile);
|
||||
|
||||
util.inherits(RegistryFile, JsonFile);
|
||||
RegistryFile.prototype.forEachPackage = function(fn){
|
||||
|
||||
return this.forEach(function(redirection, name){
|
||||
|
||||
var pkg = {};
|
||||
var match = PACKAGE_EXPECTATION.exec(redirection);
|
||||
|
||||
if (!match) {
|
||||
pkg = {
|
||||
value: redirection,
|
||||
endpoint: undefined,
|
||||
name: undefined,
|
||||
};
|
||||
|
||||
} else {
|
||||
pkg = {
|
||||
value: match[0],
|
||||
endpoint: match[1],
|
||||
name: match[2],
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
fn.call(this, pkg, name);
|
||||
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user