diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index d8e6586e5b..af6818ef71 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -191,3 +191,58 @@ jobs:
docker run --rm -e COMPOSER_ROOT_VERSION -v $(pwd):/app -v $(which composer):/usr/local/bin/composer -v /usr/local/bin/vulcain:/usr/local/bin/vulcain -w /app php:7.4-alpine ./phpunit src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php --filter testHttp2Push
sudo rm -rf .phpunit
[ -d .phpunit.bak ] && mv .phpunit.bak .phpunit
+
+ nightly:
+ name: PHPUnit on PHP nightly
+ runs-on: Ubuntu-20.04
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ coverage: "none"
+ ini-values: "memory_limit=-1"
+ php-version: "8.1"
+
+ - name: Configure composer
+ run: |
+ COMPOSER_HOME="$(composer config home)"
+ composer self-update
+ ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json"
+ echo "COMPOSER_ROOT_VERSION=$(grep -m1 SYMFONY_VERSION .travis.yml | grep -o '[0-9.x]*').x-dev" >> $GITHUB_ENV
+
+ - name: Install dependencies
+ run: |
+ echo "::group::fake PHP version"
+ composer config platform.php 8.0.99
+ echo "::group::composer update"
+ composer update --no-progress --ansi
+ echo "::endgroup::"
+ echo "::group::install phpunit"
+ ./phpunit install
+ echo "::endgroup::"
+
+ - name: Run tests
+ run: |
+ _run_tests() {
+ ok=0
+ echo "::group::$1"
+
+ # Run the tests
+ ./phpunit --colors=always --exclude-group tty,benchmark,intl-data ./$1 2>&1 || ok=1
+ echo ::endgroup::
+
+ if [ $ok -ne 0 ]; then
+ echo "::error::$1 failed"
+ fi
+
+ # Make the tests always pass because we don't want the build to fail (yet).
+ return 0
+ #return $ok
+ }
+ export -f _run_tests
+
+ find src/Symfony -mindepth 2 -type f -name phpunit.xml.dist -not -wholename '*/Bridge/PhpUnit/*' -print0 | xargs -0 -n1 dirname | sort | parallel _run_tests
diff --git a/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/LazyLoadingValueHolderGenerator.php b/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/LazyLoadingValueHolderGenerator.php
index 2ce78cd523..141147a64c 100644
--- a/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/LazyLoadingValueHolderGenerator.php
+++ b/src/Symfony/Bridge/ProxyManager/LazyProxy/PhpDumper/LazyLoadingValueHolderGenerator.php
@@ -43,7 +43,7 @@ class LazyLoadingValueHolderGenerator extends BaseGenerator
public function getProxifiedClass(Definition $definition): ?string
{
if (!$definition->hasTag('proxy')) {
- return class_exists($class = $definition->getClass()) || interface_exists($class, false) ? $class : null;
+ return ($class = $definition->getClass()) && (class_exists($class) || interface_exists($class, false)) ? $class : null;
}
if (!$definition->isLazy()) {
throw new \InvalidArgumentException(sprintf('Invalid definition for service of class "%s": setting the "proxy" tag on a service requires it to be "lazy".', $definition->getClass()));
diff --git a/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php b/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php
index e12c9a5973..ec75c9eecf 100644
--- a/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php
+++ b/src/Symfony/Component/DependencyInjection/Compiler/CheckTypeDeclarationsPass.php
@@ -88,8 +88,13 @@ final class CheckTypeDeclarationsPass extends AbstractRecursivePass
return parent::processValue($value, $isRoot);
}
- if (!$this->autoload && !class_exists($class = $value->getClass(), false) && !interface_exists($class, false)) {
- return parent::processValue($value, $isRoot);
+ if (!$this->autoload) {
+ if (!$class = $value->getClass()) {
+ return parent::processValue($value, $isRoot);
+ }
+ if (!class_exists($class, false) && !interface_exists($class, false)) {
+ return parent::processValue($value, $isRoot);
+ }
}
if (ServiceLocator::class === $value->getClass()) {
diff --git a/src/Symfony/Component/HttpClient/ScopingHttpClient.php b/src/Symfony/Component/HttpClient/ScopingHttpClient.php
index 6782101451..ed43343b04 100644
--- a/src/Symfony/Component/HttpClient/ScopingHttpClient.php
+++ b/src/Symfony/Component/HttpClient/ScopingHttpClient.php
@@ -73,11 +73,12 @@ class ScopingHttpClient implements HttpClientInterface, ResetInterface, LoggerAw
throw $e;
}
- $options = self::mergeDefaultOptions($options, $this->defaultOptionsByRegexp[$this->defaultRegexp], true);
+ $defaultOptions = $this->defaultOptionsByRegexp[$this->defaultRegexp];
+ $options = self::mergeDefaultOptions($options, $defaultOptions, true);
if (\is_string($options['base_uri'] ?? null)) {
$options['base_uri'] = self::parseUrl($options['base_uri']);
}
- $url = implode('', self::resolveUrl($url, $options['base_uri'] ?? null));
+ $url = implode('', self::resolveUrl($url, $options['base_uri'] ?? null, $defaultOptions['query'] ?? []));
}
foreach ($this->defaultOptionsByRegexp as $regexp => $defaultOptions) {
diff --git a/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php b/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php
index 27fe23e9c2..bfca02b358 100644
--- a/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php
+++ b/src/Symfony/Component/HttpClient/Tests/ScopingHttpClientTest.php
@@ -30,9 +30,9 @@ class ScopingHttpClientTest extends TestCase
public function testRelativeUrlWithDefaultRegexp()
{
$mockClient = new MockHttpClient();
- $client = new ScopingHttpClient($mockClient, ['.*' => ['base_uri' => 'http://example.com']], '.*');
+ $client = new ScopingHttpClient($mockClient, ['.*' => ['base_uri' => 'http://example.com', 'query' => ['a' => 'b']]], '.*');
- $this->assertSame('http://example.com/foo', $client->request('GET', '/foo')->getInfo('url'));
+ $this->assertSame('http://example.com/foo?f=g&a=b', $client->request('GET', '/foo?f=g')->getInfo('url'));
}
/**
diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.bg.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.bg.xlf
index 318f7d498b..ccf24256d6 100644
--- a/src/Symfony/Component/Security/Core/Resources/translations/security.bg.xlf
+++ b/src/Symfony/Component/Security/Core/Resources/translations/security.bg.xlf
@@ -20,7 +20,7 @@
- Това cookie вече се ползва от някой друг.
+ Тази бисквитка вече се ползва от някой друг.
@@ -36,11 +36,11 @@
- Сесията не е достъпна, или времето за достъп е изтекло, или кукитата не са разрешени.
+ Сесията не е достъпна, или времето за достъп е изтекло, или бисквитките не са разрешени.
- Токена не е открит.
+ Токенът не е открит.
@@ -48,7 +48,7 @@
- Акаунта е изтекъл.
+ Акаунтът е изтекъл.
@@ -56,20 +56,28 @@
- Акаунта е деактивиран.
+ Акаунтът е деактивиран.
- Акаунта е заключен.
+ Акаунтът е заключен.
- Твърде много грешни опити за вход, моля опитайте по-късно.
+ Твърде много неуспешни опити за вход, моля опитайте по-късно.
Невалиден или изтекъл линк за вход.
+
+
+ Прекалено много неуспешни опити за вход, моля опитайте отново след %minutes% минута.
+
+
+
+ Прекалено много неуспешни опити за вход, моля опитайте отново след %minutes% минути.
+