Merge branch '2.3' into 2.7

* 2.3:
  [Routing] use constants in tests
  [Validator] Allow an empty path in a URL with only a fragment or a query
  [HttpFoundation] Fix some typo in the Request doc
  fixed CS
  Added separated handling of root paths
This commit is contained in:
Fabien Potencier 2015-10-18 22:23:18 +02:00
commit fa6c58c90d
8 changed files with 45 additions and 36 deletions

View File

@ -345,8 +345,13 @@ class Filesystem
// Determine how deep the start path is relative to the common path (ie, "web/bundles" = 2 levels) // Determine how deep the start path is relative to the common path (ie, "web/bundles" = 2 levels)
$depth = count($startPathArr) - $index; $depth = count($startPathArr) - $index;
// Repeated "../" for each level need to reach the common path // When we need to traverse from the start, and we are starting from a root path, don't add '../'
$traverser = str_repeat('../', $depth); if ('/' === $startPath[0] && 0 === $index && 1 === $depth) {
$traverser = '';
} else {
// Repeated "../" for each level need to reach the common path
$traverser = str_repeat('../', $depth);
}
$endPathRemainder = implode('/', array_slice($endPathArr, $index)); $endPathRemainder = implode('/', array_slice($endPathArr, $index));

View File

@ -790,6 +790,8 @@ class FilesystemTest extends FilesystemTestCase
array('/a/aab/bb', '/a/aa/', '../aab/bb/'), array('/a/aab/bb', '/a/aa/', '../aab/bb/'),
array('/a/aab/bb/', '/a/aa', '../aab/bb/'), array('/a/aab/bb/', '/a/aa', '../aab/bb/'),
array('/a/aab/bb/', '/a/aa/', '../aab/bb/'), array('/a/aab/bb/', '/a/aa/', '../aab/bb/'),
array('/a/aab/bb/', '/', 'a/aab/bb/'),
array('/a/aab/bb/', '/b/aab', '../../a/aab/bb/'),
); );
if ('\\' === DIRECTORY_SEPARATOR) { if ('\\' === DIRECTORY_SEPARATOR) {

View File

@ -1165,7 +1165,7 @@ class Request
/** /**
* Checks whether the request is secure or not. * Checks whether the request is secure or not.
* *
* This method can read the client port from the "X-Forwarded-Proto" header * This method can read the client protocol from the "X-Forwarded-Proto" header
* when trusted proxies were set via "setTrustedProxies()". * when trusted proxies were set via "setTrustedProxies()".
* *
* The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http".
@ -1190,7 +1190,7 @@ class Request
/** /**
* Returns the host name. * Returns the host name.
* *
* This method can read the client port from the "X-Forwarded-Host" header * This method can read the client host name from the "X-Forwarded-Host" header
* when trusted proxies were set via "setTrustedProxies()". * when trusted proxies were set via "setTrustedProxies()".
* *
* The "X-Forwarded-Host" header must contain the client host name. * The "X-Forwarded-Host" header must contain the client host name.

View File

@ -11,6 +11,7 @@
namespace Symfony\Component\Routing\Tests\Generator\Dumper; namespace Symfony\Component\Routing\Tests\Generator\Dumper;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route; use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper; use Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper;
@ -64,10 +65,10 @@ class PhpGeneratorDumperTest extends \PHPUnit_Framework_TestCase
$projectUrlGenerator = new \ProjectUrlGenerator(new RequestContext('/app.php')); $projectUrlGenerator = new \ProjectUrlGenerator(new RequestContext('/app.php'));
$absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', array('foo' => 'bar'), true); $absoluteUrlWithParameter = $projectUrlGenerator->generate('Test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_URL);
$absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', array(), true); $absoluteUrlWithoutParameter = $projectUrlGenerator->generate('Test2', array(), UrlGeneratorInterface::ABSOLUTE_URL);
$relativeUrlWithParameter = $projectUrlGenerator->generate('Test', array('foo' => 'bar'), false); $relativeUrlWithParameter = $projectUrlGenerator->generate('Test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_PATH);
$relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', array(), false); $relativeUrlWithoutParameter = $projectUrlGenerator->generate('Test2', array(), UrlGeneratorInterface::ABSOLUTE_PATH);
$this->assertEquals($absoluteUrlWithParameter, 'http://localhost/app.php/testing/bar'); $this->assertEquals($absoluteUrlWithParameter, 'http://localhost/app.php/testing/bar');
$this->assertEquals($absoluteUrlWithoutParameter, 'http://localhost/app.php/testing2'); $this->assertEquals($absoluteUrlWithoutParameter, 'http://localhost/app.php/testing2');

View File

@ -22,7 +22,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testAbsoluteUrlWithPort80() public function testAbsoluteUrlWithPort80()
{ {
$routes = $this->getRoutes('test', new Route('/testing')); $routes = $this->getRoutes('test', new Route('/testing'));
$url = $this->getGenerator($routes)->generate('test', array(), true); $url = $this->getGenerator($routes)->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_URL);
$this->assertEquals('http://localhost/app.php/testing', $url); $this->assertEquals('http://localhost/app.php/testing', $url);
} }
@ -30,7 +30,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testAbsoluteSecureUrlWithPort443() public function testAbsoluteSecureUrlWithPort443()
{ {
$routes = $this->getRoutes('test', new Route('/testing')); $routes = $this->getRoutes('test', new Route('/testing'));
$url = $this->getGenerator($routes, array('scheme' => 'https'))->generate('test', array(), true); $url = $this->getGenerator($routes, array('scheme' => 'https'))->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_URL);
$this->assertEquals('https://localhost/app.php/testing', $url); $this->assertEquals('https://localhost/app.php/testing', $url);
} }
@ -38,7 +38,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testAbsoluteUrlWithNonStandardPort() public function testAbsoluteUrlWithNonStandardPort()
{ {
$routes = $this->getRoutes('test', new Route('/testing')); $routes = $this->getRoutes('test', new Route('/testing'));
$url = $this->getGenerator($routes, array('httpPort' => 8080))->generate('test', array(), true); $url = $this->getGenerator($routes, array('httpPort' => 8080))->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_URL);
$this->assertEquals('http://localhost:8080/app.php/testing', $url); $this->assertEquals('http://localhost:8080/app.php/testing', $url);
} }
@ -46,7 +46,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testAbsoluteSecureUrlWithNonStandardPort() public function testAbsoluteSecureUrlWithNonStandardPort()
{ {
$routes = $this->getRoutes('test', new Route('/testing')); $routes = $this->getRoutes('test', new Route('/testing'));
$url = $this->getGenerator($routes, array('httpsPort' => 8080, 'scheme' => 'https'))->generate('test', array(), true); $url = $this->getGenerator($routes, array('httpsPort' => 8080, 'scheme' => 'https'))->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_URL);
$this->assertEquals('https://localhost:8080/app.php/testing', $url); $this->assertEquals('https://localhost:8080/app.php/testing', $url);
} }
@ -54,7 +54,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testRelativeUrlWithoutParameters() public function testRelativeUrlWithoutParameters()
{ {
$routes = $this->getRoutes('test', new Route('/testing')); $routes = $this->getRoutes('test', new Route('/testing'));
$url = $this->getGenerator($routes)->generate('test', array(), false); $url = $this->getGenerator($routes)->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_PATH);
$this->assertEquals('/app.php/testing', $url); $this->assertEquals('/app.php/testing', $url);
} }
@ -62,7 +62,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testRelativeUrlWithParameter() public function testRelativeUrlWithParameter()
{ {
$routes = $this->getRoutes('test', new Route('/testing/{foo}')); $routes = $this->getRoutes('test', new Route('/testing/{foo}'));
$url = $this->getGenerator($routes)->generate('test', array('foo' => 'bar'), false); $url = $this->getGenerator($routes)->generate('test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_PATH);
$this->assertEquals('/app.php/testing/bar', $url); $this->assertEquals('/app.php/testing/bar', $url);
} }
@ -70,7 +70,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testRelativeUrlWithNullParameter() public function testRelativeUrlWithNullParameter()
{ {
$routes = $this->getRoutes('test', new Route('/testing.{format}', array('format' => null))); $routes = $this->getRoutes('test', new Route('/testing.{format}', array('format' => null)));
$url = $this->getGenerator($routes)->generate('test', array(), false); $url = $this->getGenerator($routes)->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_PATH);
$this->assertEquals('/app.php/testing', $url); $this->assertEquals('/app.php/testing', $url);
} }
@ -83,13 +83,13 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
$routes = $this->getRoutes('test', new Route('/testing/{foo}/bar', array('foo' => null))); $routes = $this->getRoutes('test', new Route('/testing/{foo}/bar', array('foo' => null)));
// This must raise an exception because the default requirement for "foo" is "[^/]+" which is not met with these params. // This must raise an exception because the default requirement for "foo" is "[^/]+" which is not met with these params.
// Generating path "/testing//bar" would be wrong as matching this route would fail. // Generating path "/testing//bar" would be wrong as matching this route would fail.
$this->getGenerator($routes)->generate('test', array(), false); $this->getGenerator($routes)->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_PATH);
} }
public function testRelativeUrlWithOptionalZeroParameter() public function testRelativeUrlWithOptionalZeroParameter()
{ {
$routes = $this->getRoutes('test', new Route('/testing/{page}')); $routes = $this->getRoutes('test', new Route('/testing/{page}'));
$url = $this->getGenerator($routes)->generate('test', array('page' => 0), false); $url = $this->getGenerator($routes)->generate('test', array('page' => 0), UrlGeneratorInterface::ABSOLUTE_PATH);
$this->assertEquals('/app.php/testing/0', $url); $this->assertEquals('/app.php/testing/0', $url);
} }
@ -104,7 +104,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testRelativeUrlWithExtraParameters() public function testRelativeUrlWithExtraParameters()
{ {
$routes = $this->getRoutes('test', new Route('/testing')); $routes = $this->getRoutes('test', new Route('/testing'));
$url = $this->getGenerator($routes)->generate('test', array('foo' => 'bar'), false); $url = $this->getGenerator($routes)->generate('test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_PATH);
$this->assertEquals('/app.php/testing?foo=bar', $url); $this->assertEquals('/app.php/testing?foo=bar', $url);
} }
@ -112,7 +112,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testAbsoluteUrlWithExtraParameters() public function testAbsoluteUrlWithExtraParameters()
{ {
$routes = $this->getRoutes('test', new Route('/testing')); $routes = $this->getRoutes('test', new Route('/testing'));
$url = $this->getGenerator($routes)->generate('test', array('foo' => 'bar'), true); $url = $this->getGenerator($routes)->generate('test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_URL);
$this->assertEquals('http://localhost/app.php/testing?foo=bar', $url); $this->assertEquals('http://localhost/app.php/testing?foo=bar', $url);
} }
@ -120,7 +120,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testUrlWithNullExtraParameters() public function testUrlWithNullExtraParameters()
{ {
$routes = $this->getRoutes('test', new Route('/testing')); $routes = $this->getRoutes('test', new Route('/testing'));
$url = $this->getGenerator($routes)->generate('test', array('foo' => null), true); $url = $this->getGenerator($routes)->generate('test', array('foo' => null), UrlGeneratorInterface::ABSOLUTE_URL);
$this->assertEquals('http://localhost/app.php/testing', $url); $this->assertEquals('http://localhost/app.php/testing', $url);
} }
@ -167,7 +167,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testGenerateWithoutRoutes() public function testGenerateWithoutRoutes()
{ {
$routes = $this->getRoutes('foo', new Route('/testing/{foo}')); $routes = $this->getRoutes('foo', new Route('/testing/{foo}'));
$this->getGenerator($routes)->generate('test', array(), true); $this->getGenerator($routes)->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_URL);
} }
/** /**
@ -176,7 +176,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testGenerateForRouteWithoutMandatoryParameter() public function testGenerateForRouteWithoutMandatoryParameter()
{ {
$routes = $this->getRoutes('test', new Route('/testing/{foo}')); $routes = $this->getRoutes('test', new Route('/testing/{foo}'));
$this->getGenerator($routes)->generate('test', array(), true); $this->getGenerator($routes)->generate('test', array(), UrlGeneratorInterface::ABSOLUTE_URL);
} }
/** /**
@ -185,7 +185,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testGenerateForRouteWithInvalidOptionalParameter() public function testGenerateForRouteWithInvalidOptionalParameter()
{ {
$routes = $this->getRoutes('test', new Route('/testing/{foo}', array('foo' => '1'), array('foo' => 'd+'))); $routes = $this->getRoutes('test', new Route('/testing/{foo}', array('foo' => '1'), array('foo' => 'd+')));
$this->getGenerator($routes)->generate('test', array('foo' => 'bar'), true); $this->getGenerator($routes)->generate('test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_URL);
} }
/** /**
@ -194,7 +194,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testGenerateForRouteWithInvalidParameter() public function testGenerateForRouteWithInvalidParameter()
{ {
$routes = $this->getRoutes('test', new Route('/testing/{foo}', array(), array('foo' => '1|2'))); $routes = $this->getRoutes('test', new Route('/testing/{foo}', array(), array('foo' => '1|2')));
$this->getGenerator($routes)->generate('test', array('foo' => '0'), true); $this->getGenerator($routes)->generate('test', array('foo' => '0'), UrlGeneratorInterface::ABSOLUTE_URL);
} }
public function testGenerateForRouteWithInvalidOptionalParameterNonStrict() public function testGenerateForRouteWithInvalidOptionalParameterNonStrict()
@ -202,7 +202,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
$routes = $this->getRoutes('test', new Route('/testing/{foo}', array('foo' => '1'), array('foo' => 'd+'))); $routes = $this->getRoutes('test', new Route('/testing/{foo}', array('foo' => '1'), array('foo' => 'd+')));
$generator = $this->getGenerator($routes); $generator = $this->getGenerator($routes);
$generator->setStrictRequirements(false); $generator->setStrictRequirements(false);
$this->assertNull($generator->generate('test', array('foo' => 'bar'), true)); $this->assertNull($generator->generate('test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_URL));
} }
public function testGenerateForRouteWithInvalidOptionalParameterNonStrictWithLogger() public function testGenerateForRouteWithInvalidOptionalParameterNonStrictWithLogger()
@ -213,7 +213,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
->method('error'); ->method('error');
$generator = $this->getGenerator($routes, array(), $logger); $generator = $this->getGenerator($routes, array(), $logger);
$generator->setStrictRequirements(false); $generator->setStrictRequirements(false);
$this->assertNull($generator->generate('test', array('foo' => 'bar'), true)); $this->assertNull($generator->generate('test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_URL));
} }
public function testGenerateForRouteWithInvalidParameterButDisabledRequirementsCheck() public function testGenerateForRouteWithInvalidParameterButDisabledRequirementsCheck()
@ -230,7 +230,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testGenerateForRouteWithInvalidMandatoryParameter() public function testGenerateForRouteWithInvalidMandatoryParameter()
{ {
$routes = $this->getRoutes('test', new Route('/testing/{foo}', array(), array('foo' => 'd+'))); $routes = $this->getRoutes('test', new Route('/testing/{foo}', array(), array('foo' => 'd+')));
$this->getGenerator($routes)->generate('test', array('foo' => 'bar'), true); $this->getGenerator($routes)->generate('test', array('foo' => 'bar'), UrlGeneratorInterface::ABSOLUTE_URL);
} }
/** /**
@ -411,7 +411,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
{ {
$routes = $this->getRoutes('test', new Route('/{name}', array(), array(), array(), '{locale}.example.com')); $routes = $this->getRoutes('test', new Route('/{name}', array(), array(), array(), '{locale}.example.com'));
$this->assertEquals('http://fr.example.com/app.php/Fabien', $this->getGenerator($routes, array('host' => 'fr.example.com'))->generate('test', array('name' => 'Fabien', 'locale' => 'fr'), true)); $this->assertEquals('http://fr.example.com/app.php/Fabien', $this->getGenerator($routes, array('host' => 'fr.example.com'))->generate('test', array('name' => 'Fabien', 'locale' => 'fr'), UrlGeneratorInterface::ABSOLUTE_URL));
} }
/** /**
@ -420,7 +420,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testUrlWithInvalidParameterInHost() public function testUrlWithInvalidParameterInHost()
{ {
$routes = $this->getRoutes('test', new Route('/', array(), array('foo' => 'bar'), array(), '{foo}.example.com')); $routes = $this->getRoutes('test', new Route('/', array(), array('foo' => 'bar'), array(), '{foo}.example.com'));
$this->getGenerator($routes)->generate('test', array('foo' => 'baz'), false); $this->getGenerator($routes)->generate('test', array('foo' => 'baz'), UrlGeneratorInterface::ABSOLUTE_PATH);
} }
/** /**
@ -429,7 +429,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testUrlWithInvalidParameterInHostWhenParamHasADefaultValue() public function testUrlWithInvalidParameterInHostWhenParamHasADefaultValue()
{ {
$routes = $this->getRoutes('test', new Route('/', array('foo' => 'bar'), array('foo' => 'bar'), array(), '{foo}.example.com')); $routes = $this->getRoutes('test', new Route('/', array('foo' => 'bar'), array('foo' => 'bar'), array(), '{foo}.example.com'));
$this->getGenerator($routes)->generate('test', array('foo' => 'baz'), false); $this->getGenerator($routes)->generate('test', array('foo' => 'baz'), UrlGeneratorInterface::ABSOLUTE_PATH);
} }
/** /**
@ -438,7 +438,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
public function testUrlWithInvalidParameterEqualsDefaultValueInHost() public function testUrlWithInvalidParameterEqualsDefaultValueInHost()
{ {
$routes = $this->getRoutes('test', new Route('/', array('foo' => 'baz'), array('foo' => 'bar'), array(), '{foo}.example.com')); $routes = $this->getRoutes('test', new Route('/', array('foo' => 'baz'), array('foo' => 'bar'), array(), '{foo}.example.com'));
$this->getGenerator($routes)->generate('test', array('foo' => 'baz'), false); $this->getGenerator($routes)->generate('test', array('foo' => 'baz'), UrlGeneratorInterface::ABSOLUTE_PATH);
} }
public function testUrlWithInvalidParameterInHostInNonStrictMode() public function testUrlWithInvalidParameterInHostInNonStrictMode()
@ -446,7 +446,7 @@ class UrlGeneratorTest extends \PHPUnit_Framework_TestCase
$routes = $this->getRoutes('test', new Route('/', array(), array('foo' => 'bar'), array(), '{foo}.example.com')); $routes = $this->getRoutes('test', new Route('/', array(), array('foo' => 'bar'), array(), '{foo}.example.com'));
$generator = $this->getGenerator($routes); $generator = $this->getGenerator($routes);
$generator->setStrictRequirements(false); $generator->setStrictRequirements(false);
$this->assertNull($generator->generate('test', array('foo' => 'baz'), false)); $this->assertNull($generator->generate('test', array('foo' => 'baz'), UrlGeneratorInterface::ABSOLUTE_PATH));
} }
public function testHostIsCaseInsensitive() public function testHostIsCaseInsensitive()

View File

@ -15,6 +15,7 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Exception\MethodNotAllowedException; use Symfony\Component\Routing\Exception\MethodNotAllowedException;
use Symfony\Component\Routing\Exception\ResourceNotFoundException; use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\Security;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Http\HttpUtils; use Symfony\Component\Security\Http\HttpUtils;
class HttpUtilsTest extends \PHPUnit_Framework_TestCase class HttpUtilsTest extends \PHPUnit_Framework_TestCase
@ -43,7 +44,7 @@ class HttpUtilsTest extends \PHPUnit_Framework_TestCase
$urlGenerator $urlGenerator
->expects($this->any()) ->expects($this->any())
->method('generate') ->method('generate')
->with('foobar', array(), true) ->with('foobar', array(), UrlGeneratorInterface::ABSOLUTE_URL)
->will($this->returnValue('http://localhost/foo/bar')) ->will($this->returnValue('http://localhost/foo/bar'))
; ;
$urlGenerator $urlGenerator

View File

@ -34,7 +34,7 @@ class UrlValidator extends ConstraintValidator
\] # a IPv6 address \] # a IPv6 address
) )
(:[0-9]+)? # a port (optional) (:[0-9]+)? # a port (optional)
(/?|/\S+) # a /, nothing or a / with something (/?|/\S+|\?|\#) # a /, nothing, a / with something, a query or a fragment
$~ixu'; $~ixu';
/** /**

View File

@ -117,6 +117,8 @@ class UrlValidatorTest extends AbstractConstraintValidatorTest
array('http://☎.com/'), array('http://☎.com/'),
array('http://username:password@symfony.com'), array('http://username:password@symfony.com'),
array('http://user-name@symfony.com'), array('http://user-name@symfony.com'),
array('http://symfony.com?'),
array('http://symfony.com#'),
); );
} }
@ -146,8 +148,6 @@ class UrlValidatorTest extends AbstractConstraintValidatorTest
array('http://goog_le.com'), array('http://goog_le.com'),
array('http://google.com::aa'), array('http://google.com::aa'),
array('http://google.com:aa'), array('http://google.com:aa'),
array('http://symfony.com?'),
array('http://symfony.com#'),
array('ftp://google.fr'), array('ftp://google.fr'),
array('faked://google.fr'), array('faked://google.fr'),
array('http://127.0.0.1:aa/'), array('http://127.0.0.1:aa/'),