Skip to content

Commit

Permalink
Rearrange file and add check for file size.
Browse files Browse the repository at this point in the history
  • Loading branch information
sveisvei committed Jun 25, 2014
1 parent 66fdaf1 commit e43b8fd
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 27 deletions.
75 changes: 48 additions & 27 deletions lib/index.js
Expand Up @@ -79,6 +79,8 @@ internals.resolveIncludes = function(options){
options.validate.forEach(readDependencies);
options.preprocess.forEach(readDependencies);
};

internals.byPath = function(o){return o.path;};
internals.run = function (options, callback) {
if (!callback){
throw new Error('Missing callback');
Expand All @@ -99,46 +101,65 @@ internals.run = function (options, callback) {

options.validatorBase = validatorBase;

var byPath = function(o){return o.path;};
helpers.statFiles(options.instrument.map(byPath), function (err) {

helpers.statFiles(options.instrument.map(internals.byPath), function (err) {
if (err) {
if (process.env.NODE_ENV !== 'test'){
console.log('gardr-validator/lib/index.js statFiles error', err);
}
return callback(err, null);
}
run();
});


function run(){
// spawn phantomJS process
spawn(options, internals.handleResult, function(processError, outputData){
if (processError){
console.log('gardr-validator/lib/index.js Spawn error', processError);
callback(processError);
} else {
if (outputData && outputData.path){
fs.readFile(outputData.path, function(err, harvestedData){
if (err){
return callback(err);
}

try{
harvestedData = JSON.parse(harvestedData);
}catch(e){
err = e;
}

if (err){
return callback(err);
}

validate(harvestedData, options, callback);
});
} else {
console.log('gardr-validator/lib/index.js Missing output path from phantom / Output error:', outputData);
callback(new Error('Missing output path from phantom'));
}
return callback(processError);
}

if (outputData && outputData.path){
return readFile(outputData.path);
}

console.log('gardr-validator/lib/index.js Missing output path from phantom / Output error:', outputData);
callback(new Error('Missing output path from phantomJS result'));
});
});


function readFile(path){
fs.stat(path, function(err, statObj){
if (err){
return callback(err);
}

// if dump file is larger than 10MB it will most likely be a bug inside it
if (statObj && statObj.size > 10000000){
return callback(new Error('Result from PhantomJS is to large.'));
}
fs.readFile(path, function(err, harvestedData){
if (err){
return callback(err);
}

try{
harvestedData = JSON.parse(harvestedData);
}catch(e){
err = e;
}

if (err){
return callback(err);
}

validate(harvestedData, options, callback);
});
});
}
}
};


Expand Down
3 changes: 3 additions & 0 deletions test/runner/runner.test.js
Expand Up @@ -20,6 +20,9 @@ describe('Runner (phantomJs)', function() {
'fs': {
readFile: function(fileName, cb) {
cb(null, JSON.stringify(EXPECTED_VALID_REPORT_OBJECT));
},
stat: function(fileName, cb){
cb(null, {size: 1000});
}
},
'./spawn.js': function(options, handler, done) {
Expand Down

0 comments on commit e43b8fd

Please sign in to comment.