114 lines
2.3 KiB
Ruby
114 lines
2.3 KiB
Ruby
if ENV['COVERAGE']
|
|
require 'simplecov'
|
|
SimpleCov.start
|
|
end
|
|
|
|
if ENV['PROFILE']
|
|
require 'perftools'
|
|
PerfTools::CpuProfiler.start("/tmp/jhw-profile")
|
|
end
|
|
|
|
require 'jasmine-headless-webkit'
|
|
require 'fakefs/spec_helpers'
|
|
|
|
RSpec.configure do |c|
|
|
c.mock_with :mocha
|
|
c.backtrace_clean_patterns = []
|
|
|
|
c.before(:each) do
|
|
Jasmine::Headless::CacheableAction.enabled = false
|
|
Jasmine::Headless::FilesList.reset!
|
|
end
|
|
|
|
c.before(:each, :type => :integration) do
|
|
let(:report) { 'spec/report.txt' }
|
|
|
|
before do
|
|
FileUtils.rm_f report
|
|
end
|
|
|
|
after do
|
|
FileUtils.rm_f report
|
|
end
|
|
end
|
|
end
|
|
|
|
specrunner = 'ext/jasmine-webkit-specrunner/jasmine-webkit-specrunner'
|
|
|
|
if !File.file?(specrunner)
|
|
Dir.chdir File.split(specrunner).first do
|
|
system %{ruby extconf.rb}
|
|
end
|
|
end
|
|
|
|
class FakeFS::File
|
|
class << self
|
|
def fnmatch?(pattern, file)
|
|
RealFile.fnmatch?(pattern, file)
|
|
end
|
|
end
|
|
|
|
class Stat
|
|
def file?
|
|
File.file?(@file)
|
|
end
|
|
end
|
|
end
|
|
|
|
module RSpec::Matchers
|
|
define :be_a_report_containing do |total, failed, used_console|
|
|
match do |filename|
|
|
report(filename)
|
|
report.total.should == total
|
|
report.failed.should == failed
|
|
report.has_used_console?.should == used_console
|
|
true
|
|
end
|
|
|
|
failure_message_for_should do |filename|
|
|
"expected #{filename} to be a report containing (#{total}, #{failed}, #{used_console.inspect})"
|
|
end
|
|
|
|
def report(filename = nil)
|
|
@report ||= Jasmine::Headless::Report.load(filename)
|
|
end
|
|
end
|
|
|
|
define :contain_a_failing_spec do |*parts|
|
|
match do |filename|
|
|
report(filename).should have_failed_on(parts.join(" "))
|
|
end
|
|
|
|
def report(filename)
|
|
@report ||= Jasmine::Headless::Report.load(filename)
|
|
end
|
|
end
|
|
|
|
define :be_a_file do
|
|
match do |file|
|
|
File.file?(file)
|
|
end
|
|
end
|
|
|
|
define :contain_in_order_in_file_list do |*files|
|
|
match do |lines|
|
|
file_list = files.dup
|
|
|
|
lines.each do |line|
|
|
next if !file_list.first
|
|
|
|
if line[file_list.first]
|
|
file_list.shift
|
|
end
|
|
end
|
|
|
|
file_list.length == 0
|
|
end
|
|
|
|
failure_message_for_should do |lines|
|
|
%{expected\n#{lines.join("\n")}\nto contain the following files, in order:\n#{files.join("\n")}}
|
|
end
|
|
end
|
|
end
|
|
|