# Author:: Vincent CUISSARD . # Copyright:: Copyright (c) 2005 Uttk Team. All rights reserved. # License:: LGPL # $Id: /fey/uttk/trunk/lib/uttk/strategies/SignalCmd.rb 8789 2005-09-27T14:49:49.088376Z ertai $ module Uttk module Strategies class SignalCmd < Cmd include Concrete @@signal_names = nil # # Methods # def run_impl super # Check if command has exited normaly case when @my_status.exited? # Process run successfully @my_signaled = false when @my_status.signaled? # Process was signaled @my_signaled = true @my_exit = 128 + @my_status.termsig else # Problem on process fail('process may be ill') end end protected :run_impl def assertion case when (@my_signaled and not @signaled) fail("command was signaled by #{SignalCmd.signal_name(@my_exit)}") when (not @my_signaled and @signaled) fail("command wasn't signaled by #@signal") when (@my_signaled == @signaled and @signaled) sig_name = SignalCmd.signal_name(@my_exit) unless sig_name == signal err = "command signaled by #{sig_name}, " err << "must be signaled by #@signal" fail(err) end end super end protected :assertion def SignalCmd.signal_name ( status ) signal = status - 128 if @@signal_names.nil? @@signal_names = { } Signal.list.each do |key, value| @@signal_names[value] = key end end @@signal_names[signal] end def signal= ( signal_name ) @signal = signal_name @signaled = true end # # Attributes # attribute :signal, 'the signal name', nil attribute :signaled, 'process must be signaled', false end # class SignalCmd end # module Strategies end # module Uttk