Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php use Symfony\Component\Process\Process; $run = function () { $junitLogFile = te..

Decoded Output download

<?php

use Symfony\Component\Process\Process;

$run = function () {
    $junitLogFile = tempnam(sys_get_temp_dir(), 'junit');

    $process = new Process(
        array_merge(['php', 'bin/pest', '--log-junit', $junitLogFile], func_get_args()),
        dirname(__DIR__, 2),
        ['COLLISION_PRINTER' => 'DefaultPrinter', 'COLLISION_IGNORE_DURATION' => 'true'],
    );

    $process->run();

    $rawXmlContent = file_get_contents($junitLogFile);
    unlink($junitLogFile);

    // convert xml to array
    try {
        $xml = new SimpleXMLElement(preg_replace("/(<\/?)(\w+):([^>]*>)/", '$1$2$3', $rawXmlContent));

        return json_decode(json_encode((array) $xml), true);
    } catch (Exception $exception) {
        throw new XmlParseException($exception->getMessage(), $exception->getCode(), $exception->getPrevious());
    }
};

$normalizedPath = function (string $path) {
    return str_replace('/', DIRECTORY_SEPARATOR, $path);
};

test('junit output', function () use ($normalizedPath, $run) {
    $result = $run('tests/.tests/SuccessOnly.php');

    expect($result['testsuite']['@attributes'])
        ->name->toBe('Tests	ests\SuccessOnly')
        ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php'))
        ->tests->toBe('2')
        ->assertions->toBe('2')
        ->errors->toBe('0')
        ->failures->toBe('0')
        ->skipped->toBe('0');

    expect($result['testsuite']['testcase'])
        ->toHaveCount(2);

    expect($result['testsuite']['testcase'][0]['@attributes'])
        ->name->toBe('it can pass with comparison')
        ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php::it can pass with comparison'))
        ->class->toBe('Tests	ests\SuccessOnly')
        ->classname->toBe('Tests.tests.SuccessOnly')
        ->assertions->toBe('1')
        ->time->toStartWith('0.0');
});

test('junit with parallel', function () use ($normalizedPath, $run) {
    $result = $run('tests/.tests/SuccessOnly.php', '--parallel', '--processes=1', '--filter', 'can pass with comparison');

    expect($result['testsuite']['@attributes'])
        ->name->toBe('Tests	ests\SuccessOnly')
        ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php'))
        ->tests->toBe('1')
        ->assertions->toBe('1')
        ->errors->toBe('0')
        ->failures->toBe('0')
        ->skipped->toBe('0');

    expect($result['testsuite']['testcase'])
        ->toHaveCount(1);

    expect($result['testsuite']['testcase']['@attributes'])
        ->name->toBe('it can pass with comparison')
        ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php::it can pass with comparison'))
        ->class->toBe('Tests	ests\SuccessOnly')
        ->classname->toBe('Tests.tests.SuccessOnly')
        ->assertions->toBe('1')
        ->time->toStartWith('0.0');
});
 ?>

Did this file decode correctly?

Original Code

<?php

use Symfony\Component\Process\Process;

$run = function () {
    $junitLogFile = tempnam(sys_get_temp_dir(), 'junit');

    $process = new Process(
        array_merge(['php', 'bin/pest', '--log-junit', $junitLogFile], func_get_args()),
        dirname(__DIR__, 2),
        ['COLLISION_PRINTER' => 'DefaultPrinter', 'COLLISION_IGNORE_DURATION' => 'true'],
    );

    $process->run();

    $rawXmlContent = file_get_contents($junitLogFile);
    unlink($junitLogFile);

    // convert xml to array
    try {
        $xml = new SimpleXMLElement(preg_replace("/(<\/?)(\w+):([^>]*>)/", '$1$2$3', $rawXmlContent));

        return json_decode(json_encode((array) $xml), true);
    } catch (Exception $exception) {
        throw new XmlParseException($exception->getMessage(), $exception->getCode(), $exception->getPrevious());
    }
};

$normalizedPath = function (string $path) {
    return str_replace('/', DIRECTORY_SEPARATOR, $path);
};

test('junit output', function () use ($normalizedPath, $run) {
    $result = $run('tests/.tests/SuccessOnly.php');

    expect($result['testsuite']['@attributes'])
        ->name->toBe('Tests\tests\SuccessOnly')
        ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php'))
        ->tests->toBe('2')
        ->assertions->toBe('2')
        ->errors->toBe('0')
        ->failures->toBe('0')
        ->skipped->toBe('0');

    expect($result['testsuite']['testcase'])
        ->toHaveCount(2);

    expect($result['testsuite']['testcase'][0]['@attributes'])
        ->name->toBe('it can pass with comparison')
        ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php::it can pass with comparison'))
        ->class->toBe('Tests\tests\SuccessOnly')
        ->classname->toBe('Tests.tests.SuccessOnly')
        ->assertions->toBe('1')
        ->time->toStartWith('0.0');
});

test('junit with parallel', function () use ($normalizedPath, $run) {
    $result = $run('tests/.tests/SuccessOnly.php', '--parallel', '--processes=1', '--filter', 'can pass with comparison');

    expect($result['testsuite']['@attributes'])
        ->name->toBe('Tests\tests\SuccessOnly')
        ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php'))
        ->tests->toBe('1')
        ->assertions->toBe('1')
        ->errors->toBe('0')
        ->failures->toBe('0')
        ->skipped->toBe('0');

    expect($result['testsuite']['testcase'])
        ->toHaveCount(1);

    expect($result['testsuite']['testcase']['@attributes'])
        ->name->toBe('it can pass with comparison')
        ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php::it can pass with comparison'))
        ->class->toBe('Tests\tests\SuccessOnly')
        ->classname->toBe('Tests.tests.SuccessOnly')
        ->assertions->toBe('1')
        ->time->toStartWith('0.0');
});

Function Calls

None

Variables

None

Stats

MD5 9c42fdfcf06a05f7d0a8f8fe5a1f39a0
Eval Count 0
Decode Time 85 ms