Skip to content
Snippets Groups Projects
Commit f7ac9f80 authored by Vincent Petry's avatar Vincent Petry
Browse files

Fixed unit test scripts + coverage

Tried to add more apps (others break).
"preprocessors" is now populated automatically based on the tested apps.
parent 9fa788c4
No related branches found
No related tags found
No related merge requests found
...@@ -88,6 +88,7 @@ nbproject ...@@ -88,6 +88,7 @@ nbproject
# Tests - auto-generated files # Tests - auto-generated files
/data-autotest /data-autotest
/tests/coverage* /tests/coverage*
/tests/karma-coverage
/tests/autoconfig* /tests/autoconfig*
/tests/autotest* /tests/autotest*
/tests/data/lorem-copy.txt /tests/data/lorem-copy.txt
......
...@@ -33,5 +33,5 @@ then ...@@ -33,5 +33,5 @@ then
exit 2 exit 2
fi fi
KARMA_TESTSUITE="$1" $KARMA start tests/karma.config.js --single-run NODE_PATH='build/node_modules' KARMA_TESTSUITE="$1" $KARMA start tests/karma.config.js --single-run
{ {
"libraries": [
"jquery-1.10.0.min.js",
"jquery-migrate-1.2.1.min.js",
"jquery-ui-1.10.0.custom.js",
"jquery-showpassword.js",
"jquery.infieldlabel.js",
"jquery.placeholder.js",
"jquery-tipsy.js"
],
"modules": [ "modules": [
"jquery-1.10.0.min.js", "compatibility.js",
"jquery-migrate-1.2.1.min.js", "jquery.ocdialog.js",
"jquery-ui-1.10.0.custom.js", "oc-dialogs.js",
"jquery-showpassword.js", "js.js",
"jquery.infieldlabel.js", "octemplate.js",
"jquery.placeholder.js", "eventsource.js",
"jquery-tipsy.js", "config.js",
"compatibility.js", "multiselect.js",
"jquery.ocdialog.js", "router.js",
"oc-dialogs.js", "oc-requesttoken.js"
"js.js",
"octemplate.js",
"eventsource.js",
"config.js",
"multiselect.js",
"search.js",
"router.js",
"oc-requesttoken.js",
"styles.js",
"apps.js",
"fixes.js",
"jquery-ui-2.10.0.custom.js",
"jquery-tipsy.js",
"jquery.ocdialog.js"
] ]
} }
...@@ -29,25 +29,52 @@ ...@@ -29,25 +29,52 @@
* environment variable to the apps name, for example "core" or "files_encryption". * environment variable to the apps name, for example "core" or "files_encryption".
* Multiple apps can be specified by separating them with space. * Multiple apps can be specified by separating them with space.
* *
* Setting the environment variable NOCOVERAGE to 1 will disable the coverage
* preprocessor, which is needed to be able to debug tests properly in a browser.
*/ */
/* jshint node: true */
module.exports = function(config) { module.exports = function(config) {
function findApps() {
/*
var fs = require('fs');
var apps = fs.readdirSync('apps');
return apps;
*/
// other apps tests don't run yet... needs further research / clean up
return ['files'];
}
// respect NOCOVERAGE env variable
// it is useful to disable coverage for debugging
// because the coverage preprocessor will wrap the JS files somehow
var enableCoverage = !parseInt(process.env.NOCOVERAGE, 10);
console.log('Coverage preprocessor: ', enableCoverage?'enabled':'disabled');
// default apps to test when none is specified (TODO: read from filesystem ?) // default apps to test when none is specified (TODO: read from filesystem ?)
var defaultApps = 'core files'; var appsToTest = process.env.KARMA_TESTSUITE;
var appsToTest = process.env.KARMA_TESTSUITE || defaultApps; if (appsToTest) {
appsToTest = appsToTest.split(' ');
}
else {
appsToTest = ['core'].concat(findApps());
}
console.log('Apps to test: ', appsToTest);
// read core files from core.json, // read core files from core.json,
// these are required by all apps so always need to be loaded // these are required by all apps so always need to be loaded
// note that the loading order is important that's why they // note that the loading order is important that's why they
// are specified in a separate file // are specified in a separate file
var corePath = 'core/js/'; var corePath = 'core/js/';
var coreFiles = require('../' + corePath + 'core.json').modules; var coreModule = require('../' + corePath + 'core.json');
var testCore = false; var testCore = false;
var files = []; var files = [];
var index; var index;
var preprocessors = {};
// find out what apps to test from appsToTest // find out what apps to test from appsToTest
appsToTest = appsToTest.split(' ');
index = appsToTest.indexOf('core'); index = appsToTest.indexOf('core');
if (index > -1) { if (index > -1) {
appsToTest.splice(index, 1); appsToTest.splice(index, 1);
...@@ -60,11 +87,23 @@ module.exports = function(config) { ...@@ -60,11 +87,23 @@ module.exports = function(config) {
// core mocks // core mocks
files.push(corePath + 'tests/specHelper.js'); files.push(corePath + 'tests/specHelper.js');
// add core files // add core library files
for ( var i = 0; i < coreFiles.length; i++ ) { for ( var i = 0; i < coreModule.libraries.length; i++ ) {
files.push( corePath + coreFiles[i] ); var srcFile = corePath + coreModule.libraries[i];
files.push(srcFile);
}
// add core modules files
for ( var i = 0; i < coreModule.modules.length; i++ ) {
var srcFile = corePath + coreModule.modules[i];
files.push(srcFile);
if (enableCoverage) {
preprocessors[srcFile] = 'coverage';
}
} }
// TODO: settings pages
// need to test the core app as well ? // need to test the core app as well ?
if (testCore) { if (testCore) {
// core tests // core tests
...@@ -73,7 +112,11 @@ module.exports = function(config) { ...@@ -73,7 +112,11 @@ module.exports = function(config) {
for ( var i = 0; i < appsToTest.length; i++ ) { for ( var i = 0; i < appsToTest.length; i++ ) {
// add app JS // add app JS
files.push('apps/' + appsToTest[i] + '/js/*.js'); var srcFile = 'apps/' + appsToTest[i] + '/js/*.js';
files.push(srcFile);
if (enableCoverage) {
preprocessors[srcFile] = 'coverage';
}
// add test specs // add test specs
files.push('apps/' + appsToTest[i] + '/tests/js/*.js'); files.push('apps/' + appsToTest[i] + '/tests/js/*.js');
} }
...@@ -83,7 +126,6 @@ module.exports = function(config) { ...@@ -83,7 +126,6 @@ module.exports = function(config) {
// base path, that will be used to resolve files and exclude // base path, that will be used to resolve files and exclude
basePath: '..', basePath: '..',
// frameworks to use // frameworks to use
frameworks: ['jasmine'], frameworks: ['jasmine'],
...@@ -106,9 +148,7 @@ module.exports = function(config) { ...@@ -106,9 +148,7 @@ module.exports = function(config) {
// web server port // web server port
port: 9876, port: 9876,
preprocessors: { preprocessors: preprocessors,
'apps/files/js/*.js': 'coverage'
},
coverageReporter: { coverageReporter: {
dir:'tests/karma-coverage', dir:'tests/karma-coverage',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment