aboutsummaryrefslogtreecommitdiffstats
path: root/tests/karma.config.js
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-01-27 21:15:21 +0100
committerVincent Petry <pvince81@owncloud.com>2014-01-30 11:56:14 +0100
commitf7ac9f8069ea5e8ad8eb5c0f899f6ac8e39ef07f (patch)
tree606f237692e4964a0559acc03167704baafee38b /tests/karma.config.js
parent9fa788c452403646cc5c2a7c0fe875879e7082fa (diff)
downloadnextcloud-server-f7ac9f8069ea5e8ad8eb5c0f899f6ac8e39ef07f.tar.gz
nextcloud-server-f7ac9f8069ea5e8ad8eb5c0f899f6ac8e39ef07f.zip
Fixed unit test scripts + coverage
Tried to add more apps (others break). "preprocessors" is now populated automatically based on the tested apps.
Diffstat (limited to 'tests/karma.config.js')
-rw-r--r--tests/karma.config.js64
1 files changed, 52 insertions, 12 deletions
diff --git a/tests/karma.config.js b/tests/karma.config.js
index f73ade0f3c6..529bd31338f 100644
--- a/tests/karma.config.js
+++ b/tests/karma.config.js
@@ -29,25 +29,52 @@
* environment variable to the apps name, for example "core" or "files_encryption".
* 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) {
+ 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 ?)
- var defaultApps = 'core files';
- var appsToTest = process.env.KARMA_TESTSUITE || defaultApps;
+ var appsToTest = process.env.KARMA_TESTSUITE;
+ if (appsToTest) {
+ appsToTest = appsToTest.split(' ');
+ }
+ else {
+ appsToTest = ['core'].concat(findApps());
+ }
+
+ console.log('Apps to test: ', appsToTest);
// read core files from core.json,
// these are required by all apps so always need to be loaded
// note that the loading order is important that's why they
// are specified in a separate file
var corePath = 'core/js/';
- var coreFiles = require('../' + corePath + 'core.json').modules;
+ var coreModule = require('../' + corePath + 'core.json');
var testCore = false;
var files = [];
var index;
+ var preprocessors = {};
// find out what apps to test from appsToTest
- appsToTest = appsToTest.split(' ');
index = appsToTest.indexOf('core');
if (index > -1) {
appsToTest.splice(index, 1);
@@ -60,11 +87,23 @@ module.exports = function(config) {
// core mocks
files.push(corePath + 'tests/specHelper.js');
- // add core files
- for ( var i = 0; i < coreFiles.length; i++ ) {
- files.push( corePath + coreFiles[i] );
+ // add core library files
+ for ( var i = 0; i < coreModule.libraries.length; 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 ?
if (testCore) {
// core tests
@@ -73,7 +112,11 @@ module.exports = function(config) {
for ( var i = 0; i < appsToTest.length; i++ ) {
// 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
files.push('apps/' + appsToTest[i] + '/tests/js/*.js');
}
@@ -83,7 +126,6 @@ module.exports = function(config) {
// base path, that will be used to resolve files and exclude
basePath: '..',
-
// frameworks to use
frameworks: ['jasmine'],
@@ -106,9 +148,7 @@ module.exports = function(config) {
// web server port
port: 9876,
- preprocessors: {
- 'apps/files/js/*.js': 'coverage'
- },
+ preprocessors: preprocessors,
coverageReporter: {
dir:'tests/karma-coverage',