types.cr
1 class Coffeeshop < Barista::Project; end 2 3 module Barista::Registerable; end 4 struct MockTask 5 include Barista::Registerable 6 getter :name, :value, :dependencies 7 def initialize(@name : String, @value : String, @dependencies : Array(Barista::Registerable) = [] of Barista::Registerable); end 8 end 9 10 module WithHelpers 11 def with_graph(*, nodes = [] of Symbol, edges = [] of Tuple(Symbol, Symbol), &block : ->) 12 graph = Barista::Graph.new 13 nodes.each do |node| 14 graph.add(node) 15 end 16 17 edges.each do |tuple| 18 graph.add_edge(tuple[0], tuple[1]) 19 end 20 21 yield graph 22 end 23 24 def wait_for(duration : Int32 = 5, *, interval : Float64 = 0.5, &block : -> Bool) 25 time = Time.local 26 while (Time.local - time).seconds < duration 27 begin 28 result = yield 29 return if result 30 sleep interval 31 rescue ex : Exception 32 sleep interval 33 end 34 end 35 raise Exception.new("timed out after #{duration}") 36 end 37 38 def io 39 io = IO::Memory.new 40 multi = IO::MultiWriter.new(io, STDOUT) 41 { io, multi } 42 end 43 44 def with_io 45 io, multi = io 46 Barista::Log.backend(Log::IOBackend.new(multi)) 47 yield(io) 48 ensure 49 Barista::Log.backend(Log::IOBackend.new(STDOUT)) 50 end 51 52 def with_packager(packager) 53 yield packager 54 ensure 55 packager.cleanup 56 end 57 end