Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

杨树贤 / ic_server_welfare

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Merge Requests 0
  • Pipelines
  • Wiki
  • Snippets
  • Settings
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Files
  • Commits
  • Branches
  • Tags
  • Contributors
  • Graph
  • Compare
  • Charts
Find file
Normal viewHistoryPermalink
Switch branch/tag
  • ic_server_welfare
  • vendor
  • sebastian
  • diff
  • tests
  • DifferTestTest.php
DifferTestTest.php 2.26 KB
杨树贤's avatar
添加vendor和.env到git
d2e2cfe7
 
杨树贤 committed 5 years ago
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
<?php declare(strict_types=1);
/*
 * This file is part of sebastian/diff.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SebastianBergmann\Diff;

use PHPUnit\Framework\TestCase;

/**
 * @requires OS Linux
 */
final class DifferTestTest extends TestCase
{
    private $fileFrom;
    private $filePatch;

    protected function setUp()
    {
        $dir             = \realpath(__DIR__ . '/../') . '/';
        $this->fileFrom  = $dir . 'from.txt';
        $this->filePatch = $dir . 'patch.txt';
    }

    /**
     * @dataProvider provideDiffWithLineNumbers
     */
    public function testTheTestProvideDiffWithLineNumbers($expected, $from, $to)
    {
        $this->runThisTest($expected, $from, $to);
    }

    public function provideDiffWithLineNumbers()
    {
        require_once __DIR__ . '/DifferTest.php';
        $test  = new DifferTest();
        $tests = $test->provideDiffWithLineNumbers();

        $tests = \array_filter(
            $tests,
            function ($key) {
                return !\is_string($key) || false === \strpos($key, 'non_patch_compat');
            },
            ARRAY_FILTER_USE_KEY
        );

        return $tests;
    }

    private function runThisTest(string $expected, string $from, string $to)
    {
        $expected = \str_replace('--- Original', '--- from.txt', $expected);
        $expected = \str_replace('+++ New', '+++ from.txt', $expected);

        @\unlink($this->fileFrom);
        @\unlink($this->filePatch);

        $this->assertNotFalse(\file_put_contents($this->fileFrom, $from));
        $this->assertNotFalse(\file_put_contents($this->filePatch, $expected));

        $command = \sprintf(
            'patch -u --verbose %s < %s', // --posix
            \escapeshellarg($this->fileFrom),
            \escapeshellarg($this->filePatch)
        );

        \exec($command, $output, $d);

        $this->assertSame(0, $d, \sprintf('%s | %s', $command, \implode("\n", $output)));

        $patched = \file_get_contents($this->fileFrom);
        $this->assertSame($patched, $to);

        @\unlink($this->fileFrom . '.orig');
        @\unlink($this->fileFrom);
        @\unlink($this->filePatch);
    }
}