module TapTap module Simple Counter = {:Run => 0} def plan(n) puts "1..#{n.to_i}" end def ok(passed, desc=nil, errmsg=nil) Counter[:Run] += 1 testing desc do desc = (Thread.current[:taptap_prefix] || []).join(" - ") desc = " - " + desc unless desc.empty? if passed printf "ok %d%s\n" % [Counter[:Run], desc] else printf "not ok %d%s - %s\n" % [Counter[:Run], desc, caller.find { |pos| pos !~ /taptap/ }] printf "# %s" % [errmsg] if errmsg end end passed end def testing(desc, &block) (Thread.current[:taptap_prefix] ||= []) << desc if desc yield rescue => e ok false, "RAISED: #{e}" puts "# ", e.backtrace.join("\n# ") ensure Thread.current[:taptap_prefix].pop if desc end end end