Merge branch 'fallback-report' of https://github.com/mauricioborges/jasmine into mauricioborges-fallback-report

- Merges #1009
This commit is contained in:
Gregg Van Hove
2016-02-22 10:11:37 -08:00
5 changed files with 72 additions and 0 deletions

View File

@@ -766,6 +766,10 @@ getJasmineRequireObj().Env = function(j$) {
reporter.addReporter(reporterToAdd); reporter.addReporter(reporterToAdd);
}; };
this.provideFallbackReporter = function(reporterToAdd) {
reporter.provideFallbackReporter(reporterToAdd);
};
var spyRegistry = new j$.SpyRegistry({currentSpies: function() { var spyRegistry = new j$.SpyRegistry({currentSpies: function() {
if(!currentRunnable()) { if(!currentRunnable()) {
throw new Error('Spies must be created in a before function or a spec'); throw new Error('Spies must be created in a before function or a spec');
@@ -1983,14 +1987,23 @@ getJasmineRequireObj().ReportDispatcher = function() {
} }
var reporters = []; var reporters = [];
var fallbackReporter = null;
this.addReporter = function(reporter) { this.addReporter = function(reporter) {
reporters.push(reporter); reporters.push(reporter);
}; };
this.provideFallbackReporter = function(reporter) {
fallbackReporter = reporter;
};
return this; return this;
function dispatch(method, args) { function dispatch(method, args) {
if (reporters.length === 0 && fallbackReporter !== null) {
reporters.push(fallbackReporter);
}
for (var i = 0; i < reporters.length; i++) { for (var i = 0; i < reporters.length; i++) {
var reporter = reporters[i]; var reporter = reporters[i];
if (reporter[method]) { if (reporter[method]) {

View File

@@ -37,4 +37,28 @@ describe("ReportDispatcher", function() {
dispatcher.foo(123, 456); dispatcher.foo(123, 456);
}).not.toThrow(); }).not.toThrow();
}); });
it("allows providing a fallback reporter in case there's no other report", function() {
var dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar']),
reporter = jasmine.createSpyObj('reporter', ['foo', 'bar']);
dispatcher.provideFallbackReporter(reporter);
dispatcher.foo(123, 456);
expect(reporter.foo).toHaveBeenCalledWith(123, 456);
});
it("does not call fallback reporting methods when another report is provided", function() {
var dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar']),
reporter = jasmine.createSpyObj('reporter', ['foo', 'bar']),
fallbackReporter = jasmine.createSpyObj('otherReporter', ['foo', 'bar']);
dispatcher.provideFallbackReporter(fallbackReporter);
dispatcher.addReporter(reporter);
dispatcher.foo(123, 456);
expect(reporter.foo).toHaveBeenCalledWith(123, 456);
expect(fallbackReporter.foo).not.toHaveBeenCalledWith(123, 456);
});
}); });

View File

@@ -1307,6 +1307,28 @@ describe("Env integration", function() {
env.execute(); env.execute();
}); });
it('should report using fallback reporter', function(done) {
var env = new jasmineUnderTest.Env(),
reporter = jasmine.createSpyObj('fakeReporter', [
'specDone',
'jasmineDone'
]);
reporter.jasmineDone.and.callFake(function() {
expect(reporter.specDone).toHaveBeenCalled();
done();
});
env.provideFallbackReporter(reporter);
env.it('will be pending', function() {
env.pending('with a message');
});
env.execute();
});
it('should report xdescribes as expected', function(done) { it('should report xdescribes as expected', function(done) {
var env = new jasmineUnderTest.Env(), var env = new jasmineUnderTest.Env(),
reporter = jasmine.createSpyObj('fakeReporter', [ reporter = jasmine.createSpyObj('fakeReporter', [

View File

@@ -262,6 +262,10 @@ getJasmineRequireObj().Env = function(j$) {
reporter.addReporter(reporterToAdd); reporter.addReporter(reporterToAdd);
}; };
this.provideFallbackReporter = function(reporterToAdd) {
reporter.provideFallbackReporter(reporterToAdd);
};
var spyRegistry = new j$.SpyRegistry({currentSpies: function() { var spyRegistry = new j$.SpyRegistry({currentSpies: function() {
if(!currentRunnable()) { if(!currentRunnable()) {
throw new Error('Spies must be created in a before function or a spec'); throw new Error('Spies must be created in a before function or a spec');

View File

@@ -13,14 +13,23 @@ getJasmineRequireObj().ReportDispatcher = function() {
} }
var reporters = []; var reporters = [];
var fallbackReporter = null;
this.addReporter = function(reporter) { this.addReporter = function(reporter) {
reporters.push(reporter); reporters.push(reporter);
}; };
this.provideFallbackReporter = function(reporter) {
fallbackReporter = reporter;
};
return this; return this;
function dispatch(method, args) { function dispatch(method, args) {
if (reporters.length === 0 && fallbackReporter !== null) {
reporters.push(fallbackReporter);
}
for (var i = 0; i < reporters.length; i++) { for (var i = 0; i < reporters.length; i++) {
var reporter = reporters[i]; var reporter = reporters[i];
if (reporter[method]) { if (reporter[method]) {