Color support for Ruby Koans

This commit is contained in:
Rene Mendoza
2010-08-26 20:01:37 -05:00
committed by Jim Weirich
parent 06c47eb284
commit 1f6c0e03a5
3 changed files with 17 additions and 47 deletions

View File

@@ -1,3 +0,0 @@
Autotest.add_discovery do
"rubykoan" if File.exist? 'path_to_enlightenment.rb'
end

View File

@@ -1,24 +0,0 @@
require 'autotest'
class Autotest::Rubykoan < Autotest
def initialize
super
@exceptions = /\.txt|Rakefile|\.rdoc/
self.order = :alpha
self.add_mapping(/^about_.*rb$/) do |filename, _|
filename
end
end
def make_test_cmd files_to_test
"#{ruby} 'path_to_enlightenment.rb'"
end
# quiet test/unit chatter
def handle_results(results)
end
end

View File

@@ -43,7 +43,6 @@ class Object
end end
module EdgeCase module EdgeCase
module Color module Color
#shamelessly stolen (and modified) from redgreen #shamelessly stolen (and modified) from redgreen
COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33, :blue => 34, :magenta => 35, :cyan => 36 } COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33, :blue => 34, :magenta => 35, :cyan => 36 }
@@ -89,9 +88,9 @@ module EdgeCase
def accumulate(test) def accumulate(test)
if test.passed? if test.passed?
@pass_count += 1 @pass_count += 1
puts Color.green(" #{test.name} has expanded your awareness.") puts " #{test.name} has expanded your awareness."
else else
puts Color.red(" #{test.name} has damaged your karma.") puts " #{test.name} has damaged your karma."
@failed_test = test @failed_test = test
@failure = test.failure @failure = test.failure
throw :edgecase_exit throw :edgecase_exit
@@ -109,19 +108,18 @@ module EdgeCase
def report def report
if failed? if failed?
puts puts
puts Color.green("You have not yet reached enlightenment ...") puts "You have not yet reached enlightenment ..."
puts Color.red(failure.message) puts failure.message
puts puts
puts Color.green("Please meditate on the following code:") puts "Please meditate on the following code:"
if assert_failed? if assert_failed?
#puts find_interesting_lines(failure.backtrace) puts find_interesting_lines(failure.backtrace)
puts find_interesting_lines(failure.backtrace).collect {|l| Color.red(l) }
else else
puts Color.red(failure.backtrace) puts failure.backtrace
end end
puts puts
end end
puts Color.green(say_something_zenlike) say_something_zenlike
end end
def find_interesting_lines(backtrace) def find_interesting_lines(backtrace)
@@ -135,24 +133,23 @@ module EdgeCase
def say_something_zenlike def say_something_zenlike
puts puts
if !failed? if !failed?
zen_statement = "Mountains are again merely mountains" puts "Mountains are again merely mountains"
else else
zen_statement = case (@pass_count % 10) case (@pass_count % 10)
when 0 when 0
"mountains are merely mountains" puts "mountains are merely mountains"
when 1, 2 when 1, 2
"learn the rules so you know how to break them properly" puts "learn the rules so you know how to break them properly"
when 3, 4 when 3, 4
"remember that silence is sometimes the best answer" puts "remember that silence is sometimes the best answer"
when 5, 6 when 5, 6
"sleep is the best meditation" puts "sleep is the best meditation"
when 7, 8 when 7, 8
"when you lose, don't lose the lesson" puts "when you lose, don't lose the lesson"
else else
"things are not what they appear to be: nor are they otherwise" puts "things are not what they appear to be: nor are they otherwise"
end end
end end
zen_statement
end end
end end
@@ -192,7 +189,7 @@ module EdgeCase
def run_tests(accumulator) def run_tests(accumulator)
puts puts
puts Color.green("Thinking #{self}") puts "Thinking #{self}"
testmethods.each do |m| testmethods.each do |m|
self.run_test(m, accumulator) if Koan.test_pattern =~ m.to_s self.run_test(m, accumulator) if Koan.test_pattern =~ m.to_s
end end