diff --git a/jake.yml b/jake.yml index 454371a7..56161c28 100644 --- a/jake.yml +++ b/jake.yml @@ -94,6 +94,7 @@ packages: - reporters/testacular - reporters/testem - reporters/test_swarm + - reporters/coverage - reporters/composite - context/context diff --git a/source/package/config.js b/source/package/config.js index f4c2d853..b9901dc6 100644 --- a/source/package/config.js +++ b/source/package/config.js @@ -44,6 +44,7 @@ P.packages(function() { with(this) { 'JS.Enumerable', 'JS.SortedSet', 'JS.Range', + 'JS.Hash', 'JS.MethodChain', 'JS.Comparable', 'JS.StackTrace') diff --git a/source/test/_head.js b/source/test/_head.js index 8960fa22..ae20ceac 100644 --- a/source/test/_head.js +++ b/source/test/_head.js @@ -7,12 +7,13 @@ Enumerable = js.Enumerable || require('./enumerable').Enumerable, SortedSet = js.SortedSet || require('./set').SortedSet, Range = js.Range || require('./range').Range, + Hash = js.Hash || require('./hash').Hash, MethodChain = js.MethodChain || require('./method_chain').MethodChain, Comparable = js.Comparable || require('./comparable').Comparable, StackTrace = js.StackTrace || require('./stack_trace').StackTrace; if (E) exports.JS = exports; - factory(js, Console, DOM, Enumerable, SortedSet, Range, MethodChain, Comparable, StackTrace, E ? exports : js); + factory(js, Console, DOM, Enumerable, SortedSet, Range, Hash, MethodChain, Comparable, StackTrace, E ? exports : js); -})(function(JS, Console, DOM, Enumerable, SortedSet, Range, MethodChain, Comparable, StackTrace, exports) { +})(function(JS, Console, DOM, Enumerable, SortedSet, Range, Hash, MethodChain, Comparable, StackTrace, exports) { diff --git a/source/test/coverage.js b/source/test/coverage.js index ad13ec75..f7fa7c95 100644 --- a/source/test/coverage.js +++ b/source/test/coverage.js @@ -2,7 +2,7 @@ Test.extend({ Coverage: new JS.Class({ initialize: function(module) { this._module = module; - this._methods = new JS.Hash([]); + this._methods = new Hash([]); var storeMethods = function(module) { var methods = module.instanceMethods(false), @@ -15,14 +15,14 @@ Test.extend({ attach: function() { var module = this._module; - JS.StackTrace.addObserver(this); + StackTrace.addObserver(this); JS.Method.trace([module, module.__eigen__()]); }, detach: function() { var module = this._module; JS.Method.untrace([module, module.__eigen__()]); - JS.StackTrace.removeObserver(this); + StackTrace.removeObserver(this); }, update: function(event, frame) { diff --git a/source/test/reporters/coverage.js b/source/test/reporters/coverage.js new file mode 100644 index 00000000..588f8624 --- /dev/null +++ b/source/test/reporters/coverage.js @@ -0,0 +1,29 @@ +Test.Reporters.extend({ + Coverage: new JS.Class({ + include: Console, + + startSuite: function(event) {}, + + startContext: function(event) {}, + + startTest: function(event) {}, + + addFault: function(event) {}, + + endTest: function(event) {}, + + endContext: function(event) {}, + + update: function(event) {}, + + endSuite: function(event) { + var reports = Test.Unit.TestCase.reports; + for (var i = 0, n = reports.length; i < n; i++) { + this.reset(); + this.puts(''); + reports[i].report(); + } + } + }) +}); + diff --git a/source/test/runner.js b/source/test/runner.js index 116299e8..620ee9e1 100644 --- a/source/test/runner.js +++ b/source/test/runner.js @@ -39,7 +39,6 @@ Test.extend({ testResult.removeListener(TR.CHANGED, resultListener); testResult.removeListener(TR.FAULT, faultListener); - // TODO output reports var result = testResult.metadata(); this._reporter.endSuite(this.klass.timestamp(result)); }; diff --git a/source/test/ui/terminal.js b/source/test/ui/terminal.js index 16347fc7..3ff9fdeb 100644 --- a/source/test/ui/terminal.js +++ b/source/test/ui/terminal.js @@ -30,6 +30,7 @@ Test.UI.extend({ R = Test.Reporters; var Printer = R.get(options.format) || R.Dot; + reporters.push(new R.Coverage(options)); reporters.push(new Printer(options)); reporters.push(new R.ExitStatus(options));