CherryKitten
70cee77a95
Currently contains the Unit Tests, which should already be done correctly. Functional tests still need to be added.
107 lines
No EOL
2.1 KiB
JavaScript
107 lines
No EOL
2.1 KiB
JavaScript
/*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
* DO NOT EDIT THIS FILE
|
|
* For FCC testing purposes!
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
const analyser = require('./assertion-analyser');
|
|
const EventEmitter = require('events').EventEmitter;
|
|
|
|
const Mocha = require('mocha'),
|
|
fs = require('fs'),
|
|
path = require('path');
|
|
require("@babel/register");
|
|
|
|
const mocha = new Mocha({ timeout: 5000 });
|
|
const testDir = './tests'
|
|
|
|
|
|
// Add each .js file to the mocha instance
|
|
fs.readdirSync(testDir).filter(function(file){
|
|
// Only keep the .js files
|
|
return file.substr(-3) === '.js';
|
|
|
|
}).forEach(function(file){
|
|
mocha.addFile(
|
|
path.join(testDir, file)
|
|
);
|
|
});
|
|
|
|
let emitter = new EventEmitter();
|
|
emitter.run = function() {
|
|
|
|
let tests = [];
|
|
let context = "";
|
|
let separator = ' -> ';
|
|
// Run the tests.
|
|
try {
|
|
let runner = mocha.ui('tdd').run()
|
|
.on('test end', function(test) {
|
|
// remove comments
|
|
let body = test.body.replace(/\/\/.*\n|\/\*.*\*\//g, '');
|
|
// collapse spaces
|
|
body = body.replace(/\s+/g,' ');
|
|
let obj = {
|
|
title: test.title,
|
|
context: context.slice(0, -separator.length),
|
|
state: test.state,
|
|
// body: body,
|
|
assertions: analyser(body)
|
|
};
|
|
tests.push(obj);
|
|
})
|
|
.on('end', function() {
|
|
emitter.report = tests;
|
|
emitter.emit('done', tests)
|
|
})
|
|
.on('suite', function(s) {
|
|
context += (s.title + separator);
|
|
|
|
})
|
|
.on('suite end', function(s) {
|
|
context = context.slice(0, -(s.title.length + separator.length))
|
|
})
|
|
} catch(e) {
|
|
throw(e);
|
|
}
|
|
};
|
|
|
|
module.exports = emitter;
|
|
|
|
/*
|
|
* Mocha.runner Events:
|
|
* can be used to build a better custom report
|
|
*
|
|
* - `start` execution started
|
|
* - `end` execution complete
|
|
* - `suite` (suite) test suite execution started
|
|
* - `suite end` (suite) all tests (and sub-suites) have finished
|
|
* - `test` (test) test execution started
|
|
* - `test end` (test) test completed
|
|
* - `hook` (hook) hook execution started
|
|
* - `hook end` (hook) hook complete
|
|
* - `pass` (test) test passed
|
|
* - `fail` (test, err) test failed
|
|
* - `pending` (test) test pending
|
|
*/ |