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?