File: test_color_pattern.rb

package info (click to toggle)
ruby-logging 2.2.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 660 kB
  • sloc: ruby: 6,139; sh: 11; makefile: 2
file content (90 lines) | stat: -rw-r--r-- 3,401 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

require File.expand_path('../../setup', __FILE__)

module TestLogging
module TestLayouts

  class TestColorPattern < Test::Unit::TestCase
    include LoggingTestCase
    CS = ::Logging::ColorScheme

    def setup
      super

      ::Logging.color_scheme :levels, :levels => {
          :debug => :blue, :info => :green, :warn => :yellow, :error => :red, :fatal => :cyan
      }

      ::Logging.color_scheme :lines, :lines => {
          :debug => :blue, :info => :green, :warn => :yellow, :error => :red, :fatal => :cyan
      }, :date => :blue, :logger => :cyan

      ::Logging.color_scheme :tokens, :date => :blue, :logger => :green, :message => :magenta

      @levels = Logging::LEVELS
    end

    def test_level_coloring
      layout = Logging.layouts.pattern(:color_scheme => :levels)
      event = Logging::LogEvent.new('ArrayLogger', @levels['info'], 'log message', false)

      rgxp = Regexp.new(Regexp.escape("#{CS::GREEN}INFO #{CS::RESET}"))
      assert_match rgxp, layout.format(event)

      event.level = @levels['debug']
      rgxp = Regexp.new(Regexp.escape("#{CS::BLUE}DEBUG#{CS::RESET}"))
      assert_match rgxp, layout.format(event)

      event.level = @levels['error']
      rgxp = Regexp.new(Regexp.escape("#{CS::RED}ERROR#{CS::RESET}"))
      assert_match rgxp, layout.format(event)
    end

    def test_multiple_level_coloring
      layout = Logging.layouts.pattern(:pattern => '%.1l, %5l -- %c: %m\n', :color_scheme => :levels)
      event = Logging::LogEvent.new('ArrayLogger', @levels['info'], 'log message', false)

      rgxp = Regexp.new(Regexp.escape("#{CS::GREEN}I#{CS::RESET}, #{CS::GREEN} INFO#{CS::RESET}"))
      assert_match rgxp, layout.format(event)

      event.level = @levels['debug']
      rgxp = Regexp.new(Regexp.escape("#{CS::BLUE}D#{CS::RESET}, #{CS::BLUE}DEBUG#{CS::RESET}"))
      assert_match rgxp, layout.format(event)

      event.level = @levels['error']
      rgxp = Regexp.new(Regexp.escape("#{CS::RED}E#{CS::RESET}, #{CS::RED}ERROR#{CS::RESET}"))
      assert_match rgxp, layout.format(event)
    end

    def test_line_coloring
      layout = Logging.layouts.pattern(:color_scheme => :lines)
      event = Logging::LogEvent.new('ArrayLogger', @levels['info'], 'log message', false)

      rgxp = Regexp.new('^'+Regexp.escape(CS::GREEN)+'.*?'+Regexp.escape(CS::RESET)+'$', Regexp::MULTILINE)
      assert_match rgxp, layout.format(event)

      event.level = @levels['error']
      rgxp = Regexp.new('^'+Regexp.escape(CS::RED)+'.*?'+Regexp.escape(CS::RESET)+'$', Regexp::MULTILINE)
      assert_match rgxp, layout.format(event)

      event.level = @levels['warn']
      rgxp = Regexp.new('^'+Regexp.escape(CS::YELLOW)+'.*?'+Regexp.escape(CS::RESET)+'$', Regexp::MULTILINE)
      assert_match rgxp, layout.format(event)
    end

    def test_token_coloring
      layout = Logging.layouts.pattern(:color_scheme => :tokens)
      event = Logging::LogEvent.new('ArrayLogger', @levels['info'], 'log message', false)

      rgxp = Regexp.new(
        '^\['+Regexp.escape(CS::BLUE)+'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}'+Regexp.escape(CS::RESET)+
        '\] INFO  -- '+Regexp.escape(CS::GREEN)+'ArrayLogger'+Regexp.escape(CS::RESET)+
        ' : '+Regexp.escape(CS::MAGENTA)+'log message'+Regexp.escape(CS::RESET)
      )
      assert_match rgxp, layout.format(event)
    end

  end  # TestColorPattern
end  # TestLayouts
end  # TestLogging