Skip to content

Commit

Permalink
Make test logs easier to read.
Browse files Browse the repository at this point in the history
Tagging every message in tests makes the logs really wide. It's great
for grepping, but annoying to open in an editor or a narrow terminal.
Try out a different approach: spit out a heading before each test.
  • Loading branch information
jeremy committed Dec 27, 2012
1 parent 42d9b48 commit b821094
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 13 deletions.
21 changes: 10 additions & 11 deletions activesupport/lib/active_support/testing/tagged_logging.rb
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
module ActiveSupport
module Testing
module TaggedLogging
# Logs a "PostsControllerTest: test name" heading before each test to
# make test.log easier to search and follow along with.
module TaggedLogging #:nodoc:
attr_writer :tagged_logger

def before_setup
tagged_logger.push_tags(self.class.name, __name__) if tagged_logging?
super
end

def after_teardown
if tagged_logger
heading = "#{self.class}: #{__name__}"
divider = '-' * heading.size
tagged_logger.info divider
tagged_logger.info heading
tagged_logger.info divider
end
super
tagged_logger.pop_tags(2) if tagged_logging?
end

private
def tagged_logger
@tagged_logger ||= (defined?(Rails.logger) && Rails.logger)
end

def tagged_logging?
tagged_logger && tagged_logger.respond_to?(:push_tags)
end
end
end
end
3 changes: 1 addition & 2 deletions activesupport/test/test_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,6 @@ def before_setup
end

def test_logs_tagged_with_current_test_case
tagged_logger.info 'test'
assert_equal "[#{self.class.name}] [#{__name__}] test\n", @out.string
assert_match "#{self.class}: #{__name__}\n", @out.string
end
end

0 comments on commit b821094

Please sign in to comment.