Module: Cucumber::Formatter::ANSIColor

Includes:
Term::ANSIColor
Included in:
Console
Defined in:
lib/cucumber/formatter/ansicolor.rb

Overview

Defines aliases for coloured output. You don’t invoke any methods from this module directly, but you can change the output colours by defining a CUCUMBER_COLORS variable in your shell, very much like how you can tweak the familiar POSIX command ls with <a href=“mipsisrisc.com/rambling/2008/06/27/lscolorsls_colors-now-with-linux-support/”>$LSCOLORS/$LS_COLORS</a>

The colours that you can change are:

  • undefined - defaults to yellow

  • pending - defaults to yellow

  • pending_param - defaults to yellow,bold

  • failed - defaults to red

  • failed_param - defaults to red,bold

  • passed - defaults to green

  • passed_param - defaults to green,bold

  • outline - defaults to cyan

  • outline_param - defaults to cyan,bold

  • skipped - defaults to cyan

  • skipped_param - defaults to cyan,bold

  • comment - defaults to grey

  • tag - defaults to cyan

For instance, if your shell has a black background and a green font (like the “Homebrew” settings for OS X’ Terminal.app), you may want to override passed steps to be white instead of green. Examples:

export CUCUMBER_COLORS="passed=white"
export CUCUMBER_COLORS="passed=white,bold:passed_param=white,bold,underline"

(If you’re on Windows, use SET instead of export). To see what colours and effects are available, just run this in your shell:

ruby -e "require 'rubygems'; require 'term/ansicolor'; puts Term::ANSIColor.attributes"

Although not listed, you can also use grey

Constant Summary collapse

ALIASES =
Hash.new do |h,k|
  if k.to_s =~ /(.*)_param/
    h[$1] + ',bold'
  end
end.merge({
  'undefined' => 'yellow',
  'pending'   => 'yellow',
  'failed'    => 'red',
  'passed'    => 'green',
  'outline'   => 'cyan',
  'skipped'   => 'cyan',
  'comment'   => 'grey',
  'tag'       => 'cyan'
})

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.define_greyObject

:nodoc:



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/cucumber/formatter/ansicolor.rb', line 100

def self.define_grey #:nodoc:
  begin
    gem 'genki-ruby-terminfo'
    require 'terminfo'
    case TermInfo.default_object.tigetnum("colors")
    when 0
      raise "Your terminal doesn't support colours"
    when 1
      ::Term::ANSIColor.coloring = false
      alias grey white
    when 2..8
      alias grey white
    else
      define_real_grey
    end
  rescue Exception => e
    if e.class.name == 'TermInfo::TermInfoError'
      STDERR.puts "*** WARNING ***"
      STDERR.puts "You have the genki-ruby-terminfo gem installed, but you haven't set your TERM variable."
      STDERR.puts "Try setting it to TERM=xterm-256color to get grey colour in output"
      STDERR.puts "\n"
      alias grey white
    else
      define_real_grey
    end
  end
end

.define_real_greyObject

:nodoc:



128
129
130
131
132
133
134
135
136
# File 'lib/cucumber/formatter/ansicolor.rb', line 128

def self.define_real_grey #:nodoc:
  def grey(m) #:nodoc:
    if ::Term::ANSIColor.coloring?
      "\e[90m#{m}\e[0m"
    else
      m
    end
  end
end

Instance Method Details

#cukes(n) ⇒ Object



140
141
142
# File 'lib/cucumber/formatter/ansicolor.rb', line 140

def cukes(n)
  ("(::) " * n).strip
end

#green_cukes(n) ⇒ Object



144
145
146
# File 'lib/cucumber/formatter/ansicolor.rb', line 144

def green_cukes(n)
  blink(green(cukes(n)))
end

#grey(m) ⇒ Object

:nodoc:



129
130
131
132
133
134
135
# File 'lib/cucumber/formatter/ansicolor.rb', line 129

def grey(m) #:nodoc:
  if ::Term::ANSIColor.coloring?
    "\e[90m#{m}\e[0m"
  else
    m
  end
end

#red_cukes(n) ⇒ Object



148
149
150
# File 'lib/cucumber/formatter/ansicolor.rb', line 148

def red_cukes(n)
  blink(red(cukes(n)))
end

#yellow_cukes(n) ⇒ Object



152
153
154
# File 'lib/cucumber/formatter/ansicolor.rb', line 152

def yellow_cukes(n)
  blink(yellow(cukes(n)))
end