expectException(InvalidArgumentException::class); ManagedPath::validate($path); } public static function invalidPaths(): array { return array_map(static fn (string $path): array => [$path], [ '', '/a', '//server/a', 'C:/a', 'C:a', 'a\\b', "a\0b", 'https://host/a', 'file:a', 'a//b', 'a/', '.', '..', './a', 'a/../b', 'a/./b', ]); } public function testPlatformSpecificRestrictions(): void { foreach (['a/b.', 'a/b ', 'a/b:c'] as $path) { if (PHP_OS_FAMILY === 'Windows') { try { ManagedPath::validate($path); self::fail('Expected Windows alias rejection'); } catch (InvalidArgumentException) { self::assertTrue(true); } } else { self::assertSame($path, ManagedPath::validate($path)); } } } }