| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 'use strict';var Jasmine = require('jasmine');module.exports = function (grunt) {    var jasmineRequireJsOptions = {        specs: 'test/*-test.js',        helpers: 'test/*-helper.js',    };    // Project configuration.    grunt.initConfig({        // Metadata.        pkg: grunt.file.readJSON('package.json'),        banner: '/*! <%= pkg.name %> - v<%= pkg.version %>' +                ' - <%= pkg.homepage %>' +                ' - (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>' +                ' - licensed <%= pkg.license %> */\n',        // Task configuration.        concat: {            options: {                banner: '<%= banner %>',                stripBanners: true            },            dist: {                src: ['lib/<%= pkg.name %>.js'],                dest: 'dist/<%= pkg.name %>.js'            }        },        uglify: {            options: {                banner: '<%= banner %>'            },            dist: {                src: '<%= concat.dist.dest %>',                dest: 'dist/<%= pkg.name %>.min.js'            }        },        jasmine: {            requirejs: {                src: [],                options: {                    specs: jasmineRequireJsOptions.specs,                    helpers: jasmineRequireJsOptions.helpers,                    template: require('./vendor/grunt-template-jasmine-requirejs')                }            },            global: {                src: 'lib/**/*.js',                options: {                    specs: 'test/global-integration.js',                }            },            context: {                src: 'test/test-context-using-apply.generated.js',                options: {                    specs: 'test/global-integration-with-new-context.js',                }            }        },        jasmine_node: {            options: {                specs: ['test/node-integration.js']            }        },        open: {            jasmine: {                path: 'http://127.0.0.1:8000/_SpecRunner.html'            }        },        connect: {            test: {                port: 8000,                keepalive: true            }        },        jshint: {            options: {                jshintrc: '.jshintrc'            },            gruntfile: {                src: 'Gruntfile.js'            },            lib: {                options: {                    jshintrc: 'lib/.jshintrc'                },                src: ['lib/**/*.js']            },            test: {                options: {                    jshintrc: 'test/.jshintrc'                },                src: ['test/*.js', '!test/*.generated.js']            }        },        watch: {            gruntfile: {                files: '<%= jshint.gruntfile.src %>',                tasks: ['jshint:gruntfile']            },            lib: {                files: '<%= jshint.lib.src %>',                tasks: ['jshint:lib', 'test']            },            test: {                files: '<%= jshint.test.src %>',                tasks: ['jshint:test', 'test']            }        },        preprocess: {            "test-context-using-apply": {                src: 'test/test-context-using-apply.js',                dest: 'test/test-context-using-apply.generated.js'            }        },        clean:{            test:['test/test-context-using-apply.generated.js']        }    });    // These plugins provide necessary tasks.    grunt.loadNpmTasks('grunt-contrib-concat');    grunt.loadNpmTasks('grunt-contrib-uglify');    grunt.loadNpmTasks('grunt-contrib-jasmine');    grunt.loadNpmTasks('grunt-contrib-jshint');    grunt.loadNpmTasks('grunt-contrib-watch');    grunt.loadNpmTasks('grunt-contrib-connect');    grunt.loadNpmTasks('grunt-open');    grunt.loadNpmTasks('grunt-preprocess');    grunt.loadNpmTasks('grunt-contrib-clean');    // Run Jasmine with Node.js tests (as opposed to browser tests).    //    // NOTE: This is designed for Jasmine 2.4, which matches the version used    // in `grunt-contrib-jasmine`. If that package is updated, this should also    // be updated to match.    grunt.registerTask('jasmine_node', 'Run Jasmine in Node.js', function() {        var done = this.async();        var jasmine = new Jasmine({ projectBaseDir: __dirname });        jasmine.onComplete(function(success) {            done(success);        });        jasmine.execute(this.options().specs);    });    // Build a distributable release    grunt.registerTask('dist', ['test', 'dist-build']);    grunt.registerTask('dist-build', ['concat', 'uglify']);    // Check everything is good    grunt.registerTask('test', ['jshint', 'test-browser', 'test-node']);    grunt.registerTask('test-browser', ['jasmine:global', 'test-browser-context', 'jasmine:requirejs']);    grunt.registerTask('test-browser-context', ['preprocess', 'jasmine:context', 'clean:test']);    grunt.registerTask('test-node', ['jasmine_node']);    // Test with a live server and an actual browser    grunt.registerTask('integration-test', ['jasmine:requirejs:src:build', 'open:jasmine', 'connect:test:keepalive']);    // Default task.    grunt.registerTask('default', 'test');};
 |