can write out a reporting file
This commit is contained in:
parent
1be31e800e
commit
029e12ad7b
5
Gemfile
5
Gemfile
@ -4,5 +4,8 @@ source "http://rubygems.org"
|
|||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
gem 'rspec'
|
gem 'rspec'
|
||||||
gem 'autotest'
|
|
||||||
gem 'fakefs', :require => nil
|
gem 'fakefs', :require => nil
|
||||||
|
gem 'guard'
|
||||||
|
gem 'guard-rspec'
|
||||||
|
gem 'guard-shell'
|
||||||
|
gem 'growl'
|
||||||
|
23
Guardfile
Normal file
23
Guardfile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
# Add files and commands to this file, like the example:
|
||||||
|
# watch('file/path') { `command(s)` }
|
||||||
|
#
|
||||||
|
|
||||||
|
guard 'shell' do
|
||||||
|
watch(%r{ext/jasmine-webkit-specrunner/specrunner.cpp}) { compile }
|
||||||
|
end
|
||||||
|
# A sample Guardfile
|
||||||
|
# More info at https://github.com/guard/guard#readme
|
||||||
|
|
||||||
|
guard 'rspec', :version => 2 do
|
||||||
|
watch(%r{^spec/.+_spec\.rb})
|
||||||
|
watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
||||||
|
watch(%r{^bin/(.+)}) { |m| "spec/bin/#{m[1]}_spec.rb" }
|
||||||
|
watch('spec/spec_helper.rb') { "spec" }
|
||||||
|
end
|
||||||
|
|
||||||
|
def compile
|
||||||
|
system %{cd ext/jasmine-webkit-specrunner && ruby extconf.rb}
|
||||||
|
end
|
||||||
|
|
||||||
|
compile
|
@ -2,7 +2,10 @@
|
|||||||
|
|
||||||
require 'rubygems'
|
require 'rubygems'
|
||||||
|
|
||||||
gem_dir = File.expand_path('../..', __FILE__)
|
def gem_dir
|
||||||
|
File.expand_path('../..', __FILE__)
|
||||||
|
end
|
||||||
|
|
||||||
$:.unshift(File.join(gem_dir, 'lib'))
|
$:.unshift(File.join(gem_dir, 'lib'))
|
||||||
|
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
@ -25,13 +28,15 @@ opts = GetoptLong.new(
|
|||||||
[ '--colors', '-c', GetoptLong::NO_ARGUMENT ],
|
[ '--colors', '-c', GetoptLong::NO_ARGUMENT ],
|
||||||
[ '--no-colors', GetoptLong::NO_ARGUMENT ],
|
[ '--no-colors', GetoptLong::NO_ARGUMENT ],
|
||||||
[ '--keep', GetoptLong::NO_ARGUMENT ],
|
[ '--keep', GetoptLong::NO_ARGUMENT ],
|
||||||
|
[ '--report', GetoptLong::REQUIRED_ARGUMENT ],
|
||||||
[ '--jasmine-config', '-j', GetoptLong::REQUIRED_ARGUMENT ]
|
[ '--jasmine-config', '-j', GetoptLong::REQUIRED_ARGUMENT ]
|
||||||
)
|
)
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
:colors => false,
|
:colors => false,
|
||||||
:remove_html_file => true,
|
:remove_html_file => true,
|
||||||
:jasmine_config => 'spec/javascripts/support/jasmine.yml'
|
:jasmine_config => 'spec/javascripts/support/jasmine.yml',
|
||||||
|
:report => false
|
||||||
}
|
}
|
||||||
|
|
||||||
@process_options = lambda { |*args|
|
@process_options = lambda { |*args|
|
||||||
@ -42,8 +47,10 @@ options = {
|
|||||||
options[:colors] = true
|
options[:colors] = true
|
||||||
when '--no-colors', '-nc'
|
when '--no-colors', '-nc'
|
||||||
options[:colors] = false
|
options[:colors] = false
|
||||||
when '--keep', '-k'
|
when '--keep'
|
||||||
options[:remove_html_file] = false
|
options[:remove_html_file] = false
|
||||||
|
when '--report'
|
||||||
|
options[:report] = arg
|
||||||
when '--jasmine-config', '-j'
|
when '--jasmine-config', '-j'
|
||||||
options[:jasmine_config] = arg
|
options[:jasmine_config] = arg
|
||||||
end
|
end
|
||||||
@ -97,7 +104,7 @@ files = files.collect { |file|
|
|||||||
output = jasmine_html_template(files)
|
output = jasmine_html_template(files)
|
||||||
|
|
||||||
File.open(target = "specrunner.#{$$}.html", 'w') { |fh| fh.print output }
|
File.open(target = "specrunner.#{$$}.html", 'w') { |fh| fh.print output }
|
||||||
system %{#{File.join(gem_dir, RUNNER)} #{options[:colors] ? '-c' : ''} #{target}}
|
system jasmine_command(options, target)
|
||||||
status = $?.exitstatus
|
status = $?.exitstatus
|
||||||
FileUtils.rm_f target if options[:remove_html_file] || (status == 0)
|
FileUtils.rm_f target if options[:remove_html_file] || (status == 0)
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
|
|
||||||
#include <QtGui>
|
#include <QtGui>
|
||||||
#include <QtWebKit>
|
#include <QtWebKit>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QTextStream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(4, 7, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(4, 7, 0)
|
||||||
@ -64,6 +66,7 @@ public:
|
|||||||
HeadlessSpecRunner();
|
HeadlessSpecRunner();
|
||||||
void load(const QString &spec);
|
void load(const QString &spec);
|
||||||
void setColors(bool colors);
|
void setColors(bool colors);
|
||||||
|
void reportFile(const QString &file);
|
||||||
public slots:
|
public slots:
|
||||||
void log(const QString &msg);
|
void log(const QString &msg);
|
||||||
void specPassed();
|
void specPassed();
|
||||||
@ -88,6 +91,7 @@ private:
|
|||||||
bool isFinished;
|
bool isFinished;
|
||||||
bool didFail;
|
bool didFail;
|
||||||
bool consoleNotUsedThisRun;
|
bool consoleNotUsedThisRun;
|
||||||
|
QString reportFilename;
|
||||||
|
|
||||||
void red();
|
void red();
|
||||||
void green();
|
void green();
|
||||||
@ -142,6 +146,11 @@ void HeadlessSpecRunner::setColors(bool colors)
|
|||||||
showColors = colors;
|
showColors = colors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HeadlessSpecRunner::reportFile(const QString &file)
|
||||||
|
{
|
||||||
|
reportFilename = file;
|
||||||
|
}
|
||||||
|
|
||||||
void HeadlessSpecRunner::red()
|
void HeadlessSpecRunner::red()
|
||||||
{
|
{
|
||||||
if (showColors) std::cout << "\033[0;31m";
|
if (showColors) std::cout << "\033[0;31m";
|
||||||
@ -246,6 +255,18 @@ void HeadlessSpecRunner::finishSuite(const QString &duration, const QString &tot
|
|||||||
clear();
|
clear();
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
if (!reportFilename.isEmpty()) {
|
||||||
|
QFile reportFH(reportFilename);
|
||||||
|
|
||||||
|
if (reportFH.open(QFile::WriteOnly)) {
|
||||||
|
QTextStream report(&reportFH);
|
||||||
|
report << qPrintable(total) << "/" << qPrintable(failed) << "/";
|
||||||
|
report << (usedConsole ? "T" : "F");
|
||||||
|
report << "/" << qPrintable(duration) << "\n";
|
||||||
|
reportFH.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
isFinished = true;
|
isFinished = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,16 +305,20 @@ void HeadlessSpecRunner::timerEvent(QTimerEvent *event)
|
|||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
bool showColors = false;
|
|
||||||
char *filename = NULL;
|
char *filename = NULL;
|
||||||
|
char *reporter = NULL;
|
||||||
|
char showColors = false;
|
||||||
|
|
||||||
int c, index;
|
int c, index;
|
||||||
|
|
||||||
while ((c = getopt(argc, argv, "c")) != -1) {
|
while ((c = getopt(argc, argv, "cr:")) != -1) {
|
||||||
switch(c) {
|
switch(c) {
|
||||||
case 'c':
|
case 'c':
|
||||||
showColors = true;
|
showColors = true;
|
||||||
break;
|
break;
|
||||||
|
case 'r':
|
||||||
|
reporter = optarg;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,10 +336,11 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
||||||
HeadlessSpecRunner runner;
|
HeadlessSpecRunner runner;
|
||||||
runner.setColors(showColors);
|
runner.setColors(true);
|
||||||
|
runner.reportFile(reporter);
|
||||||
runner.load(QString::fromLocal8Bit(filename));
|
runner.load(QString::fromLocal8Bit(filename));
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,6 +52,19 @@ module Jasmine
|
|||||||
HTML
|
HTML
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def runner_path
|
||||||
|
@runner_path ||= File.join(gem_dir, RUNNER)
|
||||||
|
end
|
||||||
|
|
||||||
|
def jasmine_command(options, target)
|
||||||
|
[
|
||||||
|
runner_path,
|
||||||
|
options[:colors] ? '-c' : nil,
|
||||||
|
options[:report] ? "-r #{options[:report]}" : nil,
|
||||||
|
target
|
||||||
|
].join(" ")
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def read_config_file(file)
|
def read_config_file(file)
|
||||||
|
|
||||||
|
@ -1,24 +1,52 @@
|
|||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe "jasmine-headless-webkit" do
|
describe "jasmine-headless-webkit" do
|
||||||
|
let(:report) { 'spec/report.txt' }
|
||||||
|
|
||||||
|
before do
|
||||||
|
FileUtils.rm_f report
|
||||||
|
end
|
||||||
|
|
||||||
|
after do
|
||||||
|
FileUtils.rm_f report
|
||||||
|
end
|
||||||
|
|
||||||
describe 'success' do
|
describe 'success' do
|
||||||
it "should succeed with error code 0" do
|
it "should succeed with error code 0" do
|
||||||
%x{bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml}
|
system %{bin/jasmine-headless-webkit -j spec/jasmine/success/success.yml --report #{report}}
|
||||||
$?.exitstatus.should == 0
|
$?.exitstatus.should == 0
|
||||||
|
|
||||||
|
parts = File.read(report).strip.split('/')
|
||||||
|
parts.length.should == 4
|
||||||
|
parts[0].should == "1"
|
||||||
|
parts[1].should == "0"
|
||||||
|
parts[2].should == "F"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'failure' do
|
describe 'failure' do
|
||||||
it "should fail with an error code of 1" do
|
it "should fail with an error code of 1" do
|
||||||
%x{bin/jasmine-headless-webkit -j spec/jasmine/failure/failure.yml}
|
system %{bin/jasmine-headless-webkit -j spec/jasmine/failure/failure.yml --report #{report}}
|
||||||
$?.exitstatus.should == 1
|
$?.exitstatus.should == 1
|
||||||
|
|
||||||
|
parts = File.read(report).strip.split('/')
|
||||||
|
parts.length.should == 4
|
||||||
|
parts[0].should == "1"
|
||||||
|
parts[1].should == "1"
|
||||||
|
parts[2].should == "F"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'with console.log' do
|
describe 'with console.log' do
|
||||||
it "should succeed, but has a console.log so an error code of 2" do
|
it "should succeed, but has a console.log so an error code of 2" do
|
||||||
%x{bin/jasmine-headless-webkit -j spec/jasmine/console_log/console_log.yml}
|
system %{bin/jasmine-headless-webkit -j spec/jasmine/console_log/console_log.yml --report #{report}}
|
||||||
$?.exitstatus.should == 2
|
$?.exitstatus.should == 2
|
||||||
|
|
||||||
|
parts = File.read(report).strip.split('/')
|
||||||
|
parts.length.should == 4
|
||||||
|
parts[0].should == "1"
|
||||||
|
parts[1].should == "0"
|
||||||
|
parts[2].should == "T"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user