Merge pull request #6969 from owncloud/tests-morecoverage
Fixed unit test scripts + coverage
This commit is contained in:
commit
ced80c6f27
5 changed files with 172 additions and 37 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global OC */
|
||||
describe('Core base tests', function() {
|
||||
describe('Base values', function() {
|
||||
it('Sets webroots', function() {
|
||||
|
@ -25,6 +27,103 @@ describe('Core base tests', function() {
|
|||
expect(OC.appswebroots).toBeDefined();
|
||||
});
|
||||
});
|
||||
describe('basename', function() {
|
||||
it('Returns the nothing if no file name given', function() {
|
||||
expect(OC.basename('')).toEqual('');
|
||||
});
|
||||
it('Returns the nothing if dir is root', function() {
|
||||
expect(OC.basename('/')).toEqual('');
|
||||
});
|
||||
it('Returns the same name if no path given', function() {
|
||||
expect(OC.basename('some name.txt')).toEqual('some name.txt');
|
||||
});
|
||||
it('Returns the base name if root path given', function() {
|
||||
expect(OC.basename('/some name.txt')).toEqual('some name.txt');
|
||||
});
|
||||
it('Returns the base name if double root path given', function() {
|
||||
expect(OC.basename('//some name.txt')).toEqual('some name.txt');
|
||||
});
|
||||
it('Returns the base name if subdir given without root', function() {
|
||||
expect(OC.basename('subdir/some name.txt')).toEqual('some name.txt');
|
||||
});
|
||||
it('Returns the base name if subdir given with root', function() {
|
||||
expect(OC.basename('/subdir/some name.txt')).toEqual('some name.txt');
|
||||
});
|
||||
it('Returns the base name if subdir given with double root', function() {
|
||||
expect(OC.basename('//subdir/some name.txt')).toEqual('some name.txt');
|
||||
});
|
||||
it('Returns the base name if subdir has dot', function() {
|
||||
expect(OC.basename('/subdir.dat/some name.txt')).toEqual('some name.txt');
|
||||
});
|
||||
it('Returns dot if file name is dot', function() {
|
||||
expect(OC.basename('/subdir/.')).toEqual('.');
|
||||
});
|
||||
// TODO: fix the source to make it work like PHP's basename
|
||||
it('Returns the dir itself if no file name given', function() {
|
||||
// TODO: fix the source to make it work like PHP's dirname
|
||||
// expect(OC.basename('subdir/')).toEqual('subdir');
|
||||
expect(OC.basename('subdir/')).toEqual('');
|
||||
});
|
||||
it('Returns the dir itself if no file name given with root', function() {
|
||||
// TODO: fix the source to make it work like PHP's dirname
|
||||
// expect(OC.basename('/subdir/')).toEqual('subdir');
|
||||
expect(OC.basename('/subdir/')).toEqual('');
|
||||
});
|
||||
});
|
||||
describe('dirname', function() {
|
||||
it('Returns the nothing if no file name given', function() {
|
||||
expect(OC.dirname('')).toEqual('');
|
||||
});
|
||||
it('Returns the root if dir is root', function() {
|
||||
// TODO: fix the source to make it work like PHP's dirname
|
||||
// expect(OC.dirname('/')).toEqual('/');
|
||||
expect(OC.dirname('/')).toEqual('');
|
||||
});
|
||||
it('Returns the root if dir is double root', function() {
|
||||
// TODO: fix the source to make it work like PHP's dirname
|
||||
// expect(OC.dirname('//')).toEqual('/');
|
||||
expect(OC.dirname('//')).toEqual('/'); // oh no...
|
||||
});
|
||||
it('Returns dot if dir is dot', function() {
|
||||
expect(OC.dirname('.')).toEqual('.');
|
||||
});
|
||||
it('Returns dot if no root given', function() {
|
||||
// TODO: fix the source to make it work like PHP's dirname
|
||||
// expect(OC.dirname('some dir')).toEqual('.');
|
||||
expect(OC.dirname('some dir')).toEqual('some dir'); // oh no...
|
||||
});
|
||||
it('Returns the dir name if file name and root path given', function() {
|
||||
// TODO: fix the source to make it work like PHP's dirname
|
||||
// expect(OC.dirname('/some name.txt')).toEqual('/');
|
||||
expect(OC.dirname('/some name.txt')).toEqual('');
|
||||
});
|
||||
it('Returns the dir name if double root path given', function() {
|
||||
expect(OC.dirname('//some name.txt')).toEqual('/'); // how lucky...
|
||||
});
|
||||
it('Returns the dir name if subdir given without root', function() {
|
||||
expect(OC.dirname('subdir/some name.txt')).toEqual('subdir');
|
||||
});
|
||||
it('Returns the dir name if subdir given with root', function() {
|
||||
expect(OC.dirname('/subdir/some name.txt')).toEqual('/subdir');
|
||||
});
|
||||
it('Returns the dir name if subdir given with double root', function() {
|
||||
// TODO: fix the source to make it work like PHP's dirname
|
||||
// expect(OC.dirname('//subdir/some name.txt')).toEqual('/subdir');
|
||||
expect(OC.dirname('//subdir/some name.txt')).toEqual('//subdir'); // oh...
|
||||
});
|
||||
it('Returns the dir name if subdir has dot', function() {
|
||||
expect(OC.dirname('/subdir.dat/some name.txt')).toEqual('/subdir.dat');
|
||||
});
|
||||
it('Returns the dir name if file name is dot', function() {
|
||||
expect(OC.dirname('/subdir/.')).toEqual('/subdir');
|
||||
});
|
||||
it('Returns the dir name if no file name given', function() {
|
||||
expect(OC.dirname('subdir/')).toEqual('subdir');
|
||||
});
|
||||
it('Returns the dir name if no file name given with root', function() {
|
||||
expect(OC.dirname('/subdir/')).toEqual('/subdir');
|
||||
});
|
||||
});
|
||||
describe('Link functions', function() {
|
||||
var TESTAPP = 'testapp';
|
||||
var TESTAPP_ROOT = OC.webroot + '/appsx/testapp';
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Reference in a new issue