/**
  * Parse the skip section
  * - if skip
  * - run the code
  * - return the skip reason
  *
  * @param Zept  $zept
  * @param array $sections
  * @return \ZephirTestCase\Zept
  */
 private function hydrateSkip(Zept $zept, array $sections)
 {
     if (isset($sections['SKIPIF'])) {
         $jobResult = $this->codeRunner->runPhp($sections['SKIPIF'], $zept->getIni());
         if (!strncasecmp('skip', ltrim($jobResult['stdout']), 4)) {
             $message = '';
             if (preg_match('/^\\s*skip\\s*(.+)\\s*/i', $jobResult['stdout'], $rawMessage)) {
                 $message = substr($rawMessage[1], 2);
             }
             $zept->setSkipMessage($message);
         }
     }
     return $zept;
 }
 /**
  * Run the test
  *
  * @param \PHPUnit_Framework_TestResult $result
  * @param Zept                          $zept
  * @return \PHPUnit_Framework_TestResult
  */
 private function doRun(\PHPUnit_Framework_TestResult $result, Zept $zept)
 {
     $time = 0;
     \PHP_Timer::start();
     try {
         $jobResult = $this->codeRunner->run($zept->getZephirCode(), $zept->getPhpCode(), $this->silent);
         $time = \PHP_Timer::stop();
         $assertion = $zept->getAssertion();
         \PHPUnit_Framework_Assert::$assertion($this->cleanString($zept->getExpected()), $this->cleanString($jobResult['stdout']));
     } catch (\Exception $exception) {
         $result->addError($this, $exception, $time);
     } catch (\Throwable $throwable) {
         $result->addError($this, $throwable, $time);
     }
     $result->endTest($this, $time);
     $result->flushListeners();
     return $result;
 }