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;
- }
- }
}