mirror of
https://github.com/edgecase/ruby_koans.git
synced 2026-04-15 07:23:19 -04:00
Updated koan directory from src.
This commit is contained in:
3
koans/autotest/discover.rb
Normal file
3
koans/autotest/discover.rb
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Autotest.add_discovery do
|
||||||
|
"rubykoan" if File.exist? 'path_to_enlightenment.rb'
|
||||||
|
end
|
||||||
24
koans/autotest/rubykoan.rb
Normal file
24
koans/autotest/rubykoan.rb
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
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
|
||||||
|
|
||||||
@@ -43,15 +43,23 @@ 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, :black => 30, :red => 31,
|
||||||
|
:green => 32, :yellow => 33, :blue => 34,
|
||||||
|
:magenta => 35, :cyan => 36,
|
||||||
|
}
|
||||||
|
|
||||||
|
module_function
|
||||||
|
|
||||||
COLORS.each do |color, value|
|
COLORS.each do |color, value|
|
||||||
class_eval "def self.#{color}(string); colorize(string, #{value}); end"
|
module_eval "def #{color}(string); colorize(string, #{value}); end"
|
||||||
|
module_function color
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.colorize(string, color_value)
|
def colorize(string, color_value)
|
||||||
if ENV['NO_COLOR']
|
if ENV['NO_COLOR']
|
||||||
string
|
string
|
||||||
else
|
else
|
||||||
@@ -59,7 +67,7 @@ module EdgeCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.color(color_value)
|
def color(color_value)
|
||||||
"\e[#{color_value}m"
|
"\e[#{color_value}m"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -88,9 +96,9 @@ module EdgeCase
|
|||||||
def accumulate(test)
|
def accumulate(test)
|
||||||
if test.passed?
|
if test.passed?
|
||||||
@pass_count += 1
|
@pass_count += 1
|
||||||
puts " #{test.name} has expanded your awareness."
|
puts Color.green(" #{test.name} has expanded your awareness.")
|
||||||
else
|
else
|
||||||
puts " #{test.name} has damaged your karma."
|
puts Color.red(" #{test.name} has damaged your karma.")
|
||||||
@failed_test = test
|
@failed_test = test
|
||||||
@failure = test.failure
|
@failure = test.failure
|
||||||
throw :edgecase_exit
|
throw :edgecase_exit
|
||||||
@@ -108,18 +116,19 @@ module EdgeCase
|
|||||||
def report
|
def report
|
||||||
if failed?
|
if failed?
|
||||||
puts
|
puts
|
||||||
puts "You have not yet reached enlightenment ..."
|
puts Color.green("You have not yet reached enlightenment ...")
|
||||||
puts failure.message
|
puts Color.red(failure.message)
|
||||||
puts
|
puts
|
||||||
puts "Please meditate on the following code:"
|
puts Color.green("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 failure.backtrace
|
puts Color.red(failure.backtrace)
|
||||||
end
|
end
|
||||||
puts
|
puts
|
||||||
end
|
end
|
||||||
say_something_zenlike
|
puts Color.green(a_zenlike_statement)
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_interesting_lines(backtrace)
|
def find_interesting_lines(backtrace)
|
||||||
@@ -130,26 +139,27 @@ module EdgeCase
|
|||||||
|
|
||||||
# Hat's tip to Ara T. Howard for the zen statements from his
|
# Hat's tip to Ara T. Howard for the zen statements from his
|
||||||
# metakoans Ruby Quiz (http://rubyquiz.com/quiz67.html)
|
# metakoans Ruby Quiz (http://rubyquiz.com/quiz67.html)
|
||||||
def say_something_zenlike
|
def a_zenlike_statement
|
||||||
puts
|
puts
|
||||||
if !failed?
|
if !failed?
|
||||||
puts "Mountains are again merely mountains"
|
zen_statement = "Mountains are again merely mountains"
|
||||||
else
|
else
|
||||||
case (@pass_count % 10)
|
zen_statement = case (@pass_count % 10)
|
||||||
when 0
|
when 0
|
||||||
puts "mountains are merely mountains"
|
"mountains are merely mountains"
|
||||||
when 1, 2
|
when 1, 2
|
||||||
puts "learn the rules so you know how to break them properly"
|
"learn the rules so you know how to break them properly"
|
||||||
when 3, 4
|
when 3, 4
|
||||||
puts "remember that silence is sometimes the best answer"
|
"remember that silence is sometimes the best answer"
|
||||||
when 5, 6
|
when 5, 6
|
||||||
puts "sleep is the best meditation"
|
"sleep is the best meditation"
|
||||||
when 7, 8
|
when 7, 8
|
||||||
puts "when you lose, don't lose the lesson"
|
"when you lose, don't lose the lesson"
|
||||||
else
|
else
|
||||||
puts "things are not what they appear to be: nor are they otherwise"
|
"things are not what they appear to be: nor are they otherwise"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
zen_statement
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -189,7 +199,7 @@ module EdgeCase
|
|||||||
|
|
||||||
def run_tests(accumulator)
|
def run_tests(accumulator)
|
||||||
puts
|
puts
|
||||||
puts "Thinking #{self}"
|
puts Color.green("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
|
||||||
|
|||||||
Reference in New Issue
Block a user