diff --git a/lib/jasmine-core/jasmine-html.js b/lib/jasmine-core/jasmine-html.js index 9c24ba17..8399eda4 100644 --- a/lib/jasmine-core/jasmine-html.js +++ b/lib/jasmine-core/jasmine-html.js @@ -423,53 +423,9 @@ jasmineRequire.HtmlReporter = function(j$) { ); } - if (result.trace) { - messages.appendChild(traceTable(result.trace)); - } - return failure; } - function traceTable(trace) { - var tbody = createDom('tbody'); - - trace.forEach(function(entry) { - tbody.appendChild( - createDom( - 'tr', - {}, - createDom('td', {}, entry.timestamp.toString()), - createDom('td', {}, entry.message) - ) - ); - }); - - return createDom( - 'div', - { className: 'jasmine-trace' }, - createDom( - 'div', - { className: 'jasmine-trace-header' }, - 'Trace information' - ), - createDom( - 'table', - {}, - createDom( - 'thead', - {}, - createDom( - 'tr', - {}, - createDom('th', {}, 'Time (ms)'), - createDom('th', {}, 'Message') - ) - ), - tbody - ) - ); - } - function summaryList(resultsTree, domParent) { var specListNode; for (var i = 0; i < resultsTree.children.length; i++) { diff --git a/lib/jasmine-core/jasmine.css b/lib/jasmine-core/jasmine.css index 87e5f002..dba3ca98 100644 --- a/lib/jasmine-core/jasmine.css +++ b/lib/jasmine-core/jasmine.css @@ -268,17 +268,4 @@ body { border: 1px solid #ddd; background: white; white-space: pre; -} -.jasmine_html-reporter .jasmine-trace { - margin: 5px 0 0 0; - padding: 5px; - color: #666; - border: 1px solid #ddd; - background: white; -} -.jasmine_html-reporter .jasmine-trace table { - border-spacing: 0; -} -.jasmine_html-reporter .jasmine-trace table, .jasmine_html-reporter .jasmine-trace th, .jasmine_html-reporter .jasmine-trace td { - border: 1px solid #ddd; } \ No newline at end of file diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index f6778e23..ab9bb00e 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -589,22 +589,6 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) { putativeSpy.calls instanceof j$.CallTracker ); }; - - /** - * Logs a message for use in debugging. If the spec fails, trace messages - * will be included in the {@link SpecResult|result} passed to the - * reporter's specDone method. - * - * This method should be called only when a spec (including any associated - * beforeEach or afterEach functions) is running. - * @function - * @name jasmine.trace - * @since 3.10.0 - * @param {String} msg - The message to log - */ - j$.trace = function(msg) { - j$.getEnv().trace(msg); - }; }; getJasmineRequireObj().util = function(j$) { @@ -839,9 +823,8 @@ getJasmineRequireObj().Spec = function(j$) { * @property {String} status - Once the spec has completed, this string represents the pass/fail status of this spec. * @property {number} duration - The time in ms used by the spec execution, including any before/afterEach. * @property {Object} properties - User-supplied properties, if any, that were set using {@link Env#setSpecProperty} - * @property {TraceEntry[]|null} trace - Trace messages, if any, that were logged using {@link Env#trace} during a failing spec. * @since 2.0.0 - */ +x */ this.result = { id: this.id, description: this.description, @@ -851,8 +834,7 @@ getJasmineRequireObj().Spec = function(j$) { deprecationWarnings: [], pendingReason: '', duration: null, - properties: null, - trace: null + properties: null }; } @@ -897,11 +879,6 @@ getJasmineRequireObj().Spec = function(j$) { self.queueableFn.fn = null; self.result.status = self.status(excluded, failSpecWithNoExp); self.result.duration = self.timer.elapsed(); - - if (self.result.status !== 'failed') { - self.result.trace = null; - } - self.resultCallback(self.result, done); } }; @@ -1013,20 +990,6 @@ getJasmineRequireObj().Spec = function(j$) { ); }; - Spec.prototype.trace = function(msg) { - if (!this.result.trace) { - this.result.trace = []; - } - - /** - * @typedef TraceEntry - * @property {String} message - The message that was passed to {@link Env#trace}. - * @property {number} timestamp - The time when the entry was added, in - * milliseconds from the spec's start time - */ - this.result.trace.push({ message: msg, timestamp: this.timer.elapsed() }); - }; - var extractCustomPendingMessage = function(e) { var fullMessage = e.toString(), boilerplateStart = fullMessage.indexOf(Spec.pendingSpecExceptionMessage), @@ -2420,16 +2383,6 @@ getJasmineRequireObj().Env = function(j$) { currentSuite().setSuiteProperty(key, value); }; - this.trace = function(msg) { - var maybeSpec = currentRunnable(); - - if (!maybeSpec || !maybeSpec.trace) { - throw new Error("'trace' was called when there was no current spec"); - } - - maybeSpec.trace(msg); - }; - this.expect = function(actual) { if (!currentRunnable()) { throw new Error( diff --git a/spec/core/SpecSpec.js b/spec/core/SpecSpec.js index 9f250e9f..fa530049 100644 --- a/spec/core/SpecSpec.js +++ b/spec/core/SpecSpec.js @@ -228,8 +228,7 @@ describe('Spec', function() { deprecationWarnings: [], pendingReason: '', duration: jasmine.any(Number), - properties: null, - trace: null + properties: null }, 'things' ); @@ -517,110 +516,4 @@ describe('Spec', function() { args.cleanupFns[0].fn(); expect(resultCallback.calls.first().args[0].failedExpectations).toEqual([]); }); - - describe('#trace', function() { - it('adds the messages to the result', function() { - var timer = jasmine.createSpyObj('timer', ['start', 'elapsed']), - spec = new jasmineUnderTest.Spec({ - queueableFn: { - fn: function() {} - }, - queueRunnerFactory: function() {}, - timer: timer - }), - t1 = 123, - t2 = 456; - - spec.execute(); - expect(spec.result.trace).toBeNull(); - timer.elapsed.and.returnValue(t1); - spec.trace('msg 1'); - expect(spec.result.trace).toEqual([{ message: 'msg 1', timestamp: t1 }]); - timer.elapsed.and.returnValue(t2); - spec.trace('msg 2'); - expect(spec.result.trace).toEqual([ - { message: 'msg 1', timestamp: t1 }, - { message: 'msg 2', timestamp: t2 } - ]); - }); - - describe('When the spec passes', function() { - it('omits the messages from the reported result', function() { - var resultCallback = jasmine.createSpy('resultCallback'), - spec = new jasmineUnderTest.Spec({ - queueableFn: { - fn: function() {} - }, - resultCallback: resultCallback, - queueRunnerFactory: function(config) { - spec.trace('msg'); - config.cleanupFns.forEach(function(fn) { - fn.fn(); - }); - config.onComplete(false); - } - }); - - spec.execute(function() {}); - expect(resultCallback).toHaveBeenCalledWith( - jasmine.objectContaining({ trace: null }), - undefined - ); - }); - - it('removes the messages to save memory', function() { - var resultCallback = jasmine.createSpy('resultCallback'), - spec = new jasmineUnderTest.Spec({ - queueableFn: { - fn: function() {} - }, - resultCallback: resultCallback, - queueRunnerFactory: function(config) { - spec.trace('msg'); - config.cleanupFns.forEach(function(fn) { - fn.fn(); - }); - config.onComplete(false); - } - }); - - spec.execute(function() {}); - expect(resultCallback).toHaveBeenCalled(); - expect(spec.result.trace).toBeNull(); - }); - }); - - describe('When the spec fails', function() { - it('includes the messages in the reported result', function() { - var resultCallback = jasmine.createSpy('resultCallback'), - timer = jasmine.createSpyObj('timer', ['start', 'elapsed']), - spec = new jasmineUnderTest.Spec({ - queueableFn: { - fn: function() {} - }, - resultCallback: resultCallback, - queueRunnerFactory: function(config) { - spec.trace('msg'); - spec.onException(new Error('nope')); - config.cleanupFns.forEach(function(fn) { - fn.fn(); - }); - config.onComplete(true); - }, - timer: timer - }), - timestamp = 12345; - - timer.elapsed.and.returnValue(timestamp); - - spec.execute(function() {}); - expect(resultCallback).toHaveBeenCalledWith( - jasmine.objectContaining({ - trace: [{ message: 'msg', timestamp: timestamp }] - }), - undefined - ); - }); - }); - }); }); diff --git a/spec/core/baseSpec.js b/spec/core/baseSpec.js index a35edff7..0c6ef23a 100644 --- a/spec/core/baseSpec.js +++ b/spec/core/baseSpec.js @@ -186,12 +186,4 @@ describe('base helpers', function() { }); }); }); - - describe('trace', function() { - it("forwards to the current env's trace function", function() { - spyOn(jasmineUnderTest.getEnv(), 'trace'); - jasmineUnderTest.trace('a message'); - expect(jasmineUnderTest.getEnv().trace).toHaveBeenCalledWith('a message'); - }); - }); }); diff --git a/spec/core/integration/EnvSpec.js b/spec/core/integration/EnvSpec.js index bf70f9dc..b257d085 100644 --- a/spec/core/integration/EnvSpec.js +++ b/spec/core/integration/EnvSpec.js @@ -3234,87 +3234,4 @@ describe('Env integration', function() { }); }); }); - - it('sends traces to the reporter when the spec fails', function(done) { - var reporter = jasmine.createSpyObj('reporter', ['specDone']), - startTime, - endTime; - - env.addReporter(reporter); - env.configure({ random: false }); - - env.it('fails', function() { - startTime = new Date().getTime(); - env.trace('message 1'); - env.trace('message 2'); - env.expect(1).toBe(2); - endTime = new Date().getTime(); - }); - - env.it('passes', function() { - env.trace('message that should not be reported'); - }); - - env.execute(null, function() { - function numberInRange(min, max) { - return { - asymmetricMatch: function(compareTo) { - return compareTo >= min && compareTo <= max; - }, - jasmineToString: function(pp) { - return ''; - } - }; - } - - var duration; - - expect(reporter.specDone).toHaveBeenCalledTimes(2); - duration = reporter.specDone.calls.argsFor(0)[0].duration; - expect(reporter.specDone.calls.argsFor(0)[0]).toEqual( - jasmine.objectContaining({ - trace: [ - { - timestamp: numberInRange(0, duration), - message: 'message 1' - }, - { - timestamp: numberInRange(0, duration), - message: 'message 2' - } - ] - }) - ); - expect(reporter.specDone.calls.argsFor(1)[0].trace).toBeFalsy(); - done(); - }); - }); - - it('reports an error when trace is used when a spec is not running', function(done) { - var reporter = jasmine.createSpyObj('reporter', ['suiteDone']); - - env.describe('a suite', function() { - env.beforeAll(function() { - env.trace('a message'); - }); - - env.it('a spec', function() {}); - }); - - env.addReporter(reporter); - env.execute(null, function() { - expect(reporter.suiteDone).toHaveBeenCalledWith( - jasmine.objectContaining({ - failedExpectations: [ - jasmine.objectContaining({ - message: jasmine.stringContaining( - "'trace' was called when there was no current spec" - ) - }) - ] - }) - ); - done(); - }); - }); }); diff --git a/spec/html/HtmlReporterSpec.js b/spec/html/HtmlReporterSpec.js index 13dce454..5fef9a21 100644 --- a/spec/html/HtmlReporterSpec.js +++ b/spec/html/HtmlReporterSpec.js @@ -1339,23 +1339,6 @@ describe('HtmlReporter', function() { } ] }; - var failingSpecResultWithTrace = { - id: 567, - status: 'failed', - description: 'a failing spec', - fullName: 'a suite inner suite a failing spec', - passedExpectations: [], - failedExpectations: [ - { - message: 'a failure message', - stack: 'a stack trace' - } - ], - trace: [ - { timestamp: 123, message: 'msg 1' }, - { timestamp: 456, message: 'msg 1' } - ] - }; var passingSuiteResult = { id: 1, @@ -1373,20 +1356,18 @@ describe('HtmlReporter', function() { reporter.suiteDone(passingSuiteResult); reporter.suiteDone(failingSuiteResult); reporter.suiteDone(passingSuiteResult); - reporter.specStarted(failingSpecResultWithTrace); - reporter.specDone(failingSpecResultWithTrace); reporter.jasmineDone({}); }); it('reports the specs counts', function() { var alertBar = container.querySelector('.jasmine-alert .jasmine-bar'); - expect(alertBar.innerHTML).toMatch(/3 specs, 3 failures/); + expect(alertBar.innerHTML).toMatch(/2 specs, 2 failure/); }); it('reports failure messages and stack traces', function() { var specFailures = container.querySelector('.jasmine-failures'); - expect(specFailures.childNodes.length).toEqual(3); + expect(specFailures.childNodes.length).toEqual(2); var specFailure = specFailures.childNodes[0]; expect(specFailure.getAttribute('class')).toMatch(/jasmine-failed/); @@ -1427,18 +1408,6 @@ describe('HtmlReporter', function() { expect(suiteStackTrace.innerHTML).toEqual('a stack trace'); }); - it('reports traces when present', function() { - var specFailure = container.querySelectorAll( - '.jasmine-spec-detail.jasmine-failed' - )[2], - trace = specFailure.querySelector('.jasmine-trace table'), - rows; - - expect(trace).toBeTruthy(); - rows = trace.querySelectorAll('tbody tr'); - expect(rows.length).toEqual(2); - }); - it('provides links to focus on a failure and each containing suite', function() { var description = container.querySelector( '.jasmine-failures .jasmine-description' diff --git a/src/core/Env.js b/src/core/Env.js index 3cd79c5f..895579c1 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -1318,16 +1318,6 @@ getJasmineRequireObj().Env = function(j$) { currentSuite().setSuiteProperty(key, value); }; - this.trace = function(msg) { - var maybeSpec = currentRunnable(); - - if (!maybeSpec || !maybeSpec.trace) { - throw new Error("'trace' was called when there was no current spec"); - } - - maybeSpec.trace(msg); - }; - this.expect = function(actual) { if (!currentRunnable()) { throw new Error( diff --git a/src/core/Spec.js b/src/core/Spec.js index cd23a238..2691ce04 100644 --- a/src/core/Spec.js +++ b/src/core/Spec.js @@ -68,9 +68,8 @@ getJasmineRequireObj().Spec = function(j$) { * @property {String} status - Once the spec has completed, this string represents the pass/fail status of this spec. * @property {number} duration - The time in ms used by the spec execution, including any before/afterEach. * @property {Object} properties - User-supplied properties, if any, that were set using {@link Env#setSpecProperty} - * @property {TraceEntry[]|null} trace - Trace messages, if any, that were logged using {@link Env#trace} during a failing spec. * @since 2.0.0 - */ +x */ this.result = { id: this.id, description: this.description, @@ -80,8 +79,7 @@ getJasmineRequireObj().Spec = function(j$) { deprecationWarnings: [], pendingReason: '', duration: null, - properties: null, - trace: null + properties: null }; } @@ -126,11 +124,6 @@ getJasmineRequireObj().Spec = function(j$) { self.queueableFn.fn = null; self.result.status = self.status(excluded, failSpecWithNoExp); self.result.duration = self.timer.elapsed(); - - if (self.result.status !== 'failed') { - self.result.trace = null; - } - self.resultCallback(self.result, done); } }; @@ -242,20 +235,6 @@ getJasmineRequireObj().Spec = function(j$) { ); }; - Spec.prototype.trace = function(msg) { - if (!this.result.trace) { - this.result.trace = []; - } - - /** - * @typedef TraceEntry - * @property {String} message - The message that was passed to {@link Env#trace}. - * @property {number} timestamp - The time when the entry was added, in - * milliseconds from the spec's start time - */ - this.result.trace.push({ message: msg, timestamp: this.timer.elapsed() }); - }; - var extractCustomPendingMessage = function(e) { var fullMessage = e.toString(), boilerplateStart = fullMessage.indexOf(Spec.pendingSpecExceptionMessage), diff --git a/src/core/base.js b/src/core/base.js index 912e52f2..ee5c0cad 100644 --- a/src/core/base.js +++ b/src/core/base.js @@ -420,20 +420,4 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) { putativeSpy.calls instanceof j$.CallTracker ); }; - - /** - * Logs a message for use in debugging. If the spec fails, trace messages - * will be included in the {@link SpecResult|result} passed to the - * reporter's specDone method. - * - * This method should be called only when a spec (including any associated - * beforeEach or afterEach functions) is running. - * @function - * @name jasmine.trace - * @since 3.10.0 - * @param {String} msg - The message to log - */ - j$.trace = function(msg) { - j$.getEnv().trace(msg); - }; }; diff --git a/src/html/HtmlReporter.js b/src/html/HtmlReporter.js index 80b9d03e..dc91c4dc 100644 --- a/src/html/HtmlReporter.js +++ b/src/html/HtmlReporter.js @@ -392,53 +392,9 @@ jasmineRequire.HtmlReporter = function(j$) { ); } - if (result.trace) { - messages.appendChild(traceTable(result.trace)); - } - return failure; } - function traceTable(trace) { - var tbody = createDom('tbody'); - - trace.forEach(function(entry) { - tbody.appendChild( - createDom( - 'tr', - {}, - createDom('td', {}, entry.timestamp.toString()), - createDom('td', {}, entry.message) - ) - ); - }); - - return createDom( - 'div', - { className: 'jasmine-trace' }, - createDom( - 'div', - { className: 'jasmine-trace-header' }, - 'Trace information' - ), - createDom( - 'table', - {}, - createDom( - 'thead', - {}, - createDom( - 'tr', - {}, - createDom('th', {}, 'Time (ms)'), - createDom('th', {}, 'Message') - ) - ), - tbody - ) - ); - } - function summaryList(resultsTree, domParent) { var specListNode; for (var i = 0; i < resultsTree.children.length; i++) { diff --git a/src/html/_HTMLReporter.scss b/src/html/_HTMLReporter.scss index 7ab2d515..2ee9c9be 100644 --- a/src/html/_HTMLReporter.scss +++ b/src/html/_HTMLReporter.scss @@ -388,20 +388,4 @@ body { background: white; white-space: pre; } - - .jasmine-trace { - margin: 5px 0 0 0; - padding: 5px; - color: $light-text-color; - border: 1px solid #ddd; - background: white; - - table { - border-spacing: 0; - } - - table, th, td { - border: 1px solid #ddd; - } - } }