Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2014-01-28 00:15:21 +0400
committerVincent Petry <pvince81@owncloud.com>2014-01-30 14:56:14 +0400
commitf7ac9f8069ea5e8ad8eb5c0f899f6ac8e39ef07f (patch)
tree606f237692e4964a0559acc03167704baafee38b
parent9fa788c452403646cc5c2a7c0fe875879e7082fa (diff)
Fixed unit test scripts + coverage
Tried to add more apps (others break). "preprocessors" is now populated automatically based on the tested apps.
-rw-r--r--.gitignore1
-rwxr-xr-xautotest-js.sh2
-rw-r--r--core/js/core.json43
-rw-r--r--tests/karma.config.js64
4 files changed, 73 insertions, 37 deletions
diff --git a/.gitignore b/.gitignore
index 8c8b61d701b..25cb1b227f9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -88,6 +88,7 @@ nbproject
# Tests - auto-generated files
/data-autotest
/tests/coverage*
+/tests/karma-coverage
/tests/autoconfig*
/tests/autotest*
/tests/data/lorem-copy.txt
diff --git a/autotest-js.sh b/autotest-js.sh
index 78f4948e7ad..8b9a106b021 100755
--- a/autotest-js.sh
+++ b/autotest-js.sh
@@ -33,5 +33,5 @@ then
exit 2
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
diff --git a/core/js/core.json b/core/js/core.json
index 79cfc42f587..4beab7cf796 100644
--- a/core/js/core.json
+++ b/core/js/core.json
@@ -1,28 +1,23 @@
{
+ "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": [
- "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",
- "compatibility.js",
- "jquery.ocdialog.js",
- "oc-dialogs.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"
+ "compatibility.js",
+ "jquery.ocdialog.js",
+ "oc-dialogs.js",
+ "js.js",
+ "octemplate.js",
+ "eventsource.js",
+ "config.js",
+ "multiselect.js",
+ "router.js",
+ "oc-requesttoken.js"
]
}
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',