File: JoinPathsHelperTest.php

package info (click to toggle)
php-laravel-framework 11.46.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 22,276 kB
  • sloc: php: 266,630; sh: 167; javascript: 51; makefile: 46
file content (76 lines) | stat: -rw-r--r-- 3,007 bytes parent folder | download
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
<?php

namespace Illuminate\Tests\Filesystem;

use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\RequiresOperatingSystem;
use PHPUnit\Framework\TestCase;

use function Illuminate\Filesystem\join_paths;

class JoinPathsHelperTest extends TestCase
{
    #[RequiresOperatingSystem('Linux|DAR')]
    #[DataProvider('unixDataProvider')]
    public function testItCanMergePathsForUnix(string $expected, string $given)
    {
        $this->assertSame($expected, $given);
    }

    public static function unixDataProvider()
    {
        yield ['very/Basic/Functionality.php', join_paths('very', 'Basic', 'Functionality.php')];
        yield ['segments/get/ltrimed/by_directory/separator.php', join_paths('segments', '/get/ltrimed', '/by_directory/separator.php')];
        yield ['only/\\os_separator\\/\\get_ltrimmed.php', join_paths('only', '\\os_separator\\', '\\get_ltrimmed.php')];
        yield ['/base_path//does_not/get_trimmed.php', join_paths('/base_path/', '/does_not', '/get_trimmed.php')];
        yield ['Empty/0/1/Segments/00/Get_removed.php', join_paths('Empty', '', '0', null, 0, false, [], '1', 'Segments', '00', 'Get_removed.php')];
        yield ['', join_paths(null, null, '')];
        yield ['1/2/3', join_paths(1, 0, 2, 3)];
        yield ['app/objecty', join_paths('app', new class()
        {
            public function __toString()
            {
                return 'objecty';
            }
        })];
        yield ['app/0', join_paths('app', new class()
        {
            public function __toString()
            {
                return '0';
            }
        })];
    }

    #[RequiresOperatingSystem('Windows')]
    #[DataProvider('windowsDataProvider')]
    public function testItCanMergePathsForWindows(string $expected, string $given)
    {
        $this->assertSame($expected, $given);
    }

    public static function windowsDataProvider()
    {
        yield ['app\Basic\Functionality.php', join_paths('app', 'Basic', 'Functionality.php')];
        yield ['segments\get\ltrimed\by_directory\separator.php', join_paths('segments', '\get\ltrimed', '\by_directory\separator.php')];
        yield ['only\\/os_separator/\\/get_ltrimmed.php', join_paths('only', '/os_separator/', '/get_ltrimmed.php')];
        yield ['\base_path\\\\does_not\get_trimmed.php', join_paths('\\base_path\\', '\does_not', '\get_trimmed.php')];
        yield ['Empty\0\1\Segments\00\Get_removed.php', join_paths('Empty', '', '0', null, 0, false, [], '1', 'Segments', '00', 'Get_removed.php')];
        yield ['', join_paths(null, null, '')];
        yield ['1\2\3', join_paths(1, 2, 3)];
        yield ['app\\objecty', join_paths('app', new class()
        {
            public function __toString()
            {
                return 'objecty';
            }
        })];
        yield ['app\\0', join_paths('app', new class()
        {
            public function __toString()
            {
                return '0';
            }
        })];
    }
}