diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2014-01-23 12:43:05 -0800 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2014-01-23 12:43:05 -0800 |
commit | 9fa788c452403646cc5c2a7c0fe875879e7082fa (patch) | |
tree | 1288c4e16305f9132c5acfc3049650a65dc9fa9f /tests | |
parent | 5956277ed4db26f46f14eed4a6805038001dde30 (diff) | |
parent | f29bd1cb0b839f81bed0b87ae7900da2b1d0e474 (diff) | |
download | nextcloud-server-9fa788c452403646cc5c2a7c0fe875879e7082fa.tar.gz nextcloud-server-9fa788c452403646cc5c2a7c0fe875879e7082fa.zip |
Merge pull request #6736 from owncloud/tests-jsunittests
Added Javascript unit tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/karma.config.js | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/tests/karma.config.js b/tests/karma.config.js new file mode 100644 index 00000000000..f73ade0f3c6 --- /dev/null +++ b/tests/karma.config.js @@ -0,0 +1,149 @@ +/** +* ownCloud +* +* @author Vincent Petry +* @copyright 2014 Vincent Petry <pvince81@owncloud.com> +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU AFFERO GENERAL PUBLIC LICENSE for more details. +* +* You should have received a copy of the GNU Affero General Public +* License along with this library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + +/** + * This node module is run by the karma executable to specify its configuration. + * + * The list of files from all needed JavaScript files including the ones from the + * apps to test, and the test specs will be passed as configuration object. + * + * Note that it is possible to test a single app by setting the KARMA_TESTSUITE + * environment variable to the apps name, for example "core" or "files_encryption". + * Multiple apps can be specified by separating them with space. + * + */ +module.exports = function(config) { + + // default apps to test when none is specified (TODO: read from filesystem ?) + var defaultApps = 'core files'; + var appsToTest = process.env.KARMA_TESTSUITE || defaultApps; + + // 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 testCore = false; + var files = []; + var index; + + // find out what apps to test from appsToTest + appsToTest = appsToTest.split(' '); + index = appsToTest.indexOf('core'); + if (index > -1) { + appsToTest.splice(index, 1); + testCore = true; + } + + // extra test libs + files.push(corePath + 'tests/lib/sinon-1.7.3.js'); + + // core mocks + files.push(corePath + 'tests/specHelper.js'); + + // add core files + for ( var i = 0; i < coreFiles.length; i++ ) { + files.push( corePath + coreFiles[i] ); + } + + // need to test the core app as well ? + if (testCore) { + // core tests + files.push(corePath + 'tests/specs/*.js'); + } + + for ( var i = 0; i < appsToTest.length; i++ ) { + // add app JS + files.push('apps/' + appsToTest[i] + '/js/*.js'); + // add test specs + files.push('apps/' + appsToTest[i] + '/tests/js/*.js'); + } + + config.set({ + + // base path, that will be used to resolve files and exclude + basePath: '..', + + + // frameworks to use + frameworks: ['jasmine'], + + // list of files / patterns to load in the browser + files: files, + + // list of files to exclude + exclude: [ + + ], + + // test results reporter to use + // possible values: 'dots', 'progress', 'junit', 'growl', 'coverage' + reporters: ['dots', 'junit', 'coverage'], + + junitReporter: { + outputFile: 'tests/autotest-results-js.xml' + }, + + // web server port + port: 9876, + + preprocessors: { + 'apps/files/js/*.js': 'coverage' + }, + + coverageReporter: { + dir:'tests/karma-coverage', + reporters: [ + { type: 'html' }, + { type: 'cobertura' } + ] + }, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // Start these browsers, currently available: + // - Chrome + // - ChromeCanary + // - Firefox + // - Opera (has to be installed with `npm install karma-opera-launcher`) + // - Safari (only Mac; has to be installed with `npm install karma-safari-launcher`) + // - PhantomJS + // - IE (only Windows; has to be installed with `npm install karma-ie-launcher`) + browsers: ['PhantomJS'], + + // If browser does not capture in given timeout [ms], kill it + captureTimeout: 60000, + + // Continuous Integration mode + // if true, it capture browsers, run tests and exit + singleRun: false + }); +}; |