Add grunt test task

This commit is contained in:
Nicolas Le Goff
2013-08-12 20:03:48 +02:00
parent 74fc121fb6
commit 16d03e9a4d
8 changed files with 32 additions and 64 deletions

View File

@@ -1,5 +1,11 @@
module.exports = function(grunt) { module.exports = function(grunt) {
grunt.initConfig({ grunt.initConfig({
mocha_phantomjs: {
all: ['www/scripts/tests/index.html']
},
qunit: {
all: ['www/include/js/tests/*.html']
},
clean: { clean: {
"assets": ["assets", "www/assets"], "assets": ["assets", "www/assets"],
}, },
@@ -120,13 +126,13 @@ module.exports = function(grunt) {
], ],
"dest": "www/assets/jquery.ui/" "dest": "www/assets/jquery.ui/"
}, },
"js-fixture": { "js-fixtures": {
"expand": true, "expand": true,
"src": [ "src": [
"assets/js-fixtures/LICENSE", "assets/js-fixtures/LICENSE",
"assets/js-fixtures/fixtures.js" "assets/js-fixtures/fixtures.js"
], ],
"dest": "www/assets/js-fixture/", "dest": "www/assets/js-fixtures/",
"flatten": true "flatten": true
}, },
"json3": { "json3": {
@@ -166,11 +172,15 @@ module.exports = function(grunt) {
"qunit": { "qunit": {
"expand": true, "expand": true,
"src": [ "src": [
"assets/qunit/qunit/qunit.css", "qunit/qunit.css",
"assets/qunit/qunit/qunit.js" "qunit/qunit.js",
"addons/phantomjs/*"
], ],
"dest": "www/assets/qunit/", "dest": "www/assets/qunit/",
"flatten": true "cwd": "assets/qunit/",
"rename": function(dest, src) {
return dest + src.replace("qunit", "");
},
}, },
"requirejs": { "requirejs": {
"expand": true, "expand": true,
@@ -223,6 +233,8 @@ module.exports = function(grunt) {
grunt.loadNpmTasks("grunt-contrib"); grunt.loadNpmTasks("grunt-contrib");
grunt.loadNpmTasks("grunt-bower-task"); grunt.loadNpmTasks("grunt-bower-task");
grunt.loadNpmTasks("grunt-bower-postinst"); grunt.loadNpmTasks("grunt-bower-postinst");
grunt.loadNpmTasks('grunt-mocha-phantomjs');
grunt.registerTask("build-assets", ["clean:assets", "bower", "bower_postinst", "copy", "less"]); grunt.registerTask("build-assets", ["clean:assets", "bower", "bower_postinst", "copy", "less"]);
grunt.registerTask('test', ["qunit", "mocha_phantomjs"]);
}; };

View File

@@ -16,7 +16,7 @@
"requirejs" : "~2.1", "requirejs" : "~2.1",
"backbone-amd": "~1.0", "backbone-amd": "~1.0",
"underscore-amd": "~1.4", "underscore-amd": "~1.4",
"mocha": "~1.9", "mocha": "latest",
"chai" : "~1.6", "chai" : "~1.6",
"i18next": "~1.6", "i18next": "~1.6",
"js-fixtures": "https://github.com/badunk/js-fixtures/archive/master.zip", "js-fixtures": "https://github.com/badunk/js-fixtures/archive/master.zip",

View File

@@ -6,10 +6,10 @@
"mocha-phantomjs": ">=2.0 <3.0", "mocha-phantomjs": ">=2.0 <3.0",
"recess": ">=1.1.0 <1.1.7", "recess": ">=1.1.0 <1.1.7",
"uglify-js": "latest", "uglify-js": "latest",
"phantomjs": "latest",
"grunt": "~0.4.1", "grunt": "~0.4.1",
"grunt-contrib": "latest", "grunt-contrib": "latest",
"grunt-bower-task": "latest", "grunt-bower-task": "latest",
"grunt-bower-postinst": "latest" "grunt-bower-postinst": "latest",
"grunt-mocha-phantomjs": "~0.3.0"
} }
} }

View File

@@ -1,34 +0,0 @@
#!/bin/bash
BASEDIR=$(dirname $0)
ROOTDIR="$BASEDIR/../.."
PHANTOMJS_BIN=""
MOCHA_PHANTOMJS_BIN=""
if type "$ROOTDIR/node_modules/.bin/phantomjs" > /dev/null; then
PHANTOMJS_BIN="$ROOTDIR/node_modules/.bin/phantomjs"
fi
if type "$ROOTDIR/node_modules/.bin/mocha-phantomjs" > /dev/null; then
MOCHA_PHANTOMJS_BIN="$ROOTDIR/node_modules/.bin/mocha-phantomjs"
fi
if [ -z "$PHANTOMJS_BIN" ]; then
echo "phantomjs is required to run JS tests, see https://npmjs.org/package/phantomjs"
exit 1
fi
if [ -z "$MOCHA_PHANTOMJS_BIN" ]; then
echo "mocha-phantomjs is required to run JS tests, see https://npmjs.org/package/mocha-phantomjs"
exit 1
fi
# run qunit tests
$PHANTOMJS_BIN "$ROOTDIR/www/assets/qunit/addons/phantomjs/runner.js" "$ROOTDIR/www/include/js/tests/jquery.Upload.js.html"
$PHANTOMJS_BIN "$ROOTDIR/www/assets/qunit/addons/phantomjs/runner.js" "$ROOTDIR/www/include/js/tests/jquery.Edit.js.html"
$PHANTOMJS_BIN "$ROOTDIR/www/assets/qunit/addons/phantomjs/runner.js" "$ROOTDIR/www/include/js/tests/jquery.Selection.js.html"
# run backbone tests
$MOCHA_PHANTOMJS_BIN "$ROOTDIR/www/scripts/tests/index.html"

View File

@@ -4,11 +4,14 @@
<title></title> <title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="../../../assets/jquery/jquery.js"></script> <script src="../../../assets/jquery/jquery.js"></script>
<script src="../../../assets/qunit/qunit/qunit.js"></script> <script src="../../../assets/qunit/qunit.js"></script>
<script src="../jquery.Edit.js"></script> <script src="../jquery.Edit.js"></script>
<link type="text/css" rel="stylesheet" href="../../../assets/qunit/qunit/qunit.css"/> <link type="text/css" rel="stylesheet" href="../../../assets/qunit/qunit.css"/>
<script> $(document).ready(function(){ <script> $(document).ready(function(){
// disable annoying log messages for tests
console.log = function() {};
console.error = function() {};
module("Add datas"); module("Add datas");

View File

@@ -4,9 +4,9 @@
<title></title> <title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="../../../assets/jquery/jquery.js"></script> <script src="../../../assets/jquery/jquery.js"></script>
<script src="../../../assets/qunit/qunit/qunit.js"></script> <script src="../../../assets/qunit/qunit.js"></script>
<script src="../jquery.Selection.js"></script> <script src="../jquery.Selection.js"></script>
<link type="text/css" rel="stylesheet" href="../../../assets/qunit/qunit.css"/> <link type="text/css" rel="stylesheet" href="../../../assets/qunit.css"/>
<script> $(document).ready(function(){ <script> $(document).ready(function(){

View File

@@ -5,10 +5,10 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="../../../assets/jquery/jquery.js"></script> <script src="../../../assets/jquery/jquery.js"></script>
<script src="../../jslibs/jquery-ui-1.10.3.js"></script> <script src="../../jslibs/jquery-ui-1.10.3.js"></script>
<script src="../../../assets/qunit/qunit/qunit.js"></script> <script src="../../../assets/qunit/qunit.js"></script>
<script src="../../../assets/blueimp-load-image/load-image.js"></script> <script src="../../../assets/blueimp-load-image/load-image.js"></script>
<script src="../../../skins/prod/jquery.Upload.js"></script> <script src="../../../skins/prod/jquery.Upload.js"></script>
<link type="text/css" rel="stylesheet" href="../../../assets/qunit/qunit/qunit.css"/> <link type="text/css" rel="stylesheet" href="../../../assets/qunit/qunit.css"/>
<script> $(document).ready(function(){ <script> $(document).ready(function(){
var getUploadManager = function(){ var getUploadManager = function(){

View File

@@ -4,31 +4,18 @@ require.config({
specs: "tests/specs", specs: "tests/specs",
chai: "../assets/chai/chai", chai: "../assets/chai/chai",
fixtures: "../assets/js-fixtures/fixtures", fixtures: "../assets/js-fixtures/fixtures",
sinon: "../assets/sinon/lib/sinon",
sinonSpy: "../assets/sinon/lib/sinon/spy",
sinonMock: "../assets/sinon/lib/sinon/mock",
sinonStub: "../assets/sinon/lib/sinon/stub",
app: "apps/admin/fields/app", app: "apps/admin/fields/app",
jquery: "../assets/jquery/jquery", jquery: "../assets/jquery/jquery",
jqueryui: "../include/jslibs/jquery-ui-1.10.3", jqueryui: "../assets/jquery.ui/jquery-ui",
underscore: "../assets/underscore-amd/underscore", underscore: "../assets/underscore-amd/underscore",
backbone: "../assets/backbone-amd/backbone", backbone: "../assets/backbone-amd/backbone",
twig: "../assets/twig/twig", i18n: "../assets/i18next/i18next.amd-1.6.3",
i18n: "../assets/i18next/release/i18next.amd-1.6.2.min", bootstrap: "../assets/bootstrap/js/bootstrap.min"
bootstrap: "../skins/build/bootstrap/js/bootstrap.min"
}, },
shim: { shim: {
bootstrap : ["jquery"], bootstrap : ["jquery"],
jqueryui: { jqueryui: {
deps: ["jquery"] deps: ["jquery"]
},
sinonSpy: {
deps: ["sinon"],
exports: "sinon"
},
sinonMock: {
deps: ["sinon", "sinonSpy", "sinonStub"],
exports: "sinon"
} }
} }
}); });