Class: Autotest::Screen

Inherits:
Object
  • Object
show all
Defined in:
lib/autotest/screen.rb

Overview

Autotest::Screen shows autotest/autospec progress on GNU Screen’s status line.

FEATURES:

  • Screenshots are available in here.

SYNOPSIS

$HOME/.autotest

require 'autotest/screen'
# Autotest::Screen.statusline = '%H %`%-w%{=b bw}%n %t%{-}%+w (your statusline)'

Constant Summary collapse

VERSION =
'4.0.2'
DEFAULT_STATUSLINE =
'%H %`%-w%{=b bw}%n %t%{-}%+w'
DEFAULT_SCREEN_CMD =
'screen'
SCREEN_COLOR =
{
  :black  => 'dd',
  :green  => 'gw',
  :yellow => 'yk',
  :red    => 'rw'
}

Class Method Summary collapse

Class Method Details

.clearObject



35
36
37
# File 'lib/autotest/screen.rb', line 35

def self.clear
  send_cmd('')
end

.execute?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/autotest/screen.rb', line 44

def self.execute?
  !($TESTING || !run_screen_session?)
end

.message(msg, color = :black) ⇒ Object



29
30
31
32
33
# File 'lib/autotest/screen.rb', line 29

def self.message(msg, color = :black)
  col = SCREEN_COLOR[color]
  msg = %Q[ %{=b #{col}} #{msg} %{-}]
  send_cmd(msg)
end

.run_screen_session?Boolean

Returns:

  • (Boolean)


39
40
41
42
# File 'lib/autotest/screen.rb', line 39

def self.run_screen_session?
  str = `#{screen_cmd} -ls`
  str.match(/(\d+) Socket/) && ($1.to_i > 0)
end

.screen_cmdObject



51
# File 'lib/autotest/screen.rb', line 51

def self.screen_cmd; @screen_cmd || DEFAULT_SCREEN_CMD.dup; end

.screen_cmd=(a) ⇒ Object



52
# File 'lib/autotest/screen.rb', line 52

def self.screen_cmd=(a); @screen_cmd = a; end

.send_cmd(msg) ⇒ Object



54
55
56
57
58
# File 'lib/autotest/screen.rb', line 54

def self.send_cmd(msg)
  cmd = %(#{screen_cmd} -X eval 'hardstatus alwayslastline "#{(statusline + msg).gsub('"', '\"')}"') #' stupid ruby-mode
  system cmd
  nil
end

.statuslineObject



49
# File 'lib/autotest/screen.rb', line 49

def self.statusline; @statusline || DEFAULT_STATUSLINE.dup; end

.statusline=(a) ⇒ Object



50
# File 'lib/autotest/screen.rb', line 50

def self.statusline=(a); @statusline = a; end