dumping ground for random patches and texts
 help / color / mirror / Atom feed
From: Eric Wong <e@80x24.org>
To: spew@80x24.org
Cc: Eric Wong <e@80x24.org>
Subject: [PATCH 7/8] Revert "spec: skip Process wait specs on MJIT"
Date: Mon, 25 Jun 2018 23:50:50 +0000	[thread overview]
Message-ID: <20180625235051.66045-8-e@80x24.org> (raw)
In-Reply-To: <20180625235051.66045-1-e@80x24.org>

This reverts r63731 (commit 359dd59db2512d801bb983f98bede4fc598f139a).
---
 spec/mspec/lib/mspec/guards/feature.rb |   6 --
 spec/ruby/core/process/wait2_spec.rb   |  26 ++++---
 spec/ruby/core/process/wait_spec.rb    | 122 ++++++++++++++++-----------------
 spec/ruby/core/process/waitall_spec.rb |  66 +++++++++---------
 4 files changed, 104 insertions(+), 116 deletions(-)

diff --git a/spec/mspec/lib/mspec/guards/feature.rb b/spec/mspec/lib/mspec/guards/feature.rb
index 4f1df1cabe..30984e0cc5 100644
--- a/spec/mspec/lib/mspec/guards/feature.rb
+++ b/spec/mspec/lib/mspec/guards/feature.rb
@@ -39,9 +39,3 @@ def match?
 def with_feature(*features, &block)
   FeatureGuard.new(*features).run_if(:with_feature, &block)
 end
-
-MSpecEnv.class_eval do
-  def without_feature(*features, &block)
-    FeatureGuard.new(*features).run_unless(:without_feature, &block)
-  end
-end
diff --git a/spec/ruby/core/process/wait2_spec.rb b/spec/ruby/core/process/wait2_spec.rb
index 3f5aa3c7e2..cb082541f9 100644
--- a/spec/ruby/core/process/wait2_spec.rb
+++ b/spec/ruby/core/process/wait2_spec.rb
@@ -14,21 +14,19 @@
     end
   end
 
-  without_feature :mjit do # [Bug #14867]
-    platform_is_not :windows do
-      it "returns the pid and status of child process" do
-        pidf = Process.fork { Process.exit! 99 }
-        results = Process.wait2
-        results.size.should == 2
-        pidw, status = results
-        pidf.should == pidw
-        status.exitstatus.should == 99
-      end
+  platform_is_not :windows do
+    it "returns the pid and status of child process" do
+      pidf = Process.fork { Process.exit! 99 }
+      results = Process.wait2
+      results.size.should == 2
+      pidw, status = results
+      pidf.should == pidw
+      status.exitstatus.should == 99
     end
+  end
 
-    it "raises a StandardError if no child processes exist" do
-      lambda { Process.wait2 }.should raise_error(Errno::ECHILD)
-      lambda { Process.wait2 }.should raise_error(StandardError)
-    end
+  it "raises a StandardError if no child processes exist" do
+    lambda { Process.wait2 }.should raise_error(Errno::ECHILD)
+    lambda { Process.wait2 }.should raise_error(StandardError)
   end
 end
diff --git a/spec/ruby/core/process/wait_spec.rb b/spec/ruby/core/process/wait_spec.rb
index 447c62f42a..f11b079c16 100644
--- a/spec/ruby/core/process/wait_spec.rb
+++ b/spec/ruby/core/process/wait_spec.rb
@@ -12,81 +12,79 @@
     end
   end
 
-  without_feature :mjit do # [Bug #14867]
-    it "raises an Errno::ECHILD if there are no child processes" do
-      lambda { Process.wait }.should raise_error(Errno::ECHILD)
+  it "raises an Errno::ECHILD if there are no child processes" do
+    lambda { Process.wait }.should raise_error(Errno::ECHILD)
+  end
+
+  platform_is_not :windows do
+    it "returns its childs pid" do
+      pid = Process.spawn(ruby_cmd('exit'))
+      Process.wait.should == pid
     end
 
-    platform_is_not :windows do
-      it "returns its childs pid" do
-        pid = Process.spawn(ruby_cmd('exit'))
-        Process.wait.should == pid
-      end
+    it "sets $? to a Process::Status" do
+      pid = Process.spawn(ruby_cmd('exit'))
+      Process.wait
+      $?.should be_kind_of(Process::Status)
+      $?.pid.should == pid
+    end
 
-      it "sets $? to a Process::Status" do
-        pid = Process.spawn(ruby_cmd('exit'))
-        Process.wait
-        $?.should be_kind_of(Process::Status)
-        $?.pid.should == pid
-      end
+    it "waits for any child process if no pid is given" do
+      pid = Process.spawn(ruby_cmd('exit'))
+      Process.wait.should == pid
+      lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
+    end
 
-      it "waits for any child process if no pid is given" do
-        pid = Process.spawn(ruby_cmd('exit'))
-        Process.wait.should == pid
-        lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
-      end
+    it "waits for a specific child if a pid is given" do
+      pid1 = Process.spawn(ruby_cmd('exit'))
+      pid2 = Process.spawn(ruby_cmd('exit'))
+      Process.wait(pid2).should == pid2
+      Process.wait(pid1).should == pid1
+      lambda { Process.kill(0, pid1) }.should raise_error(Errno::ESRCH)
+      lambda { Process.kill(0, pid2) }.should raise_error(Errno::ESRCH)
+    end
 
-      it "waits for a specific child if a pid is given" do
-        pid1 = Process.spawn(ruby_cmd('exit'))
-        pid2 = Process.spawn(ruby_cmd('exit'))
-        Process.wait(pid2).should == pid2
-        Process.wait(pid1).should == pid1
-        lambda { Process.kill(0, pid1) }.should raise_error(Errno::ESRCH)
-        lambda { Process.kill(0, pid2) }.should raise_error(Errno::ESRCH)
-      end
+    it "coerces the pid to an Integer" do
+      pid1 = Process.spawn(ruby_cmd('exit'))
+      Process.wait(mock_int(pid1)).should == pid1
+      lambda { Process.kill(0, pid1) }.should raise_error(Errno::ESRCH)
+    end
 
-      it "coerces the pid to an Integer" do
-        pid1 = Process.spawn(ruby_cmd('exit'))
-        Process.wait(mock_int(pid1)).should == pid1
-        lambda { Process.kill(0, pid1) }.should raise_error(Errno::ESRCH)
-      end
+    # This spec is probably system-dependent.
+    it "waits for a child whose process group ID is that of the calling process" do
+      pid1 = Process.spawn(ruby_cmd('exit'), pgroup: true)
+      pid2 = Process.spawn(ruby_cmd('exit'))
 
-      # This spec is probably system-dependent.
-      it "waits for a child whose process group ID is that of the calling process" do
-        pid1 = Process.spawn(ruby_cmd('exit'), pgroup: true)
-        pid2 = Process.spawn(ruby_cmd('exit'))
+      Process.wait(0).should == pid2
+      Process.wait.should == pid1
+    end
 
-        Process.wait(0).should == pid2
-        Process.wait.should == pid1
+    # This spec is probably system-dependent.
+    it "doesn't block if no child is available when WNOHANG is used" do
+      read, write = IO.pipe
+      pid = Process.fork do
+        read.close
+        Signal.trap("TERM") { Process.exit! }
+        write << 1
+        write.close
+        sleep
       end
 
-      # This spec is probably system-dependent.
-      it "doesn't block if no child is available when WNOHANG is used" do
-        read, write = IO.pipe
-        pid = Process.fork do
-          read.close
-          Signal.trap("TERM") { Process.exit! }
-          write << 1
-          write.close
-          sleep
-        end
-
-        Process.wait(pid, Process::WNOHANG).should be_nil
+      Process.wait(pid, Process::WNOHANG).should be_nil
 
-        # wait for the child to setup its TERM handler
-        write.close
-        read.read(1)
-        read.close
+      # wait for the child to setup its TERM handler
+      write.close
+      read.read(1)
+      read.close
 
-        Process.kill("TERM", pid)
-        Process.wait.should == pid
-      end
+      Process.kill("TERM", pid)
+      Process.wait.should == pid
+    end
 
-      it "always accepts flags=0" do
-        pid = Process.spawn(ruby_cmd('exit'))
-        Process.wait(-1, 0).should == pid
-        lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
-      end
+    it "always accepts flags=0" do
+      pid = Process.spawn(ruby_cmd('exit'))
+      Process.wait(-1, 0).should == pid
+      lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
     end
   end
 end
diff --git a/spec/ruby/core/process/waitall_spec.rb b/spec/ruby/core/process/waitall_spec.rb
index ff06ae21f9..bdc1ea7490 100644
--- a/spec/ruby/core/process/waitall_spec.rb
+++ b/spec/ruby/core/process/waitall_spec.rb
@@ -8,43 +8,41 @@
     end
   end
 
-  without_feature :mjit do # [Bug #14867]
-    it "returns an empty array when there are no children" do
-      Process.waitall.should == []
-    end
+  it "returns an empty array when there are no children" do
+    Process.waitall.should == []
+  end
 
-    it "takes no arguments" do
-      lambda { Process.waitall(0) }.should raise_error(ArgumentError)
-    end
+  it "takes no arguments" do
+    lambda { Process.waitall(0) }.should raise_error(ArgumentError)
+  end
 
-    platform_is_not :windows do
-      it "waits for all children" do
-        pids = []
-        pids << Process.fork { Process.exit! 2 }
-        pids << Process.fork { Process.exit! 1 }
-        pids << Process.fork { Process.exit! 0 }
-        Process.waitall
-        pids.each { |pid|
-          lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
-        }
-      end
+  platform_is_not :windows do
+    it "waits for all children" do
+      pids = []
+      pids << Process.fork { Process.exit! 2 }
+      pids << Process.fork { Process.exit! 1 }
+      pids << Process.fork { Process.exit! 0 }
+      Process.waitall
+      pids.each { |pid|
+        lambda { Process.kill(0, pid) }.should raise_error(Errno::ESRCH)
+      }
+    end
 
-      it "returns an array of pid/status pairs" do
-        pids = []
-        pids << Process.fork { Process.exit! 2 }
-        pids << Process.fork { Process.exit! 1 }
-        pids << Process.fork { Process.exit! 0 }
-        a = Process.waitall
-        a.should be_kind_of(Array)
-        a.size.should == 3
-        pids.each { |pid|
-          pid_status = a.assoc(pid)
-          pid_status.should be_kind_of(Array)
-          pid_status.size.should == 2
-          pid_status.first.should == pid
-          pid_status.last.should be_kind_of(Process::Status)
-        }
-      end
+    it "returns an array of pid/status pairs" do
+      pids = []
+      pids << Process.fork { Process.exit! 2 }
+      pids << Process.fork { Process.exit! 1 }
+      pids << Process.fork { Process.exit! 0 }
+      a = Process.waitall
+      a.should be_kind_of(Array)
+      a.size.should == 3
+      pids.each { |pid|
+        pid_status = a.assoc(pid)
+        pid_status.should be_kind_of(Array)
+        pid_status.size.should == 2
+        pid_status.first.should == pid
+        pid_status.last.should be_kind_of(Process::Status)
+      }
     end
   end
 end
-- 
EW


  parent reply	other threads:[~2018-06-25 23:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-25 23:50 [PATCHv3 0/8] mjit SIGCHLD hijack series Eric Wong
2018-06-25 23:50 ` [PATCH 1/8] hijack SIGCHLD handler for internal use Eric Wong
2018-06-25 23:50 ` [PATCH 2/8] fix SIGCHLD hijacking race conditions Eric Wong
2018-06-25 23:50 ` [PATCH 3/8] mjit.c: allow working on platforms without SIGCHLD Eric Wong
2018-06-25 23:50 ` [PATCH 4/8] cleanups Eric Wong
2018-06-25 23:50 ` [PATCH 5/8] handle SIGCHLD in both the timer-thread and main thread Eric Wong
2018-06-25 23:50 ` [PATCH 6/8] Revert "test_process.rb: skip tests for Bug 14867" Eric Wong
2018-06-25 23:50 ` Eric Wong [this message]
2018-06-25 23:50 ` [PATCH 8/8] wip testing Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180625235051.66045-8-e@80x24.org \
    --to=e@80x24.org \
    --cc=spew@80x24.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).