From 2b2f91ad87f170e3faf340da48204d50932b2ecd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
Date: Thu, 15 Jan 2015 11:02:43 +0800
Subject: [PATCH] gnu: ninja: Disable testcase SubprocessTest.InterruptChild.

* gnu/packages/patches/ninja-tests.patch: New file.
* gnu/packages/ninja.scm (ninja): Add the patch.
* gnu-system.am (dist_patch_DATA): Add it.
---
 gnu-system.am                          |  1 +
 gnu/packages/ninja.scm                 | 16 ++--------
 gnu/packages/patches/ninja-tests.patch | 44 ++++++++++++++++++++++++++
 3 files changed, 48 insertions(+), 13 deletions(-)
 create mode 100644 gnu/packages/patches/ninja-tests.patch

diff --git a/gnu-system.am b/gnu-system.am
index c520418edcb..8e331e136bf 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -422,6 +422,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/mupdf-buildsystem-fix.patch		\
   gnu/packages/patches/mutt-CVE-2014-9116.patch			\
   gnu/packages/patches/net-tools-bitrot.patch			\
+  gnu/packages/patches/ninja-tests.patch			\
   gnu/packages/patches/nss-pkgconfig.patch			\
   gnu/packages/patches/nvi-assume-preserve-path.patch           \
   gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm
index fe3f955b5de..7416b67d02a 100644
--- a/gnu/packages/ninja.scm
+++ b/gnu/packages/ninja.scm
@@ -34,7 +34,8 @@ (define-public ninja
                                   "archive/v" version ".tar.gz"))
               (sha256
                (base32
-                "1h3yfwcfl61v493vna6jia2fizh8rpig7qw2504cvkr6gid3p5bw"))))
+                "1h3yfwcfl61v493vna6jia2fizh8rpig7qw2504cvkr6gid3p5bw"))
+              (patches (list (search-patch "ninja-tests.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -52,18 +53,7 @@ (define-public ninja
           (lambda _
             (and (zero? (system* "./configure.py"))
                  (zero? (system* "./ninja" "ninja_test"))
-                 ;; SubprocessTest.SetWithLots fails with:
-                 ;;   Raise [ulimit -n] well above 1025 to make this test go.
-                 ;; Skip it.
-                 ;;
-                 ;; SubprocessTest.InterruptChild fails when using 'system*':
-                 ;;   *** Failure in src/subprocess_test.cc:83
-                 ;;   ExitInterrupted == subproc->Finish()
-                 ;; Pass it by using 'system' instead of 'system*'.
-                 (zero? (system (string-append
-                                 "./ninja_test "
-                                 "--gtest_filter="
-                                 "-SubprocessTest.SetWithLots")))))
+                 (zero? (system* "./ninja_test"))))
           (alist-replace
            'install
            (lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/patches/ninja-tests.patch b/gnu/packages/patches/ninja-tests.patch
new file mode 100644
index 00000000000..3436b6314dd
--- /dev/null
+++ b/gnu/packages/patches/ninja-tests.patch
@@ -0,0 +1,44 @@
+SubprocessTest.SetWithLots fails with:
+  Raise [ulimit -n] well above 1025 to make this test go.
+Skip it.
+
+SubprocessTest.InterruptChild fails when using 'system*':
+  *** Failure in src/subprocess_test.cc:83
+  ExitInterrupted == subproc->Finish()
+I can pass it by using 'system' instead of 'system*' when building locally,
+but it still failed on Hydra.  Skip it.
+
+--- ninja-1.5.3.orig/src/subprocess_test.cc	2015-01-15 10:34:28.859522176 +0800
++++ ninja-1.5.3/src/subprocess_test.cc	2015-01-15 10:37:52.969572075 +0800
+@@ -72,6 +72,7 @@
+ 
+ #ifndef _WIN32
+ 
++#if 0
+ TEST_F(SubprocessTest, InterruptChild) {
+   Subprocess* subproc = subprocs_.Add("kill -INT $$");
+   ASSERT_NE((Subprocess *) 0, subproc);
+@@ -82,6 +83,7 @@
+ 
+   EXPECT_EQ(ExitInterrupted, subproc->Finish());
+ }
++#endif
+ 
+ TEST_F(SubprocessTest, InterruptParent) {
+   Subprocess* subproc = subprocs_.Add("kill -INT $PPID ; sleep 1");
+@@ -169,6 +171,7 @@
+ // OS X's process limit is less than 1025 by default
+ // (|sysctl kern.maxprocperuid| is 709 on 10.7 and 10.8 and less prior to that).
+ #if !defined(__APPLE__) && !defined(_WIN32)
++#if 0
+ TEST_F(SubprocessTest, SetWithLots) {
+   // Arbitrary big number; needs to be over 1024 to confirm we're no longer
+   // hostage to pselect.
+@@ -196,6 +199,7 @@
+   }
+   ASSERT_EQ(kNumProcs, subprocs_.finished_.size());
+ }
++#endif
+ #endif  // !__APPLE__ && !_WIN32 
+ 
+ // TODO: this test could work on Windows, just not sure how to simply
-- 
GitLab