spec/watchr.rb in revenc-0.1.3 vs spec/watchr.rb in revenc-0.2.1
- old
+ new
@@ -5,13 +5,24 @@
# Run me with:
#
# $ watchr spec/watchr.rb
require 'term/ansicolor'
+require 'rbconfig'
-$c = Term::ANSIColor
+WINDOWS = Config::CONFIG['host_os'] =~ /mswin|mingw/i unless defined?(WINDOWS)
+require 'win32/process' if WINDOWS
+if WINDOWS
+ begin
+ require 'Win32/Console/ANSI'
+ $c = Term::ANSIColor
+ rescue LoadError
+ STDERR.puts 'WARNING: You must "gem install win32console" (1.2.0 or higher) to get color output on MRI/Windows'
+ end
+end
+
def getch
state = `stty -g`
begin
`stty raw -echo cbreak`
$stdin.getc
@@ -31,20 +42,28 @@
files = Dir['spec/**/*_spec\.rb']
end
def run(cmd)
+ cmd = 'bundle exec ' + cmd unless cmd.match(/^bundle exec/)
+
pid = fork do
+
puts "\n"
- print $c.cyan, cmd, $c.clear, "\n"
+ if $c
+ print $c.cyan, cmd, $c.clear, "\n"
+ else
+ puts cmd
+ end
+
exec(cmd)
end
Signal.trap('INT') do
puts "sending KILL to pid: #{pid}"
Process.kill("KILL", pid)
end
- Process.waitpid(pid)
+ Process.waitpid(pid) if (pid > 0)
prompt
end
def run_all
@@ -72,32 +91,34 @@
def run_last_feature
run_feature($last_feature) if $last_feature
end
def run_default_spec
- cmd = "spec --color --format s ./spec"
+ cmd = "spec _1.3.1_ --color --format s ./spec"
run(cmd)
end
def run_all_specs
- cmd = "spec --color --format s #{all_spec_files.join(' ')}"
- p cmd
+ cmd = "spec _1.3.1_ --color --format s #{all_spec_files.join(' ')}"
run(cmd)
end
def run_spec(spec)
- cmd = "spec --color --format s #{spec}"
+ cmd = "spec _1.3.1_ --color --format s #{spec}"
$last_spec = spec
run(cmd)
end
def run_last_spec
run_spec($last_spec) if $last_spec
end
def prompt
- puts "Ctrl-\\ for menu, Ctrl-C to quit"
+ menu = "Ctrl-C to quit"
+ menu = menu + ", Ctrl-\\ for menu" if Signal.list.include?('QUIT')
+
+ puts menu
end
# init
$last_feature = nil
prompt
@@ -119,27 +140,28 @@
watch( '^lib/revenc.rb' ) { run_default_spec }
watch( '^lib/errors.rb' ) { run_default_spec }
watch( '^lib/io.rb' ) { run_default_spec }
# --------------------------------------------------
-# Signal Handling
+# Signal Handling (May not be supported on Windows)
# --------------------------------------------------
+if Signal.list.include?('QUIT')
+ # Ctrl-\
+ Signal.trap('QUIT') do
-# Ctrl-\
-Signal.trap('QUIT') do
+ puts "\n\nMENU: a = all , f = features s = specs, l = last feature (#{$last_feature ? $last_feature : 'none'}), q = quit\n\n"
+ c = getch
+ puts c.chr
+ if c.chr == "a"
+ run_all
+ elsif c.chr == "f"
+ run_default_cucumber
+ elsif c.chr == "s"
+ run_all_specs
+ elsif c.chr == "q"
+ abort("exiting\n")
+ elsif c.chr == "l"
+ run_last_feature
+ end
- puts "\n\nMENU: a = all , f = features s = specs, l = last feature (#{$last_feature ? $last_feature : 'none'}), q = quit\n\n"
- c = getch
- puts c.chr
- if c.chr == "a"
- run_all
- elsif c.chr == "f"
- run_default_cucumber
- elsif c.chr == "s"
- run_all_specs
- elsif c.chr == "q"
- abort("exiting\n")
- elsif c.chr == "l"
- run_last_feature
end
-
end