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 00b7db6a46..691cbc3b08 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 has already been used by someone else. - Това cookie вече се ползва от някой друг. + Тази бисквитка вече се ползва от някой друг. Not privileged to request the resource. @@ -36,11 +36,11 @@ No session available, it either timed out or cookies are not enabled. - Сесията не е достъпна, или времето за достъп е изтекло, или кукитата не са разрешени. + Сесията не е достъпна, или времето за достъп е изтекло, или бисквитките не са разрешени. No token could be found. - Токена не е открит. + Токенът не е открит. Username could not be found. @@ -48,7 +48,7 @@ Account has expired. - Акаунта е изтекъл. + Акаунтът е изтекъл. Credentials have expired. @@ -56,20 +56,28 @@ Account is disabled. - Акаунта е деактивиран. + Акаунтът е деактивиран. Account is locked. - Акаунта е заключен. + Акаунтът е заключен. Too many failed login attempts, please try again later. - Твърде много грешни опити за вход, моля опитайте по-късно. + Твърде много неуспешни опити за вход, моля опитайте по-късно. Invalid or expired login link. Невалиден или изтекъл линк за вход. + + Too many failed login attempts, please try again in %minutes% minute. + Прекалено много неуспешни опити за вход, моля опитайте отново след %minutes% минута. + + + Too many failed login attempts, please try again in %minutes% minutes. + Прекалено много неуспешни опити за вход, моля опитайте отново след %minutes% минути. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.uk.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.uk.xlf index dc90c91f41..6d5cff426d 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.uk.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.uk.xlf @@ -70,6 +70,14 @@ Invalid or expired login link. Посилання для входу недійсне, або термін його дії закінчився. + + Too many failed login attempts, please try again in %minutes% minute. + Забагато невдалих спроб входу. Будь ласка, спробуйте знову через %minutes% хвилину. + + + Too many failed login attempts, please try again in %minutes% minutes. + Забагато невдалих спроб входу. Будь ласка, спробуйте знову через %minutes% хв. +