123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /*
- Copyright (c) 2008-2014 Pivotal Labs
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
- function getJasmineRequireObj() {
- if (typeof module !== 'undefined' && module.exports) {
- return exports;
- } else {
- window.jasmineRequire = window.jasmineRequire || {};
- return window.jasmineRequire;
- }
- }
-
- getJasmineRequireObj().console = function(jRequire, j$) {
- j$.ConsoleReporter = jRequire.ConsoleReporter();
- };
-
- getJasmineRequireObj().ConsoleReporter = function() {
-
- var noopTimer = {
- start: function(){},
- elapsed: function(){ return 0; }
- };
-
- function ConsoleReporter(options) {
- var print = options.print,
- showColors = options.showColors || false,
- onComplete = options.onComplete || function() {},
- timer = options.timer || noopTimer,
- specCount,
- failureCount,
- failedSpecs = [],
- pendingCount,
- ansi = {
- green: '\x1B[32m',
- red: '\x1B[31m',
- yellow: '\x1B[33m',
- none: '\x1B[0m'
- };
-
- this.jasmineStarted = function() {
- specCount = 0;
- failureCount = 0;
- pendingCount = 0;
- print('Started');
- printNewline();
- timer.start();
- };
-
- this.jasmineDone = function() {
- printNewline();
- for (var i = 0; i < failedSpecs.length; i++) {
- specFailureDetails(failedSpecs[i]);
- }
-
- if(specCount > 0) {
- printNewline();
-
- var specCounts = specCount + ' ' + plural('spec', specCount) + ', ' +
- failureCount + ' ' + plural('failure', failureCount);
-
- if (pendingCount) {
- specCounts += ', ' + pendingCount + ' pending ' + plural('spec', pendingCount);
- }
-
- print(specCounts);
- } else {
- print('No specs found');
- }
-
- printNewline();
- var seconds = timer.elapsed() / 1000;
- print('Finished in ' + seconds + ' ' + plural('second', seconds));
-
- printNewline();
-
- onComplete(failureCount === 0);
- };
-
- this.specDone = function(result) {
- specCount++;
-
- if (result.status == 'pending') {
- pendingCount++;
- print(colored('yellow', '*'));
- return;
- }
-
- if (result.status == 'passed') {
- print(colored('green', '.'));
- return;
- }
-
- if (result.status == 'failed') {
- failureCount++;
- failedSpecs.push(result);
- print(colored('red', 'F'));
- }
- };
-
- return this;
-
- function printNewline() {
- print('\n');
- }
-
- function colored(color, str) {
- return showColors ? (ansi[color] + str + ansi.none) : str;
- }
-
- function plural(str, count) {
- return count == 1 ? str : str + 's';
- }
-
- function repeat(thing, times) {
- var arr = [];
- for (var i = 0; i < times; i++) {
- arr.push(thing);
- }
- return arr;
- }
-
- function indent(str, spaces) {
- var lines = (str || '').split('\n');
- var newArr = [];
- for (var i = 0; i < lines.length; i++) {
- newArr.push(repeat(' ', spaces).join('') + lines[i]);
- }
- return newArr.join('\n');
- }
-
- function specFailureDetails(result) {
- printNewline();
- print(result.fullName);
-
- for (var i = 0; i < result.failedExpectations.length; i++) {
- var failedExpectation = result.failedExpectations[i];
- printNewline();
- print(indent(failedExpectation.message, 2));
- print(indent(failedExpectation.stack, 2));
- }
-
- printNewline();
- }
- }
-
- return ConsoleReporter;
- };
|