From 703dcd2087507d9df1f7d629e5ff07eb2de35f15 Mon Sep 17 00:00:00 2001
From: David Alger <david@classyllama.com>
Date: Tue, 24 Nov 2015 14:14:06 -0600
Subject: [PATCH] Resolve PHP 7 unit test issues and remove allow_failures
 config (issue #1858)

---
 .travis.yml                                   |  2 -
 .../Test/Unit/Model/PhpReadinessCheckTest.php | 41 +++++++++++++------
 2 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index de425d0f9f2..a99b22b1ebd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -21,8 +21,6 @@ matrix:
       env: TEST_SUITE=static_phpcs
     - php: 5.6
       env: TEST_SUITE=static_annotation
-  allow_failures:
-    - php: 7.0
 before_install:
   - sudo apt-get update -qq
   - sudo apt-get install -y -qq postfix
diff --git a/setup/src/Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php b/setup/src/Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php
index 29b559a0f62..6f77ca1c1af 100644
--- a/setup/src/Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php
+++ b/setup/src/Magento/Setup/Test/Unit/Model/PhpReadinessCheckTest.php
@@ -209,13 +209,15 @@ class PhpReadinessCheckTest extends \PHPUnit_Framework_TestCase
                     'message' => $xdebugMessage,
                     'error' => false,
                 ],
-                'always_populate_raw_post_data' => [
-                    'message' => $rawPostMessage,
-                    'helpUrl' => 'http://php.net/manual/en/ini.core.php#ini.always-populate-settings-data',
-                    'error' => false
-                ]
             ]
         ];
+        if (!$this->isPhp7OrHackLang()) {
+            $expected['data']['always_populate_raw_post_data'] = [
+                'message' => $rawPostMessage,
+                'helpUrl' => 'http://php.net/manual/en/ini.core.php#ini.always-populate-settings-data',
+                'error' => false
+            ];
+        }
         $this->assertEquals($expected, $this->phpReadinessCheck->checkPhpSettings());
     }
 
@@ -246,14 +248,16 @@ class PhpReadinessCheckTest extends \PHPUnit_Framework_TestCase
                 'xdebug_max_nesting_level' => [
                     'message' => $xdebugMessage,
                     'error' => true,
-                ],
-                'always_populate_raw_post_data' => [
-                    'message' => $rawPostMessage,
-                    'helpUrl' => 'http://php.net/manual/en/ini.core.php#ini.always-populate-settings-data',
-                    'error' => false
                 ]
             ]
         ];
+        if (!$this->isPhp7OrHackLang()) {
+            $expected['data']['always_populate_raw_post_data'] = [
+                'message' => $rawPostMessage,
+                'helpUrl' => 'http://php.net/manual/en/ini.core.php#ini.always-populate-settings-data',
+                'error' => false
+            ];
+        }
         $this->assertEquals($expected, $this->phpReadinessCheck->checkPhpSettings());
     }
 
@@ -272,14 +276,17 @@ class PhpReadinessCheckTest extends \PHPUnit_Framework_TestCase
         );
         $expected = [
             'responseType' => ResponseTypeInterface::RESPONSE_TYPE_SUCCESS,
-            'data' => [
+            'data' => []
+        ];
+        if (!$this->isPhp7OrHackLang()) {
+            $expected['data'] = [
                 'always_populate_raw_post_data' => [
                     'message' => $rawPostMessage,
                     'helpUrl' => 'http://php.net/manual/en/ini.core.php#ini.always-populate-settings-data',
                     'error' => false
                 ]
-            ]
-        ];
+            ];
+        }
         $this->assertEquals($expected, $this->phpReadinessCheck->checkPhpSettings());
     }
 
@@ -333,6 +340,14 @@ class PhpReadinessCheckTest extends \PHPUnit_Framework_TestCase
         ];
         $this->assertEquals($expected, $this->phpReadinessCheck->checkPhpExtensions());
     }
+    
+    /**
+     * @return bool
+     */
+    protected function isPhp7OrHackLang()
+    {
+        return version_compare(PHP_VERSION, '7.0.0-beta') >= 0 || defined('HHVM_VERSION');
+    }
 }
 
 namespace Magento\Setup\Model;
-- 
GitLab