| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- function Runner( options ){
- console.debug("Constructing runner for "+options.runner+".");
- var name, path,
- runner = options.runner;
- if(typeof runner == 'object'){
- name = runner.name;
- path = runner.runner;
- } else {
- name = runner;
- path = runner;
- }
- this._options = {
- reporter: options.jasmineReporter || {},
- path: require('path').normalize(path),
- name: name
- };
- };
- Runner.prototype._getScriptPaths = function(pathToHtml, callback){
- var path = require('path');
- require('jsdom').env({
- html: pathToHtml,
- scripts: [],
- done: function(errors,window){
- if(errors){
- console.error('Error when constructing DOM to get script paths for runner.');
- console.debug(errors);
- exit(1);
- }
- var basePath = path.dirname(pathToHtml);
- var scripts = window.document.getElementsByTagName('script');
- var scriptPaths = []
- for(var i = 0; i < scripts.length; i++){
- var script = scripts[i];
- var src = script.getAttribute('src');
- if(src) {
- var scriptPath = path.normalize(basePath + "/" + src);
- scriptPaths.push(scriptPath);
- }
- }
- callback(scriptPaths);
- }
- });
- };
- Runner.prototype._executeRunner = function(pathToHtml, scripts, reporter, callback){
- console.debug("Constructing runner with following scripts: ");
- for(var i = 0; i < scripts.length; i++) console.debug(" - " + scripts[i]);
- require('jsdom').env({
- html: pathToHtml,
- scripts: scripts,
- done: function(errors,window){
- if(errors){
- console.error('Error when constructing DOM for runner.');
- console.debug(errors);
- exit(1);
- }
- // Executed when the DOM has finished construction
- if(errors) console.error('Error construction DOM for tests: ',errors);
- window.jasmine.getEnv().addReporter(reporter);
- window.jasmine.getEnv().addReporter({
- reportRunnerResults : function(){
- if(callback) callback();
- }
- });
- console.debug("Running runner in Jasmine.");
- window.jasmine.getEnv().execute();
- }
- });
- };
- Runner.prototype.run = function(callback){
- var path = this._options.path,
- name = this._options.name,
- reporter = this._options.reporter,
- that=this;
- console.debug("Running runner " + name);
- if(reporter.reportStartingGroup) reporter.reportStartingGroup(name);
- this._getScriptPaths(path, function(scripts){
- that._executeRunner(path,scripts,reporter,function(){
- callback();
- });
- });
- };
- exports.create = function(options){
- return new Runner(options);
- }
|