* JsApiReporter - better inteface for getting spec results (it's a slice!)

* Removed RSpec dependency from running self_test/CI - includes using new Jasmine::Formatter::Console from the gem
*
This commit is contained in:
Dan Hansen and Davis W. Frank
2013-02-26 12:24:59 -08:00
parent 2c06e36b9b
commit 98ae076f0c
8 changed files with 69 additions and 48 deletions

View File

@@ -43,13 +43,9 @@ task :list_dev_tasks do
system "thor list"
end
require "jasmine"
require 'rspec'
require 'rspec/core/rake_task'
desc "Run all examples"
RSpec::Core::RakeTask.new(:jasmine_core_spec) do |t|
t.pattern = 'spec/jasmine_self_test_spec.rb'
# TODO: Is there better way to invoke this using Jasmine gem???
task :core_spec do
exec "ruby spec/jasmine_self_test_spec.rb"
end
namespace :jasmine do

View File

@@ -252,7 +252,7 @@ jasmine.HtmlReporter = function(options) {
this.last = function() {
return this.children[this.children.length-1];
}
};
};jasmine.QueryString = function(options) {
this.setParam = function(key, value) {

View File

@@ -50,4 +50,4 @@ body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }
.html-reporter .failures .spec-detail .description { display: block; color: white; background-color: #b03911; }
.html-reporter .result-message { padding-top: 14px; color: #333333; }
.html-reporter .result-message span.result { display: block; }
.html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
.html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #dddddd; background: white; white-space: pre; }

View File

@@ -439,7 +439,7 @@ jasmine.util.argsToArray = function(args) {
var arrayOfArgs = [];
for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
return arrayOfArgs;
};jasmine.exceptionMessageFor = function(e) {
};jasmine.exceptionFormatter = function(e) {
var message = e.name
+ ': '
+ e.message
@@ -938,8 +938,6 @@ jasmine.JsApiReporter = function(jasmine) {
this.jasmine = jasmine || {};
this.started = false;
this.finished = false;
this.suites_ = [];
this.results_ = {};
var status = 'loaded';
@@ -975,19 +973,16 @@ jasmine.JsApiReporter = function(jasmine) {
return suites;
};
var specs = {};
var specs = [];
this.specStarted = function(result) {
storeSpec(result);
specs.push(result);
};
this.specDone = function(result) {
storeSpec(result);
};
this.specDone = function(result) { };
function storeSpec(result) {
specs[result.id] = result;
}
this.specResults = function(index, length) {
return specs.slice(index, index + length);
};
this.specs = function() {
return specs;

View File

@@ -150,23 +150,52 @@ describe("JsApiReporter", function() {
});
it("tracks a spec", function() {
var reporter = new jasmine.JsApiReporter();
var reporter = new jasmine.JsApiReporter(),
result = {
id: 123,
description: "A spec"
};
reporter.specStarted({
id: 123,
description: "A spec"
});
reporter.specStarted(result);
var specs = reporter.specs();
expect(specs).toEqual({123: {id: 123, description: "A spec"}});
expect(specs).toEqual([result]);
reporter.specDone({
id: 123,
description: "A spec",
status: 'passed'
result.status = "passed";
reporter.specDone(result);
expect(specs).toEqual([result]);
});
describe("#specResults", function() {
var reporter, specResult1, specResult2;
beforeEach(function() {
reporter = new jasmine.JsApiReporter();
specResult1 = {
id: 1,
description: "A spec"
};
specResult2 = {
id: 2,
description: "Another spec"
};
reporter.specStarted(specResult1);
reporter.specStarted(specResult2);
});
expect(specs).toEqual({123: {id: 123, description: "A spec", status: 'passed'}});
it("should return a slice of results", function() {
expect(reporter.specResults(0, 1)).toEqual([specResult1]);
expect(reporter.specResults(1, 1)).toEqual([specResult2]);
});
describe("when the results do not exist", function() {
it("should return a slice of shorter length", function() {
expect(reporter.specResults(0, 3)).toEqual([specResult1, specResult2]);
expect(reporter.specResults(2, 3)).toEqual([]);
});
});
});
});

View File

@@ -1,3 +1,5 @@
require 'rubygems'
require 'bundler/setup'
require 'jasmine'
Jasmine.load_configuration_from_yaml(File.join(Dir.pwd, 'spec', 'jasmine.yml'))
@@ -16,8 +18,12 @@ t.abort_on_exception = true
Jasmine::wait_for_listener(config.port, "jasmine server")
puts "jasmine server started."
results_processor = Jasmine::ResultsProcessor.new(config)
results = Jasmine::Runners::HTTP.new(driver, results_processor, config.result_batch_size).run
formatter = Jasmine::RspecFormatter.new
formatter.format_results(results)
reporter = Jasmine::Runners::ApiReporter.new(driver, config.result_batch_size)
raw_results = Jasmine::Runners::HTTP.new(driver, reporter).run
results = Jasmine::Results.new(raw_results)
formatter = Jasmine::Formatters::Console.new(results)
puts formatter.failures
puts formatter.summary
exit results.failures.size

View File

@@ -2,8 +2,6 @@ jasmine.JsApiReporter = function(jasmine) {
this.jasmine = jasmine || {};
this.started = false;
this.finished = false;
this.suites_ = [];
this.results_ = {};
var status = 'loaded';
@@ -39,19 +37,16 @@ jasmine.JsApiReporter = function(jasmine) {
return suites;
};
var specs = {};
var specs = [];
this.specStarted = function(result) {
storeSpec(result);
specs.push(result);
};
this.specDone = function(result) {
storeSpec(result);
};
this.specDone = function(result) { };
function storeSpec(result) {
specs[result.id] = result;
}
this.specResults = function(index, length) {
return specs.slice(index, index + length);
};
this.specs = function() {
return specs;

View File

@@ -50,4 +50,4 @@ body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }
.html-reporter .failures .spec-detail .description { display: block; color: white; background-color: #b03911; }
.html-reporter .result-message { padding-top: 14px; color: #333333; }
.html-reporter .result-message span.result { display: block; }
.html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
.html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #dddddd; background: white; white-space: pre; }