lib/ttk/strategies/SubCmd.rb in ttk-0.1.580 vs lib/ttk/strategies/SubCmd.rb in ttk-0.2.0

- old
+ new

@@ -1,38 +1,54 @@ # Author:: Nicolas Pouillard <ertai@lrde.epita.fr>. # Copyright:: Copyright (c) 2004, 2005 TTK team. All rights reserved. # License:: LGPL -# $Id: SubCmd.rb 578 2005-04-14 20:46:09Z ertai $ +# $Id: SubCmd.rb 607 2005-06-05 17:02:43Z ertai $ module TTK module Strategies class SubCmd < CmdBase include Concrete def prologue - @command = ABS_ME + @command = @symtbl[:ttk] + @dir = @symtbl[:pwd] super end protected :prologue def run_impl super - raise_error "bad exit status #@my_exit" unless @my_exit.zero? raise_error 'no ttk output' unless @output.my.exist? - stream = YAML::load_stream(@output.my.read) - raise_error 'bad ttk output' if stream.nil? - doc, @status = stream[0], stream[1] - raise_error 'bad doc output' unless doc.is_a? Filters::Saver - raise_error 'bad status output' unless @status.is_a? Status - doc.repeat(@log) -# raise_error 'ttk stderr not empty' unless @error.my.zero? + status = nil + @output.my.open do |out| + YAML::each_document(out) do |notification| + case notification + when Array + @log.send(*notification) + when Status + status = notification + else + raise_error 'bad sub commad output' if stream.nil? + end + end + end + raise_error 'bad status output' unless status.is_a? Status + raise_error 'ttk stderr not empty' unless @error.my.zero? + @status = status raise_status @status end protected :run_impl + + + def assertion + raise_error "bad exit status #@my_exit" unless [0, 2].include? @my_exit + super + end + protected :assertion def error_hook @log.my_stdout = @output.my.read if @output and @output.my.exist? @log.my_stderr = @error.my.read if @error and @error.my.exist?