[前][次][番号順一覧][スレッド一覧]

ruby-changes:5212

From: mame <ko1@a...>
Date: Fri, 30 May 2008 22:42:35 +0900 (JST)
Subject: [ruby-changes:5212] Ruby:r16707 (trunk): * test/ruby/test_signal.rb: add tests to achieve over 80% test

mame	2008-05-30 22:42:23 +0900 (Fri, 30 May 2008)

  New Revision: 16707

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_signal.rb

  Log:
    * test/ruby/test_signal.rb: add tests to achieve over 80% test
      coverage of signal.c.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16707&r2=16706&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_signal.rb?r1=16707&r2=16706&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 16706)
+++ ChangeLog	(revision 16707)
@@ -1,3 +1,8 @@
+Fri May 30 22:40:53 2008  Yusuke Endoh  <mame@t...>
+
+	* test/ruby/test_signal.rb: add tests to achieve over 80% test
+	  coverage of signal.c.
+
 Fri May 30 22:28:03 2008  Yusuke Endoh  <mame@t...>
 
 	* signal.c (esignal_signo): fix SignalException#signo which returned
Index: test/ruby/test_signal.rb
===================================================================
--- test/ruby/test_signal.rb	(revision 16706)
+++ test/ruby/test_signal.rb	(revision 16707)
@@ -64,4 +64,103 @@
       w0.close
     end
   end
+
+  def test_invalid_signal_name
+    return unless Process.respond_to?(:kill)
+
+    assert_raise(ArgumentError) { Process.kill(:XXXXXXXXXX, $$) }
+  end
+
+  def test_signal_exception
+    assert_raise(ArgumentError) { SignalException.new }
+    assert_raise(ArgumentError) { SignalException.new(-1) }
+    assert_raise(ArgumentError) { SignalException.new(:XXXXXXXXXX) }
+    Signal.list.each do |signm, signo|
+      next if signm == "EXIT"
+      assert_equal(SignalException.new(signm).signo, signo)
+      assert_equal(SignalException.new(signm.to_sym).signo, signo)
+      assert_equal(SignalException.new(signo).signo, signo)
+    end
+  end
+
+  def test_interrupt
+    assert_raise(Interrupt) { raise Interrupt.new }
+  end
+
+  def test_signal2
+    return unless Process.respond_to?(:kill)
+    begin
+      x = false
+      oldtrap = Signal.trap(:INT) {|sig| x = true }
+      GC.start
+
+      assert_raise(ArgumentError) { Process.kill }
+
+      Timeout.timeout(10) do
+        x = false
+        Process.kill(SignalException.new(:INT).signo, $$)
+        nil until x
+
+        x = false
+        Process.kill("INT", $$)
+        nil until x
+
+        x = false
+        Process.kill("SIGINT", $$)
+        nil until x
+
+        x = false
+        o = Object.new
+        def o.to_str; "SIGINT"; end
+        Process.kill(o, $$)
+        nil until x
+      end
+
+      assert_raise(ArgumentError) { Process.kill(Object.new, $$) }
+
+    ensure
+      Signal.trap(:INT, oldtrap) if oldtrap
+    end
+  end
+
+  def test_trap
+    return unless Process.respond_to?(:kill)
+    begin
+      oldtrap = Signal.trap(:INT) {|sig| }
+
+      assert_raise(ArgumentError) { Signal.trap }
+
+      assert_raise(SecurityError) do
+        s = proc {}.taint
+        Signal.trap(:INT, s)
+      end
+
+      # FIXME!
+      Signal.trap(:INT, nil)
+      Signal.trap(:INT, "")
+      Signal.trap(:INT, "SIG_IGN")
+      Signal.trap(:INT, "IGNORE")
+
+      Signal.trap(:INT, "SIG_DFL")
+      Signal.trap(:INT, "SYSTEM_DEFAULT")
+
+      Signal.trap(:INT, "EXIT")
+
+      assert_raise(ArgumentError) { Signal.trap(:INT, "xxxxxx") }
+      assert_raise(ArgumentError) { Signal.trap(:INT, "xxxx") }
+
+      Signal.trap(SignalException.new(:INT).signo, "SIG_DFL")
+
+      assert_raise(ArgumentError) { Signal.trap(-1, "xxxx") }
+
+      o = Object.new
+      def o.to_str; "SIGINT"; end
+      Signal.trap(o, "SIG_DFL")
+
+      assert_raise(ArgumentError) { Signal.trap("XXXXXXXXXX", "SIG_DFL") }
+
+    ensure
+      Signal.trap(:INT, oldtrap) if oldtrap
+    end
+  end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]