Hi. Is it possible to get color text in less, more or other pagers while piping the color output of Cucumber and RSpec? If it''s not possible is there any other methods to work with the color text in a console without permanent ?rewinding? the output back to the beginning? Thanks. -- Posted via http://www.ruby-forum.com/.
P. A. <lists at ruby-forum.com> on 2009-12-02 at 09:08:> Is it possible to get color text in less, more or other pagers while > piping the color output of Cucumber and RSpec?Have a look at these options for `less`:>From LESS(1) man page: > -r or --raw-control-chars > > Causes "raw" control characters to be displayed. The default is to > display control characters using the caret notation; for example, a > control-A (octal 001) is displayed as "^A". Warning: when the -r > option is used, less cannot keep track of the actual appearance of > the screen (since this depends on how the screen responds to each > type of control character). Thus, various display problems may > result, such as long lines being split in the wrong place. > > -R or --RAW-CONTROL-CHARS > > Like -r, but only ANSI "color" escape sequences are output in > "raw" form. Unlike -r, the screen appearance is maintained correctly > in most cases.You can set default options for less to use via the LESS evironment variable. As an example, here is the value of mine: $ echo $LESS -X -e -R Cheers, Paul
I''ve known about the -R option but it doesn''t work for me. $ cucumber #=> color output $ cucumber | less -R #=> monochrome $ spec -c <path/to/spec> #=> color output $ spec -c <path/to/spec> | less -R #=> monochrome but $ ls --color=always | less -R #=> color output It seems that your system has addition preferences that enables you to pipe the color tags in output to less. Could you tell me how did you achive it? -- Posted via http://www.ruby-forum.com/.
I solve it by myself. To enable piping color output in Cucumber it needs to run the cucumber command with the -c option. $ cucumber -c | less #=> color output To enable piping color output in RSpec it needs to set the RSPEC_COLOR environment variable to true. $ export RSPEC_COLOR=true $ spec path/to/spec | less #=> color output However, if RSPEC_COLOR is set to true the output to a file will include color tags. To prevent it, it needs to unset RSPEC_COLOR. $ unset RSPEC_COLOR $ spec path/to/spec > file #=> no color tags Cheers! -- Posted via http://www.ruby-forum.com/.
P. A. <lists at ruby-forum.com> on 2009-12-02 at 10:13:> $ cucumber #=> color output > $ cucumber | less -R #=> monochromeAh now I see what you''re saying. We''re getting burned by this line: http://github.com/aslakhellesoy/cucumber/blob/master/lib/cucumber/formatter/ansicolor.rb#L20> Term::ANSIColor.coloring = false if !STDOUT.tty? and not ENV.has_key?("AUTOTEST")So, we can either feature request an override variable for this line, or perhaps there is a way to trick a program that STDOUT is actually a tty...? Paul