Error de no serialización cuando @runInSeparateProcess

Estoy implementando un módulo que proporcionará una API para trabajar y administrar sesiones de PHP. Estoy probando elSession\Manager Implementación que permitirá a los usuarios iniciar sesiones, establecer identificaciones, obtener identificaciones, destruir sesiones, etc. Estoy probando los métodos de esta clase en un proceso separado, utilizando PHPUnit@runInSeparateProcess anotación. Cuando uso esta anotación recibo una excepción lanzada por PHPUnit debido a un error de deserialización. Cuando no uso la anotación, la prueba se ejecuta como se esperaba y falla en nulo al no ser igual a falso.

Aquí está la prueba que causa el error. Hasta el momento no se han realizado detalles de implementación, todos los métodos para la interfaz existen pero no realizan operaciones.

class ManagerTest extends PHPUnitTestCase {

    /**
     * Ensures that if the session has not been started yet the sessionExists
     * method returns false.
     *
     * @runInSeparateProcess
     */
    public function testSessionExistsWhenSessionHasNotBeenStarted() {
        $Manager = new \Session\Manager();
        $this->assertFalse($Manager->sessionExists());
    }

}

Pude rastrear el problema hasta el siguientePHPUnit_Util_PHP::runJob() método. Estoy ejecutando PHPUnit 3.7.5 y elrunJob El método invocado es:

/**
 * Runs a single job (PHP code) using a separate PHP process.
 *
 * @param  string                       $job
 * @param  PHPUnit_Framework_TestCase   $test
 * @param  PHPUnit_Framework_TestResult $result
 * @return array|null
 * @throws PHPUnit_Framework_Exception
 */
public function runJob($job, PHPUnit_Framework_Test $test = NULL, PHPUnit_Framework_TestResult $result = NULL)
{
    $process = proc_open(
      $this->getPhpBinary(),
      array(
        0 => array('pipe', 'r'),
        1 => array('pipe', 'w'),
        2 => array('pipe', 'w')
      ),
      $pipes
    );

    if (!is_resource($process)) {
        throw new PHPUnit_Framework_Exception(
          'Unable to create process for process isolation.'
        );
    }

    if ($result !== NULL) {
        $result->startTest($test);
    }

    $this->process($pipes[0], $job);
    fclose($pipes[0]);

    $stdout = stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    $stderr = stream_get_contents($pipes[2]);
    fclose($pipes[2]);

    proc_close($process);
    $this->cleanup();

    if ($result !== NULL) {
        $this->processChildResult($test, $result, $stdout, $stderr);
    } else {
        return array('stdout' => $stdout, 'stderr' => $stderr);
    }
}

La línea$stdout = stream_get_contents($pipes[1]); resultados en$stdout siendo igual a una larga cadena de?. En$this->processChildResult el valor en$stdout no se ha serializado y el valor no válido que se pasa a esta función activa una advertencia, lo que genera una excepción. También he podido determinar que el valor de retorno de$this->getPhpBinary() es/usr/bin/php.

Mensaje de excepción lanzado:

PHPUnit_Framework_Exception: ???...???"*???...??


Caused by
ErrorException: unserialize(): Error at offset 0 of 10081 bytes

Gracias a hek2mgl el código PHP en$job puede ser revisadoen esta esencia, sosteniendo la salida de un var_dump en $ trabajo. Creé un enlace ya que es una buena cantidad de código y esta pregunta ya es bastante larga.

Llegué al final de mi conocimiento para este dominio en particular y no estoy seguro de cómo solucionar este problema aún más. No estoy seguro de por qué el@runInSeparateProcess está fallando y por qué la$stdout de ejecutar un proceso separado resulta en una larga cadena de? marcas. ¿Qué podría estar causando este problema y cómo podría resolverlo? Estoy paralizado para este módulo, ya que las futuras pruebas requerirán ejecutarse en un proceso separado para asegurar que las sesiones que se inician y destruyan no afecten las pruebas.

PHP: 5.3.15Unidad de PHP: 3.7.5Error causado en IDE y en la línea de comandos.