rtomayko/tilt — pull request #142 by thinkerbot (2012-03-09 21:19:56+00:00)
Title: Run tests with warnings

Doing so is a good practice. In the case of tilt, it's also a PITA because so many of the template gems generate warnings. It's possible to filter them in 1.8.7 using the module below... but I couldn't get it to work on 1.9.2 (I'm not sure why). At any rate this pull request fixes a few warnings in tilt itself. I split it into one commit that turns on the warnings and one that fixes them in case you want to cherry-pick.

**WarnFilter** Add to test folder and require in test/contest to enable.

# Filter warnings from vendored gems. Must be included before the filtered
# code is required (obviously).
#
# WarnFilter can be turned off by specifying ENV['WARN_FILTER'] = 'false'.
module WarnFilter
FILTER_PATHS = [File.expand_path('../../vendor', __FILE__), 'test.haml', '(__TEMPLATE__)']
@@count = 0

# A running tally of warnings that have been filtered.
def self.count
@@count
end

# Writes the message unless it begins with one of the FILTER_PATHS, in
# which case the message is interpreted as a warning. In that case
# count is incremented and the message is ignored.
def write(message)
FILTER_PATHS.any? {|path| message.index(path) == 0 } ? @@count += 1 : super
end
end

unless ENV['WARN_FILTER'] == 'false'
$stderr.extend(WarnFilter)
at_exit do
if WarnFilter.count > 0
$stderr.puts "(WarnFilter filtered #{WarnFilter.count} warnings, set WARN_FILTER=false in ENV to see warnings)"
end
end
end