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';
}
})];
}
}
|