adding fix for phantomjs errors on mavericks *crossing fingers*

This commit is contained in:
Mike McCabe
2013-11-12 14:21:32 -05:00
parent 9f34e4fa37
commit f8fbc93c75
+50 -12
View File
@@ -13,20 +13,20 @@ def verifying_fixed?
if !@@displayed_spec_notice && result if !@@displayed_spec_notice && result
puts <<-NOTICE puts <<-NOTICE
****************************************************************************** ******************************************************************************
You are running the RailsGoat Capybara Specs in Training mode. These specs You are running the RailsGoat Capybara Specs in Training mode. These specs
are supposed to fail, indicating vulnerabilities exist. They contain are supposed to fail, indicating vulnerabilities exist. They contain
spoilers, so do not read the code in spec/vulnerabilities if your goal is to spoilers, so do not read the code in spec/vulnerabilities if your goal is to
learn more about patching the vulnerabilities. You should fix the learn more about patching the vulnerabilities. You should fix the
vulnerabilities in the application in order to get these specs to pass**. vulnerabilities in the application in order to get these specs to pass**.
You can use them to measure your progress. You can use them to measure your progress.
These same specs will pass if you set the #{maintainer_env_name} ENV These same specs will pass if you set the #{maintainer_env_name} ENV
variable. variable.
**NOTE: The RSpec pending feature is used to toggle the outcome of these **NOTE: The RSpec pending feature is used to toggle the outcome of these
specs between Training mode and RailsGoat Maintainer mode, so when the specs between Training mode and RailsGoat Maintainer mode, so when the
vulnerabilities are removed, these specs actually won't 'pass' but go into vulnerabilities are removed, these specs actually won't 'pass' but go into
a 'pending' state. a 'pending' state.
****************************************************************************** ******************************************************************************
NOTICE NOTICE
@@ -43,3 +43,41 @@ def login(user)
end end
click_on 'Login' click_on 'Login'
end end
##Hack to fix PhantomJS errors on Mavericks - https://gist.github.com/ericboehs/7125105
module Capybara::Poltergeist
class Client
private
def redirect_stdout
prev = STDOUT.dup
prev.autoclose = false
$stdout = @write_io
STDOUT.reopen(@write_io)
prev = STDERR.dup
prev.autoclose = false
$stderr = @write_io
STDERR.reopen(@write_io)
yield
ensure
STDOUT.reopen(prev)
$stdout = STDOUT
STDERR.reopen(prev)
$stderr = STDERR
end
end
end
class WarningSuppressor
class << self
def write(message)
if message =~ /QFont::setPixelSize: Pixel size <= 0/ || message =~/CoreText performance note:/ || message =~/Method userSpaceScaleFactor in class NSView/ then 0 else puts(message);1;end
end
end
end
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, phantomjs_logger: WarningSuppressor)
end
Capybara.javascript_driver = :poltergeist