diff --git a/.gitattributes b/.gitattributes index cf8890eefbda8..d1570aff1cd79 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6,4 +6,3 @@ /src/Symfony/Component/Runtime export-ignore /src/Symfony/Component/Translation/Bridge export-ignore /src/Symfony/Component/Intl/Resources/data/*/* linguist-generated=true -/.git* export-ignore diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 00a24cbcfc13c..f749de5e0d82a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,6 +1,6 @@ | Q | A | ------------- | --- -| Branch? | 7.1 for features / 5.4, 6.4, or 7.0 for bug fixes +| Branch? | 7.2 for features / 5.4, 6.4, 7.0, and 7.1 for bug fixes | Bug fix? | yes/no | New feature? | yes/no | Deprecations? | yes/no diff --git a/.github/sync-packages.php b/.github/sync-packages.php deleted file mode 100644 index 3d056466016e9..0000000000000 --- a/.github/sync-packages.php +++ /dev/null @@ -1,75 +0,0 @@ -> $GITHUB_OUTPUT + + - name: Check Translation Status + if: steps.changed-translation-files.outputs.changed == 'true' + run: | + php src/Symfony/Component/Translation/Resources/bin/translation-status.php -v + php .github/sync-translations.php + git diff --exit-code src/ || (echo '::error::Run "php .github/sync-translations.php" to fix XLIFF files.' && exit 1) + - name: Run tests run: ./phpunit --group integration -v env: @@ -199,15 +216,3 @@ jobs: # docker run --rm -e COMPOSER_ROOT_VERSION -v $(pwd):/app -v $(which composer):/usr/local/bin/composer -v $(which vulcain):/usr/local/bin/vulcain -w /app php:8.0-alpine ./phpunit src/Symfony/Component/HttpClient/Tests/CurlHttpClientTest.php --filter testHttp2Push # sudo rm -rf .phpunit # [ -d .phpunit.bak ] && mv .phpunit.bak .phpunit - - - name: Check for changes in translation files - id: changed-translation-files - run: | - echo 'changed='$((git diff --quiet HEAD~1 HEAD -- 'src/**/Resources/translations/*.xlf' || (echo 'true' && exit 1)) && echo 'false') >> $GITHUB_OUTPUT - - - name: Check Translation Status - if: steps.changed-translation-files.outputs.changed == 'true' - run: | - php src/Symfony/Component/Translation/Resources/bin/translation-status.php -v - php .github/sync-translations.php - git diff --exit-code src/ || (echo '::error::Run "php .github/sync-translations.php" to fix XLIFF files.' && exit 1) diff --git a/.github/workflows/package-tests.yml b/.github/workflows/package-tests.yml index a70c4321e36bb..69f22dab44a9f 100644 --- a/.github/workflows/package-tests.yml +++ b/.github/workflows/package-tests.yml @@ -101,7 +101,6 @@ jobs: done exit $ok - - name: Verify symfony/deprecation-contracts requirements run: | set +e @@ -142,9 +141,3 @@ jobs: done exit $ok - - - name: Verify subtree-splits are auto-closed - run: | - php .github/sync-packages.php - git add src/ - git diff --staged --exit-code || (echo '::error::Please run "php .github/sync-packages.php".' && exit 1) diff --git a/CHANGELOG-5.4.md b/CHANGELOG-5.4.md index 4675182aec6dd..3e2bcd6d8360d 100644 --- a/CHANGELOG-5.4.md +++ b/CHANGELOG-5.4.md @@ -7,6 +7,38 @@ in 5.4 minor versions. To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v5.4.0...v5.4.1 +* 5.4.40 (2024-06-02) + + * bug #57275 Fix autoload configs to avoid warnings when building optimized autoloaders (Seldaek) + * bug #54572 [Mailer] Fix sendmail transport failure handling and interactive mode (bobvandevijver) + * bug #57228 [Mime] fix PHP 7 compatibility (xabbuh) + * bug #57065 [Mime] Fixed `Mime\Message::ensureValidity()` when a required header is set, but has an empty body (rhertogh) + * bug #57109 [Notifier] keep boolean options when their value is false (xabbuh) + * bug #54694 [PropertyInfo] Update DoctrineExtractor for new DBAL 4 BIGINT type (llupa) + * bug #54913 [Serializer] Fix CurrentType for missing property (ElisDN) + * bug #54797 [PhpUnitBridge] Fix `DeprecationErrorHandler` with PhpUnit 10 (HypeMC) + * bug #54878 [Filesystem] Fix dumpFile `stat failed` error hitting custom handler (acoulton) + * bug #54924 [Validator] IBAN Check digits should always between 2 and 98 (karstennilsen) + * bug #54919 [ErrorHandler] Do not call xdebug_get_function_stack() with xdebug >= 3.0 when not in develop mode (fmata) + * bug #54910 [HttpFoundation]  filter out empty HTTP header parts (xabbuh) + * bug #54888 [String] Fix folded in compat mode (smnandre) + * bug #54860 [HttpClient] Revert fixing curl default options (alexandre-daubois) + * bug #54839 Fix exception thrown during `LDAP_MODIFY_BATCH_REMOVE_ALL` batch operations (phasdev) + * bug #54834 [Validator] Check `Locale` class existence before using it (alexandre-daubois) + * bug #54830 [HttpClient] Fix cURL default options for PHP 8.4 (alexandre-daubois) + * bug #54828 [Serializer] Fix `GetSetMethodNormalizer` not working with setters with optional args (HypeMC) + * bug #54816 [Cache] Fix support for predis/predis:^2.0 (mfettig) + * bug #54804 [Serializer] separate the property info and write info extractors (xabbuh) + * bug #54800 [WebProfilerBundle] fix compatibility with Twig 3.10 (xabbuh) + * bug #54794 [Strings][EnglishInflector] Fix incorrect pluralisation of 'Album' (timporter) + * bug #54714 [Serializer] convert empty CSV header names into numeric keys (xabbuh) + * bug #54775 [Messenger] accept AbstractAsset instances when filtering schemas (xabbuh) + * bug #54759 [Filesystem] better distinguish URL schemes and Windows drive letters (xabbuh) + * bug #54791 [FrameworkBundle] move wiring of the property info extractor to the ObjectNormalizer (xabbuh) + * bug #54760 [Validator] handle union and intersection types for cascaded validations (xabbuh) + * bug #54776 [Cache] fix: remove unwanted cast to int (Arend Hummeling) + * bug #54700 [Dotenv] show overridden vars too when running debug:dotenv (HMRDevil) + * 5.4.39 (2024-04-29) * bug #54751 [Validator]  detect wrong e-mail validation modes (xabbuh) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 2c65442650d09..92dac23ccbd1c 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -13,8 +13,8 @@ The Symfony Connect username in parenthesis allows to get more information - Tobias Schultze (tobion) - Grégoire Pineau (lyrixx) - Thomas Calvet (fancyweb) - - Christophe Coevoet (stof) - Alexandre Daubois (alexandre-daubois) + - Christophe Coevoet (stof) - Wouter de Jong (wouterj) - Jordi Boggiano (seldaek) - Maxime Steinhausser (ogizanagi) @@ -35,9 +35,9 @@ The Symfony Connect username in parenthesis allows to get more information - Jérôme Tamarelle (gromnan) - Samuel ROZE (sroze) - Antoine Lamirault (alamirault) + - HypeMC (hypemc) - Pascal Borreli (pborreli) - Romain Neutron - - HypeMC (hypemc) - Joseph Bielawski (stloyd) - Drak (drak) - Abdellatif Ait boudad (aitboudad) @@ -61,6 +61,7 @@ The Symfony Connect username in parenthesis allows to get more information - William DURAND - ornicar - Dany Maillard (maidmaid) + - Simon André (simonandre) - Eriksen Costa - Diego Saint Esteben (dosten) - stealth35 ‏ (stealth35) @@ -69,20 +70,19 @@ The Symfony Connect username in parenthesis allows to get more information - Francis Besset (francisbesset) - Titouan Galopin (tgalopin) - Pierre du Plessis (pierredup) - - Simon André (simonandre) - David Maicher (dmaicher) - Bulat Shakirzyanov (avalanche123) - Iltar van der Berg - Miha Vrhovnik (mvrhov) + - Tomasz Kowalczyk (thunderer) - Gary PEGEOT (gary-p) + - Mathias Arlaud (mtarld) - Saša Stamenković (umpirsky) - Allison Guilhem (a_guilhem) - Mathieu Piot (mpiot) - Mathieu Santostefano (welcomattic) - Alexander Schranz (alexander-schranz) - Vasilij Duško (staff) - - Tomasz Kowalczyk (thunderer) - - Mathias Arlaud (mtarld) - Sarah Khalil (saro0h) - Laurent VOULLEMIER (lvo) - Konstantin Kudryashov (everzet) @@ -95,8 +95,8 @@ The Symfony Connect username in parenthesis allows to get more information - Dariusz Ruminski - Henrik Bjørnskov (henrikbjorn) - David Buchmann (dbu) - - Andrej Hudec (pulzarraider) - Ruud Kamphuis (ruudk) + - Andrej Hudec (pulzarraider) - Jáchym Toušek (enumag) - Christian Raue - Eric Clemmons (ericclemmons) @@ -162,9 +162,9 @@ The Symfony Connect username in parenthesis allows to get more information - Teoh Han Hui (teohhanhui) - Przemysław Bogusz (przemyslaw-bogusz) - Colin Frei + - Nicolas Philippe (nikophil) - excelwebzone - Paráda József (paradajozsef) - - Nicolas Philippe (nikophil) - Baptiste Clavié (talus) - Alexander Schwenn (xelaris) - Fabien Pennequin (fabienpennequin) @@ -181,24 +181,27 @@ The Symfony Connect username in parenthesis allows to get more information - François-Xavier de Guillebon (de-gui_f) - Maximilian Beckers (maxbeckers) - noniagriconomie + - Valtteri R (valtzu) - Eric GELOEN (gelo) - Gabriel Caruso - Stefano Sala (stefano.sala) - Ion Bazan (ionbazan) + - Niels Keurentjes (curry684) - OGAWA Katsuhiro (fivestar) - Jhonny Lidfors (jhonne) + - Dāvis Zālītis (k0d3r1s) - Juti Noppornpitak (shiroyuki) - Gregor Harlan (gharlan) + - Hugo Alliaume (kocal) - Anthony MARTIN - Andreas Schempp (aschempp) - Sebastian Hörl (blogsh) - Tigran Azatyan (tigranazatyan) + - Florent Mata (fmata) - Christopher Hertel (chertel) - Jonathan Scheiber (jmsche) - Daniel Gomes (danielcsgomes) - Hidenori Goto (hidenorigoto) - - Niels Keurentjes (curry684) - - Dāvis Zālītis (k0d3r1s) - Arnaud Kleinpeter (nanocom) - Guilherme Blanco (guilhermeblanco) - Saif Eddin Gmati (azjezz) @@ -207,10 +210,7 @@ The Symfony Connect username in parenthesis allows to get more information - SpacePossum - Richard van Laak (rvanlaak) - Andreas Braun - - Hugo Alliaume (kocal) - - Valtteri R (valtzu) - Pablo Godel (pgodel) - - Florent Mata (fmata) - Alessandro Chitolina (alekitto) - Rafael Dohms (rdohms) - Roman Martinuk (a2a4) @@ -220,6 +220,7 @@ The Symfony Connect username in parenthesis allows to get more information - Jérôme Parmentier (lctrs) - Ahmed TAILOULOUTE (ahmedtai) - Simon Berger + - soyuka - Jérémy Derussé - Matthieu Napoli (mnapoli) - Tomas Votruba (tomas_votruba) @@ -240,6 +241,7 @@ The Symfony Connect username in parenthesis allows to get more information - Fabien Bourigault (fbourigault) - Olivier Dolbeau (odolbeau) - Rouven Weßling (realityking) + - Bob van de Vijver (bobvandevijver) - Daniel Burger - Ben Davies (bendavies) - YaFou @@ -254,6 +256,7 @@ The Symfony Connect username in parenthesis allows to get more information - Matthieu Ouellette-Vachon (maoueh) - Michał Pipa (michal.pipa) - Dawid Nowak + - Philipp Wahala (hifi) - Jannik Zschiesche - Amal Raghav (kertz) - Jonathan Ingram @@ -270,7 +273,6 @@ The Symfony Connect username in parenthesis allows to get more information - Sébastien Alfaiate (seb33300) - James Halsall (jaitsu) - Christian Scheb - - Bob van de Vijver (bobvandevijver) - Guillaume (guill) - Mikael Pajunen - Warnar Boekkooi (boekkooi) @@ -298,7 +300,7 @@ The Symfony Connect username in parenthesis allows to get more information - Baptiste Leduc (korbeil) - Karoly Gossler (connorhu) - Timo Bakx (timobakx) - - soyuka + - Giorgio Premi - Ruben Gonzalez (rubenrua) - Benjamin Dulau (dbenjamin) - Markus Fasselt (digilist) @@ -317,9 +319,9 @@ The Symfony Connect username in parenthesis allows to get more information - sun (sun) - Larry Garfield (crell) - Leo Feyer - - Philipp Wahala (hifi) - Victor Bocharsky (bocharsky_bw) - Nikolay Labinskiy (e-moe) + - Asis Pattisahusiwa - Martin Schuhfuß (usefulthink) - apetitpa - Guilliam Xavier @@ -334,7 +336,7 @@ The Symfony Connect username in parenthesis allows to get more information - Nate Wiebe (natewiebe13) - Joe Bennett (kralos) - Leszek Prabucki (l3l0) - - Giorgio Premi + - Wojciech Kania - Thomas Lallement (raziel057) - Yassine Guedidi (yguedidi) - François Zaninotto (fzaninotto) @@ -399,16 +401,17 @@ The Symfony Connect username in parenthesis allows to get more information - Artem Lopata - Patrick McDougle (patrick-mcdougle) - Marc Weistroff (futurecat) + - Michał (bambucha15) - Danny Berger (dpb587) - Alif Rachmawadi - Anton Chernikov (anton_ch1989) - Pierre-Yves Lebecq (pylebecq) - Benjamin Leveque (benji07) - Jordan Samouh (jordansamouh) - - Wojciech Kania - Sullivan SENECHAL (soullivaneuh) - Loick Piera (pyrech) - Uwe Jäger (uwej711) + - javaDeveloperKid - W0rma - Lynn van der Berg (kjarli) - Michaël Perrin (michael.perrin) @@ -418,11 +421,11 @@ The Symfony Connect username in parenthesis allows to get more information - Marvin Petker - GordonsLondon - Ray - - Asis Pattisahusiwa - Philipp Cordes (corphi) - Chekote - Thomas Adam - Evert Harmeling (evertharmeling) + - Anderson Müller - jdhoek - Jurica Vlahoviček (vjurica) - Bob den Otter (bopp) @@ -467,9 +470,9 @@ The Symfony Connect username in parenthesis allows to get more information - Iker Ibarguren (ikerib) - Michael Holm (hollo) - Blanchon Vincent (blanchonvincent) - - Michał (bambucha15) - Christian Schmidt - Ben Hakim + - Stiven Llupa (sllupa) - Marco Petersen (ocrampete16) - Bohan Yang (brentybh) - Vilius Grigaliūnas @@ -478,7 +481,6 @@ The Symfony Connect username in parenthesis allows to get more information - Thomas Bisignani (toma) - Florian Klein (docteurklein) - Damien Alexandre (damienalexandre) - - javaDeveloperKid - Manuel Kießling (manuelkiessling) - Alexey Kopytko (sanmai) - Warxcell (warxcell) @@ -504,7 +506,6 @@ The Symfony Connect username in parenthesis allows to get more information - Jan Decavele (jandc) - Gustavo Piltcher - Lee Rowlands - - Anderson Müller - Stepan Tanasiychuk (stfalcon) - Ivan Kurnosov - Tiago Ribeiro (fixe) @@ -540,6 +541,7 @@ The Symfony Connect username in parenthesis allows to get more information - Francesco Levorato - Vitaliy Zakharov (zakharovvi) - Tobias Sjösten (tobiassjosten) + - Michael Hirschler (mvhirsch) - Gyula Sallai (salla) - Hendrik Luup (hluup) - Inal DJAFAR (inalgnu) @@ -547,6 +549,7 @@ The Symfony Connect username in parenthesis allows to get more information - Martin Herndl (herndlm) - Dmytro Borysovskyi (dmytr0) - Johann Pardanaud + - Kai Dederichs - Pavel Kirpitsov (pavel-kirpichyov) - Robert Meijers - Artur Eshenbrener @@ -561,7 +564,6 @@ The Symfony Connect username in parenthesis allows to get more information - FORT Pierre-Louis (plfort) - Terje Bråten - Gonzalo Vilaseca (gonzalovilaseca) - - Stiven Llupa (sllupa) - Tarmo Leppänen (tarlepp) - Jakub Kucharovic (jkucharovic) - Daniel STANCU @@ -692,7 +694,6 @@ The Symfony Connect username in parenthesis allows to get more information - Desjardins Jérôme (jewome62) - Arturs Vonda - Matthew Smeets - - Michael Hirschler (mvhirsch) - Toni Rudolf (toooni) - Stefan Gehrig (sgehrig) - vagrant @@ -705,6 +706,7 @@ The Symfony Connect username in parenthesis allows to get more information - Restless-ET - Vlad Gregurco (vgregurco) - Artem Stepin (astepin) + - Jérémy DECOOL (jdecool) - Boris Vujicic (boris.vujicic) - Dries Vints - Judicaël RUFFIEUX (axanagor) @@ -722,7 +724,6 @@ The Symfony Connect username in parenthesis allows to get more information - Vitaliy Tverdokhlib (vitaliytv) - Ariel Ferrandini (aferrandini) - BASAK Semih (itsemih) - - Kai Dederichs - Dirk Pahl (dirkaholic) - Cédric Lombardot (cedriclombardot) - Jérémy REYNAUD (babeuloula) @@ -749,6 +750,7 @@ The Symfony Connect username in parenthesis allows to get more information - Roberto Espinoza (respinoza) - Pierre Rineau - Soufian EZ ZANTAR (soezz) + - Ivan Mezinov - Marek Zajac - Adam Harvey - ilyes kooli (skafandri) @@ -770,6 +772,7 @@ The Symfony Connect username in parenthesis allows to get more information - Andrey Astakhov (aast) - ReenExe - Fabian Lange (codingfabian) + - kylekatarnls (kylekatarnls) - Yoshio HANAWA - Jan van Thoor (janvt) - Joshua Nye @@ -1012,6 +1015,7 @@ The Symfony Connect username in parenthesis allows to get more information - Martins Sipenko - Guilherme Augusto Henschel - Rostyslav Kinash + - Christophe V. (cvergne) - Mardari Dorel (dorumd) - Daisuke Ohata - Vincent Simonin @@ -1021,6 +1025,7 @@ The Symfony Connect username in parenthesis allows to get more information - Andy Palmer (andyexeter) - Andrew Neil Forster (krciga22) - Stefan Warman (warmans) + - Faizan Akram Dar (faizanakram) - Tristan Maindron (tmaindron) - Behnoush Norouzali (behnoush) - Marko H. Tamminen (gzumba) @@ -1054,6 +1059,7 @@ The Symfony Connect username in parenthesis allows to get more information - Kevin SCHNEKENBURGER - Fabien Salles (blacked) - Andreas Erhard (andaris) + - alexpozzi - Michael Devery (mickadoo) - Gregor Nathanael Meyer (spackmat) - Antoine Corcy @@ -1171,15 +1177,16 @@ The Symfony Connect username in parenthesis allows to get more information - Alex Xandra Albert Sim - Sergey Yastrebov - Carson Full (carsonfull) - - kylekatarnls (kylekatarnls) - Steve Grunwell - Yuen-Chi Lian - Mathias Brodala (mbrodala) - Robert Fischer (sandoba) - Tarjei Huse (tarjei) + - mfettig - Besnik Br - Issam Raouf (iraouf) - Simon Mönch + - Sherin Bloemendaal - Jose Gonzalez - Jonathan (jlslew) - Claudio Zizza @@ -1188,6 +1195,7 @@ The Symfony Connect username in parenthesis allows to get more information - Christian Stoller (naitsirch) - Dave Marshall (davedevelopment) - Jakub Kulhan (jakubkulhan) + - Paweł Niedzielski (steveb) - Shaharia Azam - avorobiev - Gerben Oolbekkink @@ -1226,7 +1234,6 @@ The Symfony Connect username in parenthesis allows to get more information - Edvin Hultberg - shubhalgupta - Felds Liscia (felds) - - Jérémy DECOOL (jdecool) - Sergey Panteleev - Alexander Grimalovsky (flying) - Andrew Hilobok (hilobok) @@ -1276,6 +1283,7 @@ The Symfony Connect username in parenthesis allows to get more information - Cyril Pascal (paxal) - Pedro Casado (pdr33n) - Jayson Xu (superjavason) + - acoulton - DemigodCode - fago - Jan Prieser @@ -1453,6 +1461,7 @@ The Symfony Connect username in parenthesis allows to get more information - Robert Gruendler (pulse00) - Sebastian Paczkowski (sebpacz) - Simon Terrien (sterrien) + - Stephan Vierkant (svierkant) - Benoît Merlet (trompette) - Brad Jones - datibbaw @@ -1470,6 +1479,7 @@ The Symfony Connect username in parenthesis allows to get more information - Baptiste Leduc (bleduc) - soyuka - Patrick Kaufmann + - Ismail Özgün Turan (dadeather) - Mickael Perraud - Anton Dyshkant - Rafael Villa Verde @@ -1488,6 +1498,7 @@ The Symfony Connect username in parenthesis allows to get more information - Stewart Malik - Renan Taranto (renan-taranto) - Ninos Ego + - Samael tomas - Stefan Graupner (efrane) - Gemorroj (gemorroj) - Adrien Chinour @@ -1652,6 +1663,7 @@ The Symfony Connect username in parenthesis allows to get more information - Ksaveras Šakys (xawiers) - Shaun Simmons - Ariel J. Birnbaum + - Yannick - Patrick Luca Fazzi (ap3ir0n) - Danijel Obradović - Pablo Borowicz @@ -1710,6 +1722,7 @@ The Symfony Connect username in parenthesis allows to get more information - Łukasz Chruściel (lchrusciel) - Jan Vernieuwe (vernija) - Antanas Arvasevicius + - Adam Kiss - Pierre Dudoret - Michal Trojanowski - Thomas @@ -1790,6 +1803,7 @@ The Symfony Connect username in parenthesis allows to get more information - Eddie Abou-Jaoude (eddiejaoude) - Haritz Iturbe (hizai) - Nerijus Arlauskas (nercury) + - Rutger Hertogh - Diego Sapriza - Joan Cruz - inspiran @@ -1854,6 +1868,7 @@ The Symfony Connect username in parenthesis allows to get more information - Thomason, James - Dario Savella - Gordienko Vladislav + - Joas Schilling - Ener-Getick - Moza Bogdan (bogdan_moza) - johan Vlaar @@ -1913,6 +1928,7 @@ The Symfony Connect username in parenthesis allows to get more information - Takashi Kanemoto (ttskch) - Aleksei Lebedev - dlorek + - Oriol Viñals - Stuart Fyfe - Jason Schilling (chapterjason) - David de Boer (ddeboer) @@ -1963,7 +1979,6 @@ The Symfony Connect username in parenthesis allows to get more information - Ismail Turan - error56 - Felicitus - - alexpozzi - Jorge Vahldick (jvahldick) - Krzysztof Przybyszewski (kprzybyszewski) - Vladimir Mantulo (mantulo) @@ -2057,7 +2072,6 @@ The Symfony Connect username in parenthesis allows to get more information - Adam Wójs (awojs) - Justin Reherman (jreherman) - Rubén Calvo (rubencm) - - Paweł Niedzielski (steveb) - Abdul.Mohsen B. A. A - Cédric Girard - Peter Jaap Blaakmeer @@ -2242,6 +2256,7 @@ The Symfony Connect username in parenthesis allows to get more information - Luis Galeas - Bogdan Scordaliu - Martin Pärtel + - PHAS Developer - Daniel Rotter (danrot) - Frédéric Bouchery (fbouchery) - Jacek Kobus (jackks) @@ -2260,7 +2275,6 @@ The Symfony Connect username in parenthesis allows to get more information - Jeroen de Graaf - Ulrik McArdle - BiaDd - - mfettig - Oleksii Bulba - Ramon Cuñat - mboultoureau @@ -2317,6 +2331,7 @@ The Symfony Connect username in parenthesis allows to get more information - Starfox64 - Ivo Valchev - Thomas Hanke + - ffd000 - Daniel Tschinder - Thomas Durand - Arnaud CHASSEUX @@ -2330,7 +2345,6 @@ The Symfony Connect username in parenthesis allows to get more information - Rafał Muszyński (rafmus90) - Sébastien Decrême (sebdec) - Timothy Anido (xanido) - - acoulton - Mara Blaga - Rick Prent - skalpa @@ -2398,6 +2412,7 @@ The Symfony Connect username in parenthesis allows to get more information - Andrea Ruggiero (pupax) - Stan Jansen (stanjan) - Maxwell Vandervelde + - karstennilsen - kaywalker - Sebastian Ionescu - Robert Kopera @@ -2448,6 +2463,7 @@ The Symfony Connect username in parenthesis allows to get more information - tadas - Bastien Picharles - Kirk Madera + - Linas Ramanauskas - mamazu - Keith Maika - izenin @@ -2460,6 +2476,7 @@ The Symfony Connect username in parenthesis allows to get more information - Victor Garcia - Juan Mrad - Denis Yuzhanin + - k-sahara - Flavian Sierk - Rik van der Heijden - knezmilos13 @@ -2520,6 +2537,7 @@ The Symfony Connect username in parenthesis allows to get more information - tpetry - JustDylan23 - Juraj Surman + - ywisax - Martin Eckhardt - natechicago - Victor @@ -2572,6 +2590,7 @@ The Symfony Connect username in parenthesis allows to get more information - catch - aetxebeste - Roberto Guido + - ElisDN - roromix - Vitali Tsyrkin - Juga Paazmaya @@ -2953,6 +2972,7 @@ The Symfony Connect username in parenthesis allows to get more information - Patrizio Bekerle - Tom Maguire - Mateusz Lerczak + - Tim Porter - Richard Quadling - Rainrider - David Zuelke @@ -3063,6 +3083,7 @@ The Symfony Connect username in parenthesis allows to get more information - dakur - florian-michael-mast - tourze + - sam-bee - Vlad Dumitrache - wetternest - Erik van Wingerden @@ -3076,6 +3097,7 @@ The Symfony Connect username in parenthesis allows to get more information - Matheus Gontijo - Gerrit Drost - Linnaea Von Lavia + - Andrew Brown - Javan Eskander - Lenar Lõhmus - Cristian Gonzalez @@ -3307,6 +3329,7 @@ The Symfony Connect username in parenthesis allows to get more information - Karim Miladi - Michael Genereux - Greg Korba + - Camille Islasse - patrick-mcdougle - Tyler Stroud - Dariusz Czech @@ -3347,12 +3370,14 @@ The Symfony Connect username in parenthesis allows to get more information - wiseguy1394 - adam-mospan - Steve Hyde + - AbdelatifAitBara - nerdgod - Sam Williams - Ettore Del Negro - Guillaume Aveline - Adrian Philipp - James Michael DuPont + - Simone Ruggieri - Markus Tacker - Tomáš Votruba - Kasperki @@ -3420,6 +3445,7 @@ The Symfony Connect username in parenthesis allows to get more information - Ayke Halder - Thorsten Hallwas - Brian Freytag + - Arend Hummeling - Marco Pfeiffer - Alex Nostadt - Michael Squires @@ -3502,6 +3528,7 @@ The Symfony Connect username in parenthesis allows to get more information - Yendric - ADmad - Nicolas Roudaire + - Marc Jauvin - Matthias Meyer - Abdouni Karim (abdounikarim) - Temuri Takalandze (abgeo) @@ -3544,7 +3571,6 @@ The Symfony Connect username in parenthesis allows to get more information - Elliot Anderson (elliot) - Erwan Nader (ernadoo) - Fabien D. (fabd) - - Faizan Akram Dar (faizanakram) - Carsten Eilers (fnc) - Sorin Gitlan (forapathy) - Fraller Balázs (fracsi) @@ -3626,7 +3652,6 @@ The Symfony Connect username in parenthesis allows to get more information - Christopher Georg (sky-chris) - Volker (skydiablo) - Julien Sanchez (sumbobyboys) - - Stephan Vierkant (svierkant) - Ron Gähler (t-ronx) - Guillermo Gisinger (t3chn0r) - Tom Newby (tomnewbyau) @@ -3637,6 +3662,7 @@ The Symfony Connect username in parenthesis allows to get more information - Moritz Kraft (userfriendly) - Víctor Mateo (victormateo) - Vincent MOULENE (vints24) + - Verlhac Gaëtan (viviengaetan) - David Grüner (vworldat) - Eugene Babushkin (warl) - Wouter Sioen (wouter_sioen) diff --git a/composer.json b/composer.json index 9bc012d6cee49..1c53f27932fc1 100644 --- a/composer.json +++ b/composer.json @@ -138,7 +138,7 @@ "php-http/httplug": "^1.0|^2.0", "php-http/message-factory": "^1.0", "phpstan/phpdoc-parser": "^1.0", - "predis/predis": "~1.1", + "predis/predis": "^1.1|^2.0", "psr/http-client": "^1.0", "psr/simple-cache": "^1.0|^2.0", "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -176,7 +176,8 @@ "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", "Symfony\\Bundle\\": "src/Symfony/Bundle/", - "Symfony\\Component\\": "src/Symfony/Component/" + "Symfony\\Component\\": "src/Symfony/Component/", + "Symfony\\Runtime\\Symfony\\Component\\": "src/Symfony/Component/Runtime/Internal/" }, "files": [ "src/Symfony/Component/String/Resources/functions.php" @@ -185,7 +186,8 @@ "src/Symfony/Component/Intl/Resources/stubs" ], "exclude-from-classmap": [ - "**/Tests/" + "**/Tests/", + "**/bin/" ] }, "autoload-dev": { diff --git a/src/Symfony/Bridge/Doctrine/.gitattributes b/src/Symfony/Bridge/Doctrine/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bridge/Doctrine/.gitattributes +++ b/src/Symfony/Bridge/Doctrine/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bridge/Doctrine/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bridge/Doctrine/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bridge/Doctrine/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bridge/Doctrine/.github/workflows/check-subtree-split.yml b/src/Symfony/Bridge/Doctrine/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bridge/Doctrine/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php b/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php index 46e3e73b09a0b..568ba730c712f 100644 --- a/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php +++ b/src/Symfony/Bridge/Doctrine/PropertyInfo/DoctrineExtractor.php @@ -12,6 +12,7 @@ namespace Symfony\Bridge\Doctrine\PropertyInfo; use Doctrine\Common\Collections\Collection; +use Doctrine\DBAL\Types\BigIntType; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Mapping\AssociationMapping; @@ -142,6 +143,15 @@ public function getTypes(string $class, string $property, array $context = []) } $nullable = $metadata instanceof ClassMetadata && $metadata->isNullable($property); + + // DBAL 4 has a special fallback strategy for BINGINT (int -> string) + if (Types::BIGINT === $typeOfField && !method_exists(BigIntType::class, 'getName')) { + return [ + new Type(Type::BUILTIN_TYPE_INT, $nullable), + new Type(Type::BUILTIN_TYPE_STRING, $nullable), + ]; + } + $enumType = null; if (null !== $enumClass = self::getMappingValue($metadata->getFieldMapping($property), 'enumType') ?? null) { $enumType = new Type(Type::BUILTIN_TYPE_OBJECT, $nullable, $enumClass); diff --git a/src/Symfony/Bridge/Doctrine/Tests/Fixtures/MockableRepository.php b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/MockableRepository.php new file mode 100644 index 0000000000000..4ca59949345c3 --- /dev/null +++ b/src/Symfony/Bridge/Doctrine/Tests/Fixtures/MockableRepository.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bridge\Doctrine\Tests\Fixtures; + +use Doctrine\ORM\EntityRepository; + +class MockableRepository extends EntityRepository +{ + public function findByCustom() + { + } +} diff --git a/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineOpenTransactionLoggerMiddlewareTest.php b/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineOpenTransactionLoggerMiddlewareTest.php index 626c19eb4ceae..3682ad00d5085 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineOpenTransactionLoggerMiddlewareTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineOpenTransactionLoggerMiddlewareTest.php @@ -52,7 +52,7 @@ public function testMiddlewareWrapsInTransactionAndFlushes() { $this->connection->expects($this->exactly(1)) ->method('isTransactionActive') - ->will($this->onConsecutiveCalls(true, true, false)) + ->willReturn(true, true, false) ; $this->middleware->handle(new Envelope(new \stdClass()), $this->getStackMock()); diff --git a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php index 757813f017af9..d4108d42f7965 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/PropertyInfo/DoctrineExtractorTest.php @@ -16,6 +16,7 @@ use Doctrine\Common\EventManager; use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory; +use Doctrine\DBAL\Types\BigIntType; use Doctrine\DBAL\Types\Type as DBALType; use Doctrine\ORM\EntityManager; use Doctrine\ORM\Mapping\Column; @@ -162,10 +163,17 @@ public function testExtractEnum() public static function typesProvider(): array { + // DBAL 4 has a special fallback strategy for BINGINT (int -> string) + if (!method_exists(BigIntType::class, 'getName')) { + $expectedBingIntType = [new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_STRING)]; + } else { + $expectedBingIntType = [new Type(Type::BUILTIN_TYPE_STRING)]; + } + return [ ['id', [new Type(Type::BUILTIN_TYPE_INT)]], ['guid', [new Type(Type::BUILTIN_TYPE_STRING)]], - ['bigint', [new Type(Type::BUILTIN_TYPE_STRING)]], + ['bigint', $expectedBingIntType], ['time', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTime')]], ['timeImmutable', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateTimeImmutable')]], ['dateInterval', [new Type(Type::BUILTIN_TYPE_OBJECT, false, 'DateInterval')]], diff --git a/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php b/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php index f3a78dfe9226b..04c3b7f3d31fd 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php @@ -233,14 +233,11 @@ private function getManager($em, $name = null) private function getObjectManager($repository) { - $em = $this->getMockBuilder(ObjectManager::class) - ->onlyMethods(['getClassMetadata', 'getRepository']) - ->getMockForAbstractClass(); - $em->expects($this->any()) - ->method('getRepository') + $objectManager = $this->createMock(ObjectManager::class); + $objectManager->method('getRepository') ->willReturn($repository); - return $em; + return $objectManager; } private function createSchema($em) diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php index 75eae2c311d9f..bcfced4771e6f 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/Constraints/UniqueEntityValidatorTest.php @@ -28,6 +28,7 @@ use Symfony\Bridge\Doctrine\Tests\Fixtures\DoubleNameEntity; use Symfony\Bridge\Doctrine\Tests\Fixtures\DoubleNullableNameEntity; use Symfony\Bridge\Doctrine\Tests\Fixtures\Employee; +use Symfony\Bridge\Doctrine\Tests\Fixtures\MockableRepository; use Symfony\Bridge\Doctrine\Tests\Fixtures\Person; use Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity; use Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdNoToStringEntity; @@ -97,14 +98,10 @@ protected function createRegistryMock($em = null) protected function createRepositoryMock() { - $repository = $this->getMockBuilder(EntityRepository::class) + return $this->getMockBuilder(MockableRepository::class) ->disableOriginalConstructor() - ->onlyMethods(['find', 'findAll', 'findOneBy', 'findBy', 'getClassName']) - ->addMethods(['findByCustom']) - ->getMock() - ; - - return $repository; + ->onlyMethods(['find', 'findAll', 'findOneBy', 'findBy', 'getClassName', 'findByCustom']) + ->getMock(); } protected function createEntityManagerMock($repositoryMock) diff --git a/src/Symfony/Bridge/Monolog/.gitattributes b/src/Symfony/Bridge/Monolog/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bridge/Monolog/.gitattributes +++ b/src/Symfony/Bridge/Monolog/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bridge/Monolog/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bridge/Monolog/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bridge/Monolog/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bridge/Monolog/.github/workflows/check-subtree-split.yml b/src/Symfony/Bridge/Monolog/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bridge/Monolog/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bridge/Monolog/Tests/Handler/ConsoleHandlerTest.php b/src/Symfony/Bridge/Monolog/Tests/Handler/ConsoleHandlerTest.php index 4ddaddbde1218..f83599244a298 100644 --- a/src/Symfony/Bridge/Monolog/Tests/Handler/ConsoleHandlerTest.php +++ b/src/Symfony/Bridge/Monolog/Tests/Handler/ConsoleHandlerTest.php @@ -117,10 +117,7 @@ public function testVerbosityChanged() $output ->expects($this->exactly(2)) ->method('getVerbosity') - ->willReturnOnConsecutiveCalls( - OutputInterface::VERBOSITY_QUIET, - OutputInterface::VERBOSITY_DEBUG - ) + ->willReturn(OutputInterface::VERBOSITY_QUIET, OutputInterface::VERBOSITY_DEBUG) ; $handler = new ConsoleHandler($output); $this->assertFalse($handler->isHandling(['level' => Logger::NOTICE]), diff --git a/src/Symfony/Bridge/PhpUnit/.gitattributes b/src/Symfony/Bridge/PhpUnit/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bridge/PhpUnit/.gitattributes +++ b/src/Symfony/Bridge/PhpUnit/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bridge/PhpUnit/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bridge/PhpUnit/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bridge/PhpUnit/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bridge/PhpUnit/.github/workflows/check-subtree-split.yml b/src/Symfony/Bridge/PhpUnit/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bridge/PhpUnit/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php index adddfe6f76995..05c67b7b37e6e 100644 --- a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php +++ b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php @@ -368,6 +368,12 @@ private static function getPhpUnitErrorHandler() if ('PHPUnit\Util\ErrorHandler::handleError' === $eh) { return $eh; + } elseif (ErrorHandler::class === $eh) { + return function (int $errorNumber, string $errorString, string $errorFile, int $errorLine) { + ErrorHandler::instance()($errorNumber, $errorString, $errorFile, $errorLine); + + return true; + }; } foreach (debug_backtrace(\DEBUG_BACKTRACE_PROVIDE_OBJECT | \DEBUG_BACKTRACE_IGNORE_ARGS) as $frame) { diff --git a/src/Symfony/Bridge/PhpUnit/composer.json b/src/Symfony/Bridge/PhpUnit/composer.json index 9627d2b40c12c..60e3e81c759f1 100644 --- a/src/Symfony/Bridge/PhpUnit/composer.json +++ b/src/Symfony/Bridge/PhpUnit/composer.json @@ -34,7 +34,8 @@ "files": [ "bootstrap.php" ], "psr-4": { "Symfony\\Bridge\\PhpUnit\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/bin/" ] }, "bin": [ diff --git a/src/Symfony/Bridge/ProxyManager/.gitattributes b/src/Symfony/Bridge/ProxyManager/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bridge/ProxyManager/.gitattributes +++ b/src/Symfony/Bridge/ProxyManager/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bridge/ProxyManager/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bridge/ProxyManager/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bridge/ProxyManager/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bridge/ProxyManager/.github/workflows/check-subtree-split.yml b/src/Symfony/Bridge/ProxyManager/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bridge/ProxyManager/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bridge/Twig/.gitattributes b/src/Symfony/Bridge/Twig/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bridge/Twig/.gitattributes +++ b/src/Symfony/Bridge/Twig/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bridge/Twig/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bridge/Twig/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bridge/Twig/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bridge/Twig/.github/workflows/check-subtree-split.yml b/src/Symfony/Bridge/Twig/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bridge/Twig/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php b/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php index 9a7f9cd5257b7..29c68c0bcd8d0 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/HttpKernelExtensionTest.php @@ -31,14 +31,14 @@ class HttpKernelExtensionTest extends TestCase public function testFragmentWithError() { $this->expectException(\Twig\Error\RuntimeError::class); - $renderer = $this->getFragmentHandler($this->throwException(new \Exception('foo'))); + $renderer = $this->getFragmentHandler(new \Exception('foo')); $this->renderTemplate($renderer); } public function testRenderFragment() { - $renderer = $this->getFragmentHandler($this->returnValue(new Response('html'))); + $renderer = $this->getFragmentHandler(new Response('html')); $response = $this->renderTemplate($renderer); @@ -87,11 +87,17 @@ public function testGenerateFragmentUri() $this->assertSame('/_fragment?_hash=PP8%2FeEbn1pr27I9wmag%2FM6jYGVwUZ0l2h0vhh2OJ6CI%3D&_path=template%3Dfoo.html.twig%26_format%3Dhtml%26_locale%3Den%26_controller%3DSymfonyBundleFrameworkBundleControllerTemplateController%253A%253AtemplateAction', $twig->render('index')); } - protected function getFragmentHandler($return) + protected function getFragmentHandler($returnOrException): FragmentHandler { $strategy = $this->createMock(FragmentRendererInterface::class); $strategy->expects($this->once())->method('getName')->willReturn('inline'); - $strategy->expects($this->once())->method('render')->will($return); + + $mocker = $strategy->expects($this->once())->method('render'); + if ($returnOrException instanceof \Exception) { + $mocker->willThrowException($returnOrException); + } else { + $mocker->willReturn($returnOrException); + } $context = $this->createMock(RequestStack::class); diff --git a/src/Symfony/Bridge/Twig/Tests/Extension/RuntimeLoaderProvider.php b/src/Symfony/Bridge/Twig/Tests/Extension/RuntimeLoaderProvider.php index dea148192475a..b0dbf86a840cb 100644 --- a/src/Symfony/Bridge/Twig/Tests/Extension/RuntimeLoaderProvider.php +++ b/src/Symfony/Bridge/Twig/Tests/Extension/RuntimeLoaderProvider.php @@ -20,9 +20,9 @@ trait RuntimeLoaderProvider protected function registerTwigRuntimeLoader(Environment $environment, FormRenderer $renderer) { $loader = $this->createMock(RuntimeLoaderInterface::class); - $loader->expects($this->any())->method('load')->will($this->returnValueMap([ + $loader->expects($this->any())->method('load')->willReturnMap([ ['Symfony\Component\Form\FormRenderer', $renderer], - ])); + ]); $environment->addRuntimeLoader($loader); } } diff --git a/src/Symfony/Bundle/DebugBundle/.gitattributes b/src/Symfony/Bundle/DebugBundle/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bundle/DebugBundle/.gitattributes +++ b/src/Symfony/Bundle/DebugBundle/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bundle/DebugBundle/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bundle/DebugBundle/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bundle/DebugBundle/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bundle/DebugBundle/.github/workflows/check-subtree-split.yml b/src/Symfony/Bundle/DebugBundle/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bundle/DebugBundle/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bundle/FrameworkBundle/.gitattributes b/src/Symfony/Bundle/FrameworkBundle/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bundle/FrameworkBundle/.gitattributes +++ b/src/Symfony/Bundle/FrameworkBundle/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bundle/FrameworkBundle/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bundle/FrameworkBundle/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bundle/FrameworkBundle/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bundle/FrameworkBundle/.github/workflows/check-subtree-split.yml b/src/Symfony/Bundle/FrameworkBundle/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bundle/FrameworkBundle/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 731c6e7ee4b3e..f7ab7e3ed5835 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -1854,18 +1854,19 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder $container->setParameter('serializer.default_context', $defaultContext); } + $arguments = $container->getDefinition('serializer.normalizer.object')->getArguments(); + $context = []; + if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) { - $arguments = $container->getDefinition('serializer.normalizer.object')->getArguments(); - $context = ($arguments[6] ?? $defaultContext) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])]; + $context += ($arguments[6] ?? $defaultContext) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])]; $container->getDefinition('serializer.normalizer.object')->setArgument(5, null); - $container->getDefinition('serializer.normalizer.object')->setArgument(6, $context); } if ($config['max_depth_handler'] ?? false) { - $arguments = $container->getDefinition('serializer.normalizer.object')->getArguments(); - $context = ($arguments[6] ?? $defaultContext) + ['max_depth_handler' => new Reference($config['max_depth_handler'])]; - $container->getDefinition('serializer.normalizer.object')->setArgument(6, $context); + $context += ($arguments[6] ?? $defaultContext) + ['max_depth_handler' => new Reference($config['max_depth_handler'])]; } + + $container->getDefinition('serializer.normalizer.object')->setArgument(6, $context); } private function registerPropertyInfoConfiguration(ContainerBuilder $container, PhpFileLoader $loader) diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php index 63964f34f5599..7762e5a64ca86 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.php @@ -125,6 +125,8 @@ service('property_info')->ignoreOnInvalid(), service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(), null, + null, + service('property_info')->ignoreOnInvalid(), ]) ->tag('serializer.normalizer', ['priority' => -1000]) @@ -138,7 +140,6 @@ service('serializer.mapping.class_discriminator_resolver')->ignoreOnInvalid(), null, [], - service('property_info')->ignoreOnInvalid(), ]) ->alias(PropertyNormalizer::class, 'serializer.normalizer.property') diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php index dc00ef99e8210..c13d50bd23f73 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php @@ -271,7 +271,7 @@ protected function getLoader() $loader ->expects($this->exactly(7)) ->method('load') - ->willReturnOnConsecutiveCalls( + ->willReturn( $this->getCatalogue('fr', [ 'foo' => 'foo (FR)', ]), diff --git a/src/Symfony/Bundle/SecurityBundle/.gitattributes b/src/Symfony/Bundle/SecurityBundle/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bundle/SecurityBundle/.gitattributes +++ b/src/Symfony/Bundle/SecurityBundle/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bundle/SecurityBundle/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bundle/SecurityBundle/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bundle/SecurityBundle/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bundle/SecurityBundle/.github/workflows/check-subtree-split.yml b/src/Symfony/Bundle/SecurityBundle/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bundle/SecurityBundle/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Security/Factory/AbstractFactoryTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Security/Factory/AbstractFactoryTest.php index e46a36a44fbe4..f8c35cf9ece58 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Security/Factory/AbstractFactoryTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Security/Factory/AbstractFactoryTest.php @@ -145,7 +145,12 @@ public static function getSuccessHandlers() protected function callFactory($id, $config, $userProviderId, $defaultEntryPointId) { - $factory = $this->getMockForAbstractClass(AbstractFactory::class); + $factory = $this->getMockBuilder(AbstractFactory::class)->onlyMethods([ + 'createAuthProvider', + 'getListenerId', + 'getKey', + 'getPosition', + ])->getMock(); $factory ->expects($this->once()) diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/AbstractWebTestCase.php b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/AbstractWebTestCase.php index f9363e8290dc0..51d4d781fc233 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/Functional/AbstractWebTestCase.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/Functional/AbstractWebTestCase.php @@ -33,7 +33,7 @@ public static function tearDownAfterClass(): void static::deleteTmpDir(); } - public function provideSecuritySystems() + public static function provideSecuritySystems() { yield [['enable_authenticator_manager' => true]]; yield [['enable_authenticator_manager' => false]]; diff --git a/src/Symfony/Bundle/TwigBundle/.gitattributes b/src/Symfony/Bundle/TwigBundle/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bundle/TwigBundle/.gitattributes +++ b/src/Symfony/Bundle/TwigBundle/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bundle/TwigBundle/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bundle/TwigBundle/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bundle/TwigBundle/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bundle/TwigBundle/.github/workflows/check-subtree-split.yml b/src/Symfony/Bundle/TwigBundle/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bundle/TwigBundle/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bundle/WebProfilerBundle/.gitattributes b/src/Symfony/Bundle/WebProfilerBundle/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/.gitattributes +++ b/src/Symfony/Bundle/WebProfilerBundle/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Bundle/WebProfilerBundle/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Bundle/WebProfilerBundle/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Bundle/WebProfilerBundle/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Bundle/WebProfilerBundle/.github/workflows/check-subtree-split.yml b/src/Symfony/Bundle/WebProfilerBundle/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Bundle/WebProfilerBundle/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Bundle/WebProfilerBundle/Tests/Twig/WebProfilerExtensionTest.php b/src/Symfony/Bundle/WebProfilerBundle/Tests/Twig/WebProfilerExtensionTest.php index 37438ed560206..f0cf4f36a196f 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Tests/Twig/WebProfilerExtensionTest.php +++ b/src/Symfony/Bundle/WebProfilerBundle/Tests/Twig/WebProfilerExtensionTest.php @@ -15,6 +15,7 @@ use Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension; use Symfony\Component\VarDumper\Cloner\VarCloner; use Twig\Environment; +use Twig\Loader\ArrayLoader; class WebProfilerExtensionTest extends TestCase { @@ -23,7 +24,7 @@ class WebProfilerExtensionTest extends TestCase */ public function testDumpHeaderIsDisplayed(string $message, array $context, bool $dump1HasHeader, bool $dump2HasHeader) { - $twigEnvironment = $this->mockTwigEnvironment(); + $twigEnvironment = new Environment(new ArrayLoader()); $varCloner = new VarCloner(); $webProfilerExtension = new WebProfilerExtension(); @@ -44,13 +45,4 @@ public static function provideMessages(): iterable yield ['Some message {foo}', ['foo' => 'foo', 'bar' => 'bar'], true, false]; yield ['Some message {foo}', ['bar' => 'bar'], false, true]; } - - private function mockTwigEnvironment() - { - $twigEnvironment = $this->createMock(Environment::class); - - $twigEnvironment->expects($this->any())->method('getCharset')->willReturn('UTF-8'); - - return $twigEnvironment; - } } diff --git a/src/Symfony/Bundle/WebProfilerBundle/Twig/WebProfilerExtension.php b/src/Symfony/Bundle/WebProfilerBundle/Twig/WebProfilerExtension.php index 2a4e975760426..82352f5996122 100644 --- a/src/Symfony/Bundle/WebProfilerBundle/Twig/WebProfilerExtension.php +++ b/src/Symfony/Bundle/WebProfilerBundle/Twig/WebProfilerExtension.php @@ -17,6 +17,7 @@ use Twig\Extension\EscaperExtension; use Twig\Extension\ProfilerExtension; use Twig\Profiler\Profile; +use Twig\Runtime\EscaperRuntime; use Twig\TwigFunction; /** @@ -114,6 +115,12 @@ public function getName() private static function escape(Environment $env, string $s): string { + // Twig 3.10 and above + if (class_exists(EscaperRuntime::class)) { + return $env->getRuntime(EscaperRuntime::class)->escape($s); + } + + // Twig 3.9 if (method_exists(EscaperExtension::class, 'escape')) { return EscaperExtension::escape($env, $s); } diff --git a/src/Symfony/Component/Asset/.gitattributes b/src/Symfony/Component/Asset/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Asset/.gitattributes +++ b/src/Symfony/Component/Asset/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Asset/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Asset/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Asset/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Asset/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Asset/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Asset/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/BrowserKit/.gitattributes b/src/Symfony/Component/BrowserKit/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/BrowserKit/.gitattributes +++ b/src/Symfony/Component/BrowserKit/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/BrowserKit/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/BrowserKit/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/BrowserKit/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/BrowserKit/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/BrowserKit/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/BrowserKit/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Cache/.gitattributes b/src/Symfony/Component/Cache/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Cache/.gitattributes +++ b/src/Symfony/Component/Cache/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Cache/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Cache/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Cache/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Cache/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Cache/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Cache/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Cache/Traits/RedisTrait.php b/src/Symfony/Component/Cache/Traits/RedisTrait.php index af6390b9bcfa5..518a563060240 100644 --- a/src/Symfony/Component/Cache/Traits/RedisTrait.php +++ b/src/Symfony/Component/Cache/Traits/RedisTrait.php @@ -15,6 +15,8 @@ use Predis\Connection\Aggregate\ClusterInterface; use Predis\Connection\Aggregate\RedisCluster; use Predis\Connection\Aggregate\ReplicationInterface; +use Predis\Connection\Cluster\ClusterInterface as Predis2ClusterInterface; +use Predis\Connection\Cluster\RedisCluster as Predis2RedisCluster; use Predis\Response\ErrorInterface; use Predis\Response\Status; use Symfony\Component\Cache\Exception\CacheException; @@ -414,7 +416,7 @@ protected function doFetch(array $ids) $result = []; - if ($this->redis instanceof \Predis\ClientInterface && $this->redis->getConnection() instanceof ClusterInterface) { + if ($this->redis instanceof \Predis\ClientInterface && ($this->redis->getConnection() instanceof ClusterInterface || $this->redis->getConnection() instanceof Predis2ClusterInterface)) { $values = $this->pipeline(function () use ($ids) { foreach ($ids as $id) { yield 'get' => [$id]; @@ -499,7 +501,7 @@ protected function doClear(string $namespace) } $this->doDelete($keys); } - } while ($cursor = (int) $cursor); + } while ($cursor); } return $cleared; @@ -511,7 +513,7 @@ protected function doDelete(array $ids) return true; } - if ($this->redis instanceof \Predis\ClientInterface && $this->redis->getConnection() instanceof ClusterInterface) { + if ($this->redis instanceof \Predis\ClientInterface && ($this->redis->getConnection() instanceof ClusterInterface || $this->redis->getConnection() instanceof Predis2ClusterInterface)) { static $del; $del = $del ?? (class_exists(UNLINK::class) ? 'unlink' : 'del'); @@ -569,7 +571,7 @@ private function pipeline(\Closure $generator, ?object $redis = null): \Generato $ids = []; $redis = $redis ?? $this->redis; - if ($redis instanceof RedisClusterProxy || $redis instanceof \RedisCluster || ($redis instanceof \Predis\ClientInterface && $redis->getConnection() instanceof RedisCluster)) { + if ($redis instanceof RedisClusterProxy || $redis instanceof \RedisCluster || ($redis instanceof \Predis\ClientInterface && ($redis->getConnection() instanceof RedisCluster || $redis->getConnection() instanceof Predis2RedisCluster))) { // phpredis & predis don't support pipelining with RedisCluster // see https://github.com/phpredis/phpredis/blob/develop/cluster.markdown#pipelining // see https://github.com/nrk/predis/issues/267#issuecomment-123781423 @@ -631,7 +633,7 @@ private function getHosts(): array $hosts = [$this->redis]; if ($this->redis instanceof \Predis\ClientInterface) { $connection = $this->redis->getConnection(); - if ($connection instanceof ClusterInterface && $connection instanceof \Traversable) { + if (($connection instanceof ClusterInterface || $connection instanceof Predis2ClusterInterface) && $connection instanceof \Traversable) { $hosts = []; foreach ($connection as $c) { $hosts[] = new \Predis\Client($c); diff --git a/src/Symfony/Component/Cache/composer.json b/src/Symfony/Component/Cache/composer.json index e3526bb8158b4..fdf794fb3b368 100644 --- a/src/Symfony/Component/Cache/composer.json +++ b/src/Symfony/Component/Cache/composer.json @@ -35,7 +35,7 @@ "cache/integration-tests": "dev-master", "doctrine/cache": "^1.6|^2.0", "doctrine/dbal": "^2.13.1|^3|^4", - "predis/predis": "^1.1", + "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0", "symfony/config": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", diff --git a/src/Symfony/Component/Config/.gitattributes b/src/Symfony/Component/Config/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Config/.gitattributes +++ b/src/Symfony/Component/Config/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Config/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Config/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Config/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Config/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Config/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Config/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Config/Tests/Definition/BaseNodeTest.php b/src/Symfony/Component/Config/Tests/Definition/BaseNodeTest.php index 4ea8469ef3c14..d2f0593ccda38 100644 --- a/src/Symfony/Component/Config/Tests/Definition/BaseNodeTest.php +++ b/src/Symfony/Component/Config/Tests/Definition/BaseNodeTest.php @@ -36,7 +36,36 @@ public function testGetPathForChildNode(string $expected, array $params) } } - $node = $this->getMockForAbstractClass(BaseNode::class, $constructorArgs); + $node = new class(...$constructorArgs) extends BaseNode { + protected function validateType($value): void + { + } + + protected function normalizeValue($value) + { + return null; + } + + protected function mergeValues($leftSide, $rightSide) + { + return null; + } + + protected function finalizeValue($value) + { + return null; + } + + public function hasDefaultValue(): bool + { + return true; + } + + public function getDefaultValue() + { + return null; + } + }; $this->assertSame($expected, $node->getPath()); } diff --git a/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php b/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php index cae46ca8f9adf..7503dd196d7d6 100644 --- a/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php +++ b/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php @@ -25,13 +25,15 @@ public function testImportWithFileLocatorDelegation() $locatorMock = $this->createMock(FileLocatorInterface::class); $locatorMockForAdditionalLoader = $this->createMock(FileLocatorInterface::class); - $locatorMockForAdditionalLoader->expects($this->any())->method('locate')->will($this->onConsecutiveCalls( - ['path/to/file1'], // Default - ['path/to/file1', 'path/to/file2'], // First is imported - ['path/to/file1', 'path/to/file2'], // Second is imported - ['path/to/file1'], // Exception - ['path/to/file1', 'path/to/file2'] // Exception - )); + $locatorMockForAdditionalLoader->expects($this->any()) + ->method('locate') + ->willReturn( + ['path/to/file1'], + ['path/to/file1', 'path/to/file2'], + ['path/to/file1', 'path/to/file2'], + ['path/to/file1'], + ['path/to/file1', 'path/to/file2'] + ); $fileLoader = new TestFileLoader($locatorMock); $fileLoader->setSupports(false); diff --git a/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php b/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php index 8c1cd8543be19..be8c53155f0ff 100644 --- a/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php +++ b/src/Symfony/Component/Config/Tests/Util/XmlUtilsTest.php @@ -76,7 +76,8 @@ public function testLoadFile() } $mock = $this->createMock(Validator::class); - $mock->expects($this->exactly(2))->method('validate')->will($this->onConsecutiveCalls(false, true)); + $mock->expects($this->exactly(2))->method('validate') + ->willReturn(false, true); try { XmlUtils::loadFile($fixtures.'valid.xml', [$mock, 'validate']); diff --git a/src/Symfony/Component/Console/.gitattributes b/src/Symfony/Component/Console/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Console/.gitattributes +++ b/src/Symfony/Component/Console/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Console/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Console/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Console/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Console/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Console/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Console/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Console/Tests/ApplicationTest.php b/src/Symfony/Component/Console/Tests/ApplicationTest.php index bf5652ccc47f2..d58f283585e35 100644 --- a/src/Symfony/Component/Console/Tests/ApplicationTest.php +++ b/src/Symfony/Component/Console/Tests/ApplicationTest.php @@ -41,6 +41,7 @@ use Symfony\Component\Console\SignalRegistry\SignalRegistry; use Symfony\Component\Console\Terminal; use Symfony\Component\Console\Tester\ApplicationTester; +use Symfony\Component\Console\Tests\Fixtures\MockableAppliationWithTerminalWidth; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcherInterface; @@ -876,7 +877,9 @@ public function testRenderExceptionEscapesLines() public function testRenderExceptionLineBreaks() { - $application = $this->getMockBuilder(Application::class)->addMethods(['getTerminalWidth'])->getMock(); + $application = $this->getMockBuilder(MockableAppliationWithTerminalWidth::class) + ->onlyMethods(['getTerminalWidth']) + ->getMock(); $application->setAutoExit(false); $application->expects($this->any()) ->method('getTerminalWidth') diff --git a/src/Symfony/Component/Console/Tests/Fixtures/MockableAppliationWithTerminalWidth.php b/src/Symfony/Component/Console/Tests/Fixtures/MockableAppliationWithTerminalWidth.php new file mode 100644 index 0000000000000..7f094ff3c5946 --- /dev/null +++ b/src/Symfony/Component/Console/Tests/Fixtures/MockableAppliationWithTerminalWidth.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Console\Tests\Fixtures; + +use Symfony\Component\Console\Application; + +class MockableAppliationWithTerminalWidth extends Application +{ + public function getTerminalWidth(): int + { + return 0; + } +} diff --git a/src/Symfony/Component/Console/Tests/Question/QuestionTest.php b/src/Symfony/Component/Console/Tests/Question/QuestionTest.php index e6b6fbee0ed10..bf2763d779af3 100644 --- a/src/Symfony/Component/Console/Tests/Question/QuestionTest.php +++ b/src/Symfony/Component/Console/Tests/Question/QuestionTest.php @@ -157,7 +157,7 @@ public function testSetAutocompleterValuesInvalid($values) public function testSetAutocompleterValuesWithTraversable() { $question1 = new Question('Test question 1'); - $iterator1 = $this->getMockForAbstractClass(\IteratorAggregate::class); + $iterator1 = $this->createMock(\IteratorAggregate::class); $iterator1 ->expects($this->once()) ->method('getIterator') @@ -165,7 +165,7 @@ public function testSetAutocompleterValuesWithTraversable() $question1->setAutocompleterValues($iterator1); $question2 = new Question('Test question 2'); - $iterator2 = $this->getMockForAbstractClass(\IteratorAggregate::class); + $iterator2 = $this->createMock(\IteratorAggregate::class); $iterator2 ->expects($this->once()) ->method('getIterator') diff --git a/src/Symfony/Component/CssSelector/.gitattributes b/src/Symfony/Component/CssSelector/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/CssSelector/.gitattributes +++ b/src/Symfony/Component/CssSelector/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/CssSelector/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/CssSelector/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/CssSelector/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/CssSelector/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/CssSelector/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/CssSelector/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/DependencyInjection/.gitattributes b/src/Symfony/Component/DependencyInjection/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/DependencyInjection/.gitattributes +++ b/src/Symfony/Component/DependencyInjection/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/DependencyInjection/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/DependencyInjection/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/DependencyInjection/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/DependencyInjection/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/DependencyInjection/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/DependencyInjection/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Config/ContainerParametersResourceCheckerTest.php b/src/Symfony/Component/DependencyInjection/Tests/Config/ContainerParametersResourceCheckerTest.php index f13acc8f140e2..a5efc89a7c710 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Config/ContainerParametersResourceCheckerTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Config/ContainerParametersResourceCheckerTest.php @@ -46,7 +46,7 @@ public function testSupports() */ public function testIsFresh(callable $mockContainer, $expected) { - $mockContainer($this->container); + $mockContainer($this->container, $this); $this->assertSame($expected, $this->resourceChecker->isFresh($this->resource, time())); } @@ -61,9 +61,9 @@ public static function isFreshProvider() $container->method('getParameter')->with('locales')->willReturn(['nl', 'es']); }, false]; - yield 'fresh on every identical parameters' => [function (MockObject $container) { - $container->expects(self::exactly(2))->method('hasParameter')->willReturn(true); - $container->expects(self::exactly(2))->method('getParameter') + yield 'fresh on every identical parameters' => [function (MockObject $container, TestCase $testCase) { + $container->expects($testCase->exactly(2))->method('hasParameter')->willReturn(true); + $container->expects($testCase->exactly(2))->method('getParameter') ->willReturnCallback(function (...$args) { static $series = [ [['locales'], ['fr', 'en']], diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php index 8b141d2577ee3..6f15b22b95cab 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php @@ -194,6 +194,8 @@ public function testNestedBundleConfigNotAllowed() */ public function testWhenEnv() { + $this->expectNotToPerformAssertions(); + $fixtures = realpath(__DIR__.'/../Fixtures'); $container = new ContainerBuilder(); $loader = new PhpFileLoader($container, new FileLocator(), 'dev', new ConfigBuilderGenerator(sys_get_temp_dir())); diff --git a/src/Symfony/Component/DomCrawler/.gitattributes b/src/Symfony/Component/DomCrawler/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/DomCrawler/.gitattributes +++ b/src/Symfony/Component/DomCrawler/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/DomCrawler/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/DomCrawler/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/DomCrawler/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/DomCrawler/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/DomCrawler/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/DomCrawler/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Dotenv/.gitattributes b/src/Symfony/Component/Dotenv/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Dotenv/.gitattributes +++ b/src/Symfony/Component/Dotenv/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Dotenv/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Dotenv/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Dotenv/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Dotenv/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Dotenv/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Dotenv/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Dotenv/Command/DebugCommand.php b/src/Symfony/Component/Dotenv/Command/DebugCommand.php index 0585043cd9463..237d7b7cfd228 100644 --- a/src/Symfony/Component/Dotenv/Command/DebugCommand.php +++ b/src/Symfony/Component/Dotenv/Command/DebugCommand.php @@ -12,6 +12,7 @@ namespace Symfony\Component\Dotenv\Command; use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; @@ -49,97 +50,105 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } - $envFiles = $this->getEnvFiles(); - $availableFiles = array_filter($envFiles, function (string $file) { - return is_file($this->getFilePath($file)); - }); + $filePath = $this->projectDirectory.\DIRECTORY_SEPARATOR.'.env'; + $envFiles = $this->getEnvFiles($filePath); + $availableFiles = array_filter($envFiles, 'is_file'); - if (\in_array('.env.local.php', $availableFiles, true)) { + if (\in_array(sprintf('%s.local.php', $filePath), $availableFiles, true)) { $io->warning('Due to existing dump file (.env.local.php) all other dotenv files are skipped.'); } - if (is_file($this->getFilePath('.env')) && is_file($this->getFilePath('.env.dist'))) { - $io->warning('The file .env.dist gets skipped due to the existence of .env.'); + if (is_file($filePath) && is_file(sprintf('%s.dist', $filePath))) { + $io->warning(sprintf('The file %s.dist gets skipped due to the existence of %1$s.', $this->getRelativeName($filePath))); } $io->section('Scanned Files (in descending priority)'); - $io->listing(array_map(static function (string $envFile) use ($availableFiles) { + $io->listing(array_map(function (string $envFile) use ($availableFiles) { return \in_array($envFile, $availableFiles, true) - ? sprintf('✓ %s', $envFile) - : sprintf('⨯ %s', $envFile); + ? sprintf('✓ %s', $this->getRelativeName($envFile)) + : sprintf('⨯ %s', $this->getRelativeName($envFile)); }, $envFiles)); + $variables = $this->getVariables($availableFiles); + $io->section('Variables'); $io->table( - array_merge(['Variable', 'Value'], $availableFiles), - $this->getVariables($availableFiles) + array_merge(['Variable', 'Value'], array_map([$this, 'getRelativeName'], $availableFiles)), + $variables ); - $io->comment('Note real values might be different between web and CLI.'); + $io->comment('Note that values might be different between web and CLI.'); return 0; } private function getVariables(array $envFiles): array { - $dotenvVars = $_SERVER['SYMFONY_DOTENV_VARS'] ?? ''; + $variables = []; + $fileValues = []; + $dotenvVars = array_flip(explode(',', $_SERVER['SYMFONY_DOTENV_VARS'] ?? '')); - if ('' === $dotenvVars) { - return []; + foreach ($envFiles as $envFile) { + $fileValues[$envFile] = $this->loadValues($envFile); + $variables += $fileValues[$envFile]; } - $vars = explode(',', $dotenvVars); - sort($vars); + foreach ($variables as $var => $varDetails) { + $realValue = $_SERVER[$var] ?? ''; + $varDetails = [$var, ''.OutputFormatter::escape($realValue).'']; + $varSeen = !isset($dotenvVars[$var]); - $output = []; - $fileValues = []; - foreach ($vars as $var) { - $realValue = $_SERVER[$var]; - $varDetails = [$var, $realValue]; foreach ($envFiles as $envFile) { - $values = $fileValues[$envFile] ?? $fileValues[$envFile] = $this->loadValues($envFile); - - $varString = $values[$var] ?? 'n/a'; - $shortenedVar = $this->getHelper('formatter')->truncate($varString, 30); - $varDetails[] = $varString === $realValue ? ''.$shortenedVar.'' : $shortenedVar; + if (null === $value = $fileValues[$envFile][$var] ?? null) { + $varDetails[] = 'n/a'; + continue; + } + + $shortenedValue = OutputFormatter::escape($this->getHelper('formatter')->truncate($value, 30)); + $varDetails[] = $value === $realValue && !$varSeen ? ''.$shortenedValue.'' : $shortenedValue; + $varSeen = $varSeen || $value === $realValue; } - $output[] = $varDetails; + $variables[$var] = $varDetails; } - return $output; + ksort($variables); + + return $variables; } - private function getEnvFiles(): array + private function getEnvFiles(string $filePath): array { $files = [ - '.env.local.php', - sprintf('.env.%s.local', $this->kernelEnvironment), - sprintf('.env.%s', $this->kernelEnvironment), + sprintf('%s.local.php', $filePath), + sprintf('%s.%s.local', $filePath, $this->kernelEnvironment), + sprintf('%s.%s', $filePath, $this->kernelEnvironment), ]; if ('test' !== $this->kernelEnvironment) { - $files[] = '.env.local'; + $files[] = sprintf('%s.local', $filePath); } - if (!is_file($this->getFilePath('.env')) && is_file($this->getFilePath('.env.dist'))) { - $files[] = '.env.dist'; + if (!is_file($filePath) && is_file(sprintf('%s.dist', $filePath))) { + $files[] = sprintf('%s.dist', $filePath); } else { - $files[] = '.env'; + $files[] = $filePath; } return $files; } - private function getFilePath(string $file): string + private function getRelativeName(string $filePath): string { - return $this->projectDirectory.\DIRECTORY_SEPARATOR.$file; + if (str_starts_with($filePath, $this->projectDirectory)) { + return substr($filePath, \strlen($this->projectDirectory) + 1); + } + + return basename($filePath); } - private function loadValues(string $file): array + private function loadValues(string $filePath): array { - $filePath = $this->getFilePath($file); - if (str_ends_with($filePath, '.php')) { return include $filePath; } diff --git a/src/Symfony/Component/Dotenv/Tests/Command/DebugCommandTest.php b/src/Symfony/Component/Dotenv/Tests/Command/DebugCommandTest.php index b8b7e39008607..001baec0c2539 100644 --- a/src/Symfony/Component/Dotenv/Tests/Command/DebugCommandTest.php +++ b/src/Symfony/Component/Dotenv/Tests/Command/DebugCommandTest.php @@ -52,8 +52,11 @@ public function testEmptyDotEnvVarsList() ---------- ------- ------------ ------%S Variable Value .env.local .env%S ---------- ------- ------------ ------%S + FOO baz bar%S + TEST123 n/a true%S + ---------- ------- ------------ ------%S - // Note real values might be different between web and CLI.%S + // Note that values might be different between web and CLI.%S %a OUTPUT; diff --git a/src/Symfony/Component/ErrorHandler/.gitattributes b/src/Symfony/Component/ErrorHandler/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/ErrorHandler/.gitattributes +++ b/src/Symfony/Component/ErrorHandler/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/ErrorHandler/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/ErrorHandler/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/ErrorHandler/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/ErrorHandler/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/ErrorHandler/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/ErrorHandler/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/ErrorHandler/Error/FatalError.php b/src/Symfony/Component/ErrorHandler/Error/FatalError.php index 73fa3aaa0e6b8..210daba8658cc 100644 --- a/src/Symfony/Component/ErrorHandler/Error/FatalError.php +++ b/src/Symfony/Component/ErrorHandler/Error/FatalError.php @@ -33,7 +33,7 @@ public function __construct(string $message, int $code, array $error, ?int $trac } } } elseif (null !== $traceOffset) { - if (\function_exists('xdebug_get_function_stack') && $trace = @xdebug_get_function_stack()) { + if (\function_exists('xdebug_get_function_stack') && \in_array(\ini_get('xdebug.mode'), ['develop', false], true) && $trace = @xdebug_get_function_stack()) { if (0 < $traceOffset) { array_splice($trace, -$traceOffset); } diff --git a/src/Symfony/Component/EventDispatcher/.gitattributes b/src/Symfony/Component/EventDispatcher/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/EventDispatcher/.gitattributes +++ b/src/Symfony/Component/EventDispatcher/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/EventDispatcher/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/EventDispatcher/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/EventDispatcher/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/EventDispatcher/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/EventDispatcher/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/EventDispatcher/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/ExpressionLanguage/.gitattributes b/src/Symfony/Component/ExpressionLanguage/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/ExpressionLanguage/.gitattributes +++ b/src/Symfony/Component/ExpressionLanguage/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/ExpressionLanguage/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/ExpressionLanguage/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/ExpressionLanguage/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/ExpressionLanguage/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/ExpressionLanguage/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/ExpressionLanguage/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Filesystem/.gitattributes b/src/Symfony/Component/Filesystem/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Filesystem/.gitattributes +++ b/src/Symfony/Component/Filesystem/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Filesystem/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Filesystem/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Filesystem/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Filesystem/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Filesystem/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Filesystem/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Filesystem/Filesystem.php b/src/Symfony/Component/Filesystem/Filesystem.php index c5cfa47140052..700311d5843fc 100644 --- a/src/Symfony/Component/Filesystem/Filesystem.php +++ b/src/Symfony/Component/Filesystem/Filesystem.php @@ -691,7 +691,7 @@ public function dumpFile(string $filename, $content) throw new IOException(sprintf('Failed to write file "%s": ', $filename).self::$lastError, 0, null, $filename); } - self::box('chmod', $tmpFile, @fileperms($filename) ?: 0666 & ~umask()); + self::box('chmod', $tmpFile, self::box('fileperms', $filename) ?: 0666 & ~umask()); $this->rename($tmpFile, $filename, true); } finally { diff --git a/src/Symfony/Component/Filesystem/Path.php b/src/Symfony/Component/Filesystem/Path.php index 858e1623eb2cd..eb6d8ea080e8e 100644 --- a/src/Symfony/Component/Filesystem/Path.php +++ b/src/Symfony/Component/Filesystem/Path.php @@ -368,7 +368,7 @@ public static function isAbsolute(string $path): bool } // Strip scheme - if (false !== $schemeSeparatorPosition = strpos($path, '://')) { + if (false !== ($schemeSeparatorPosition = strpos($path, '://')) && 1 !== $schemeSeparatorPosition) { $path = substr($path, $schemeSeparatorPosition + 3); } diff --git a/src/Symfony/Component/Filesystem/Tests/PathTest.php b/src/Symfony/Component/Filesystem/Tests/PathTest.php index 77b9f2a2d0576..17c6142c3572e 100644 --- a/src/Symfony/Component/Filesystem/Tests/PathTest.php +++ b/src/Symfony/Component/Filesystem/Tests/PathTest.php @@ -375,6 +375,8 @@ public static function provideIsAbsolutePathTests(): \Generator yield ['C:/css/style.css', true]; yield ['D:/', true]; + yield ['C:///windows', true]; + yield ['C://test', true]; yield ['E:\\css\\style.css', true]; yield ['F:\\', true]; diff --git a/src/Symfony/Component/Filesystem/composer.json b/src/Symfony/Component/Filesystem/composer.json index 95e9f3f035ee8..5811ef5907e44 100644 --- a/src/Symfony/Component/Filesystem/composer.json +++ b/src/Symfony/Component/Filesystem/composer.json @@ -19,7 +19,9 @@ "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { "symfony/process": "^5.4|^6.4" }, "autoload": { diff --git a/src/Symfony/Component/Finder/.gitattributes b/src/Symfony/Component/Finder/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Finder/.gitattributes +++ b/src/Symfony/Component/Finder/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Finder/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Finder/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Finder/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Finder/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Finder/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Finder/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Form/.gitattributes b/src/Symfony/Component/Form/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Form/.gitattributes +++ b/src/Symfony/Component/Form/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Form/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Form/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Form/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Form/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Form/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Form/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Form/Test/Traits/ValidatorExtensionTrait.php b/src/Symfony/Component/Form/Test/Traits/ValidatorExtensionTrait.php index 721371996996b..70240fc3e4088 100644 --- a/src/Symfony/Component/Form/Test/Traits/ValidatorExtensionTrait.php +++ b/src/Symfony/Component/Form/Test/Traits/ValidatorExtensionTrait.php @@ -36,8 +36,8 @@ protected function getValidatorExtension(): ValidatorExtension $this->validator = $this->createMock(ValidatorInterface::class); $metadata = $this->getMockBuilder(ClassMetadata::class)->setConstructorArgs([''])->onlyMethods(['addPropertyConstraint'])->getMock(); - $this->validator->expects($this->any())->method('getMetadataFor')->will($this->returnValue($metadata)); - $this->validator->expects($this->any())->method('validate')->will($this->returnValue(new ConstraintViolationList())); + $this->validator->expects($this->any())->method('getMetadataFor')->willReturn($metadata); + $this->validator->expects($this->any())->method('validate')->willReturn(new ConstraintViolationList()); return new ValidatorExtension($this->validator, false); } diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php index a29873a26779e..8a37707e7cf97 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/DataTransformer/DateTimeToLocalizedStringTransformerTest.php @@ -25,14 +25,17 @@ class DateTimeToLocalizedStringTransformerTest extends BaseDateTimeTransformerTe protected $dateTimeWithoutSeconds; private $defaultLocale; + private $initialTestCaseUseException; + private $initialTestCaseErrorLevel; + protected function setUp(): void { parent::setUp(); // Normalize intl. configuration settings. if (\extension_loaded('intl')) { - $this->iniSet('intl.use_exceptions', 0); - $this->iniSet('intl.error_level', 0); + $this->initialTestCaseUseException = ini_set('intl.use_exceptions', 0); + $this->initialTestCaseErrorLevel = ini_set('intl.error_level', 0); } // Since we test against "de_AT", we need the full implementation @@ -50,6 +53,11 @@ protected function tearDown(): void $this->dateTime = null; $this->dateTimeWithoutSeconds = null; \Locale::setDefault($this->defaultLocale); + + if (\extension_loaded('intl')) { + ini_set('intl.use_exceptions', $this->initialTestCaseUseException); + ini_set('intl.error_level', $this->initialTestCaseUseException); + } } public static function dataProvider() @@ -339,11 +347,15 @@ public function testReverseTransformWrapsIntlErrorsWithErrorLevel() $this->markTestSkipped('intl extension is not loaded'); } - $this->iniSet('intl.error_level', \E_WARNING); + $errorLevel = ini_set('intl.error_level', \E_WARNING); - $this->expectException(TransformationFailedException::class); - $transformer = new DateTimeToLocalizedStringTransformer(); - $transformer->reverseTransform('12345'); + try { + $this->expectException(TransformationFailedException::class); + $transformer = new DateTimeToLocalizedStringTransformer(); + $transformer->reverseTransform('12345'); + } finally { + ini_set('intl.error_level', $errorLevel); + } } public function testReverseTransformWrapsIntlErrorsWithExceptions() @@ -352,11 +364,15 @@ public function testReverseTransformWrapsIntlErrorsWithExceptions() $this->markTestSkipped('intl extension is not loaded'); } - $this->iniSet('intl.use_exceptions', 1); + $initialUseExceptions = ini_set('intl.use_exceptions', 1); - $this->expectException(TransformationFailedException::class); - $transformer = new DateTimeToLocalizedStringTransformer(); - $transformer->reverseTransform('12345'); + try { + $this->expectException(TransformationFailedException::class); + $transformer = new DateTimeToLocalizedStringTransformer(); + $transformer->reverseTransform('12345'); + } finally { + ini_set('intl.use_exceptions', $initialUseExceptions); + } } public function testReverseTransformWrapsIntlErrorsWithExceptionsAndErrorLevel() @@ -365,12 +381,17 @@ public function testReverseTransformWrapsIntlErrorsWithExceptionsAndErrorLevel() $this->markTestSkipped('intl extension is not loaded'); } - $this->iniSet('intl.use_exceptions', 1); - $this->iniSet('intl.error_level', \E_WARNING); + $initialUseExceptions = ini_set('intl.use_exceptions', 1); + $initialErrorLevel = ini_set('intl.error_level', \E_WARNING); - $this->expectException(TransformationFailedException::class); - $transformer = new DateTimeToLocalizedStringTransformer(); - $transformer->reverseTransform('12345'); + try { + $this->expectException(TransformationFailedException::class); + $transformer = new DateTimeToLocalizedStringTransformer(); + $transformer->reverseTransform('12345'); + } finally { + ini_set('intl.use_exceptions', $initialUseExceptions); + ini_set('intl.error_level', $initialErrorLevel); + } } protected function createDateTimeTransformer(?string $inputTimezone = null, ?string $outputTimezone = null): BaseDateTimeTransformer diff --git a/src/Symfony/Component/HttpClient/.gitattributes b/src/Symfony/Component/HttpClient/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/HttpClient/.gitattributes +++ b/src/Symfony/Component/HttpClient/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/HttpClient/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/HttpClient/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/HttpClient/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/HttpClient/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/HttpClient/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/HttpClient/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/HttpFoundation/.gitattributes b/src/Symfony/Component/HttpFoundation/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/HttpFoundation/.gitattributes +++ b/src/Symfony/Component/HttpFoundation/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/HttpFoundation/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/HttpFoundation/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/HttpFoundation/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/HttpFoundation/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/HttpFoundation/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/HttpFoundation/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/HttpFoundation/HeaderUtils.php b/src/Symfony/Component/HttpFoundation/HeaderUtils.php index 3456edace0dc1..110896e1776d1 100644 --- a/src/Symfony/Component/HttpFoundation/HeaderUtils.php +++ b/src/Symfony/Component/HttpFoundation/HeaderUtils.php @@ -286,7 +286,11 @@ private static function groupParts(array $matches, string $separators, bool $fir } foreach ($partMatches as $matches) { - $parts[] = '' === $separators ? self::unquote($matches[0][0]) : self::groupParts($matches, $separators, false); + if ('' === $separators && '' !== $unquoted = self::unquote($matches[0][0])) { + $parts[] = $unquoted; + } elseif ($groupedParts = self::groupParts($matches, $separators, false)) { + $parts[] = $groupedParts; + } } return $parts; diff --git a/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php b/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php index bf4582430503e..e972d714e068a 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/AcceptHeaderTest.php @@ -41,6 +41,8 @@ public static function provideFromStringData() { return [ ['', []], + [';;;', []], + ['0', [new AcceptHeaderItem('0')]], ['gzip', [new AcceptHeaderItem('gzip')]], ['gzip,deflate,sdch', [new AcceptHeaderItem('gzip'), new AcceptHeaderItem('deflate'), new AcceptHeaderItem('sdch')]], ["gzip, deflate\t,sdch", [new AcceptHeaderItem('gzip'), new AcceptHeaderItem('deflate'), new AcceptHeaderItem('sdch')]], diff --git a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php index 47facb7762ba6..6a1402fedcfd1 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/JsonResponseTest.php @@ -294,6 +294,14 @@ public function testConstructorWithObjectWithoutToStringMethodThrowsAnException( new JsonResponse(new \stdClass(), 200, [], true); } + + public function testSetDataWithNull() + { + $response = new JsonResponse(); + $response->setData(null); + + $this->assertSame('null', $response->getContent()); + } } class JsonSerializableObject implements \JsonSerializable diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php index 4990b1a1fc091..1712dcc491fc6 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PredisClusterSessionHandlerTest.php @@ -23,6 +23,9 @@ class PredisClusterSessionHandlerTest extends AbstractRedisSessionHandlerTestCas */ protected function createRedisClient(string $host): object { - return new Client([array_combine(['host', 'port'], explode(':', getenv('REDIS_HOST')) + [1 => 6379])]); + return new Client( + [array_combine(['host', 'port'], explode(':', getenv('REDIS_HOST')) + [1 => 6379])], + ['cluster' => 'redis'] + ); } } diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php index adf074e36a03c..c67b1391d1058 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/NativeSessionStorageTest.php @@ -34,10 +34,14 @@ class NativeSessionStorageTest extends TestCase { private $savePath; + private $initialSessionSaveHandler; + private $initialSessionSavePath; + protected function setUp(): void { - $this->iniSet('session.save_handler', 'files'); - $this->iniSet('session.save_path', $this->savePath = sys_get_temp_dir().'/sftest'); + $this->initialSessionSaveHandler = ini_set('session.save_handler', 'files'); + $this->initialSessionSavePath = ini_set('session.save_path', $this->savePath = sys_get_temp_dir().'/sftest'); + if (!is_dir($this->savePath)) { mkdir($this->savePath); } @@ -52,6 +56,8 @@ protected function tearDown(): void } $this->savePath = null; + ini_set('session.save_handler', $this->initialSessionSaveHandler); + ini_set('session.save_path', $this->initialSessionSavePath); } protected function getStorage(array $options = []): NativeSessionStorage @@ -154,18 +160,26 @@ public function testRegenerationFailureDoesNotFlagStorageAsStarted() public function testDefaultSessionCacheLimiter() { - $this->iniSet('session.cache_limiter', 'nocache'); + $initialLimiter = ini_set('session.cache_limiter', 'nocache'); - new NativeSessionStorage(); - $this->assertEquals('', \ini_get('session.cache_limiter')); + try { + new NativeSessionStorage(); + $this->assertEquals('', \ini_get('session.cache_limiter')); + } finally { + ini_set('session.cache_limiter', $initialLimiter); + } } public function testExplicitSessionCacheLimiter() { - $this->iniSet('session.cache_limiter', 'nocache'); + $initialLimiter = ini_set('session.cache_limiter', 'nocache'); - new NativeSessionStorage(['cache_limiter' => 'public']); - $this->assertEquals('public', \ini_get('session.cache_limiter')); + try { + new NativeSessionStorage(['cache_limiter' => 'public']); + $this->assertEquals('public', \ini_get('session.cache_limiter')); + } finally { + ini_set('session.cache_limiter', $initialLimiter); + } } public function testCookieOptions() @@ -208,20 +222,25 @@ public function testSessionOptions() public function testSetSaveHandler() { - $this->iniSet('session.save_handler', 'files'); - $storage = $this->getStorage(); - $storage->setSaveHandler(); - $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); - $storage->setSaveHandler(null); - $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); - $storage->setSaveHandler(new SessionHandlerProxy(new NativeFileSessionHandler())); - $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); - $storage->setSaveHandler(new NativeFileSessionHandler()); - $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); - $storage->setSaveHandler(new SessionHandlerProxy(new NullSessionHandler())); - $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); - $storage->setSaveHandler(new NullSessionHandler()); - $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); + $initialSaveHandler = ini_set('session.save_handler', 'files'); + + try { + $storage = $this->getStorage(); + $storage->setSaveHandler(); + $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); + $storage->setSaveHandler(null); + $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); + $storage->setSaveHandler(new SessionHandlerProxy(new NativeFileSessionHandler())); + $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); + $storage->setSaveHandler(new NativeFileSessionHandler()); + $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); + $storage->setSaveHandler(new SessionHandlerProxy(new NullSessionHandler())); + $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); + $storage->setSaveHandler(new NullSessionHandler()); + $this->assertInstanceOf(SessionHandlerProxy::class, $storage->getSaveHandler()); + } finally { + ini_set('session.save_handler', $initialSaveHandler); + } } public function testStarted() diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php index e2fb93ebcc000..80d65651868ed 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/PhpBridgeSessionStorageTest.php @@ -30,10 +30,14 @@ class PhpBridgeSessionStorageTest extends TestCase { private $savePath; + private $initialSessionSaveHandler; + private $initialSessionSavePath; + protected function setUp(): void { - $this->iniSet('session.save_handler', 'files'); - $this->iniSet('session.save_path', $this->savePath = sys_get_temp_dir().'/sftest'); + $this->initialSessionSaveHandler = ini_set('session.save_handler', 'files'); + $this->initialSessionSavePath = ini_set('session.save_path', $this->savePath = sys_get_temp_dir().'/sftest'); + if (!is_dir($this->savePath)) { mkdir($this->savePath); } @@ -48,6 +52,8 @@ protected function tearDown(): void } $this->savePath = null; + ini_set('session.save_handler', $this->initialSessionSaveHandler); + ini_set('session.save_path', $this->initialSessionSavePath); } protected function getStorage(): PhpBridgeSessionStorage diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php index fde7a4a0aef71..742779c50e5a7 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Proxy/AbstractProxyTest.php @@ -29,7 +29,7 @@ class AbstractProxyTest extends TestCase protected function setUp(): void { - $this->proxy = $this->getMockForAbstractClass(AbstractProxy::class); + $this->proxy = new class() extends AbstractProxy {}; } protected function tearDown(): void diff --git a/src/Symfony/Component/HttpFoundation/composer.json b/src/Symfony/Component/HttpFoundation/composer.json index cb8d59ffed0d5..a2e43a99cfaae 100644 --- a/src/Symfony/Component/HttpFoundation/composer.json +++ b/src/Symfony/Component/HttpFoundation/composer.json @@ -22,7 +22,7 @@ "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "predis/predis": "~1.0", + "predis/predis": "^1.0|^2.0", "symfony/cache": "^4.4|^5.0|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", diff --git a/src/Symfony/Component/HttpKernel/.gitattributes b/src/Symfony/Component/HttpKernel/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/HttpKernel/.gitattributes +++ b/src/Symfony/Component/HttpKernel/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/HttpKernel/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/HttpKernel/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/HttpKernel/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/HttpKernel/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/HttpKernel/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/HttpKernel/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index d4fe96b6b7b56..d25647c87d157 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -78,11 +78,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl */ private static $freshCache = []; - public const VERSION = '5.4.39'; - public const VERSION_ID = 50439; + public const VERSION = '5.4.40'; + public const VERSION_ID = 50440; public const MAJOR_VERSION = 5; public const MINOR_VERSION = 4; - public const RELEASE_VERSION = 39; + public const RELEASE_VERSION = 40; public const EXTRA_VERSION = ''; public const END_OF_MAINTENANCE = '11/2024'; diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/ErrorListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/ErrorListenerTest.php index 623b50cd0cd44..e0505f7f4115d 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/ErrorListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/ErrorListenerTest.php @@ -54,21 +54,25 @@ public function testConstruct() */ public function testHandleWithoutLogger($event, $event2) { - $this->iniSet('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul'); - - $l = new ErrorListener('foo'); - $l->logKernelException($event); - $l->onKernelException($event); - - $this->assertEquals(new Response('foo'), $event->getResponse()); + $initialErrorLog = ini_set('error_log', file_exists('/dev/null') ? '/dev/null' : 'nul'); try { - $l->logKernelException($event2); - $l->onKernelException($event2); - $this->fail('RuntimeException expected'); - } catch (\RuntimeException $e) { - $this->assertSame('bar', $e->getMessage()); - $this->assertSame('foo', $e->getPrevious()->getMessage()); + $l = new ErrorListener('foo'); + $l->logKernelException($event); + $l->onKernelException($event); + + $this->assertEquals(new Response('foo'), $event->getResponse()); + + try { + $l->logKernelException($event2); + $l->onKernelException($event2); + $this->fail('RuntimeException expected'); + } catch (\RuntimeException $e) { + $this->assertSame('bar', $e->getMessage()); + $this->assertSame('foo', $e->getPrevious()->getMessage()); + } + } finally { + ini_set('error_log', $initialErrorLog); } } diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php index f3265823a5765..7b3cc8159257b 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php @@ -21,6 +21,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\SessionFactory; +use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorageFactory; use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorageFactory; @@ -45,7 +46,7 @@ class SessionListenerTest extends TestCase public function testSessionCookieOptions(array $phpSessionOptions, array $sessionOptions, array $expectedSessionOptions) { $session = $this->createMock(Session::class); - $session->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->method('getUsageIndex')->willReturn(0, 1); $session->method('getId')->willReturn('123456'); $session->method('getName')->willReturn('PHPSESSID'); $session->method('save'); @@ -338,7 +339,13 @@ public function testSessionCookieSetWhenOtherNativeVariablesSet() public function testOnlyTriggeredOnMainRequest() { - $listener = $this->getMockForAbstractClass(AbstractSessionListener::class); + $listener = new class() extends AbstractSessionListener { + protected function getSession(): ?SessionInterface + { + return null; + } + }; + $event = $this->createMock(RequestEvent::class); $event->expects($this->once())->method('isMainRequest')->willReturn(false); $event->expects($this->never())->method('getRequest'); @@ -398,7 +405,7 @@ public function testSessionUsesFactory() public function testResponseIsPrivateIfSessionStarted() { $session = $this->createMock(Session::class); - $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->expects($this->exactly(2))->method('getUsageIndex')->willReturn(0, 1); $container = new Container(); $container->set('initialized_session', $session); @@ -423,7 +430,7 @@ public function testResponseIsPrivateIfSessionStarted() public function testResponseIsStillPublicIfSessionStartedAndHeaderPresent() { $session = $this->createMock(Session::class); - $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->expects($this->exactly(2))->method('getUsageIndex')->willReturn(0, 1); $container = new Container(); $container->set('initialized_session', $session); @@ -450,7 +457,7 @@ public function testResponseIsStillPublicIfSessionStartedAndHeaderPresent() public function testSessionSaveAndResponseHasSessionCookie() { $session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock(); - $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->expects($this->exactly(2))->method('getUsageIndex')->willReturn(0, 1); $session->expects($this->exactly(1))->method('getId')->willReturn('123456'); $session->expects($this->exactly(1))->method('getName')->willReturn('PHPSESSID'); $session->expects($this->exactly(1))->method('save'); @@ -535,7 +542,7 @@ public function testUninitializedSessionWithoutInitializedSession() public function testResponseHeadersMaxAgeAndExpiresNotBeOverridenIfSessionStarted() { $session = $this->createMock(Session::class); - $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->expects($this->exactly(2))->method('getUsageIndex')->willReturn(0, 1); $container = new Container(); $container->set('initialized_session', $session); @@ -565,7 +572,7 @@ public function testResponseHeadersMaxAgeAndExpiresNotBeOverridenIfSessionStarte public function testResponseHeadersMaxAgeAndExpiresDefaultValuesIfSessionStarted() { $session = $this->createMock(Session::class); - $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->expects($this->exactly(2))->method('getUsageIndex')->willReturn(0, 1); $container = new Container(); $container->set('initialized_session', $session); @@ -618,7 +625,7 @@ public function testSurrogateMainRequestIsPublic() { $session = $this->createMock(Session::class); $session->expects($this->exactly(1))->method('getName')->willReturn('PHPSESSID'); - $session->expects($this->exactly(4))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1, 1, 1)); + $session->expects($this->exactly(4))->method('getUsageIndex')->willReturn(0, 1, 1, 1); $container = new Container(); $container->set('initialized_session', $session); @@ -715,7 +722,7 @@ public function testGetSessionSetsSessionOnMainRequest() public function testSessionUsageExceptionIfStatelessAndSessionUsed() { $session = $this->createMock(Session::class); - $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->expects($this->exactly(2))->method('getUsageIndex')->willReturn(0, 1); $container = new Container(); $container->set('initialized_session', $session); @@ -734,7 +741,7 @@ public function testSessionUsageExceptionIfStatelessAndSessionUsed() public function testSessionUsageLogIfStatelessAndSessionUsed() { $session = $this->createMock(Session::class); - $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->expects($this->exactly(2))->method('getUsageIndex')->willReturn(0, 1); $logger = $this->createMock(LoggerInterface::class); $logger->expects($this->exactly(1))->method('warning'); @@ -759,7 +766,7 @@ public function testSessionIsSavedWhenUnexpectedSessionExceptionThrown() $session->expects($this->exactly(1))->method('getId')->willReturn('123456'); $session->expects($this->exactly(1))->method('getName')->willReturn('PHPSESSID'); $session->method('isStarted')->willReturn(true); - $session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1)); + $session->expects($this->exactly(2))->method('getUsageIndex')->willReturn(0, 1); $session->expects($this->exactly(1))->method('save'); $container = new Container(); diff --git a/src/Symfony/Component/HttpKernel/Tests/EventListener/TestSessionListenerTest.php b/src/Symfony/Component/HttpKernel/Tests/EventListener/TestSessionListenerTest.php index 7e42653dffb69..fa95e67ed141b 100644 --- a/src/Symfony/Component/HttpKernel/Tests/EventListener/TestSessionListenerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/EventListener/TestSessionListenerTest.php @@ -45,11 +45,21 @@ class TestSessionListenerTest extends TestCase protected function setUp(): void { - $this->listener = $this->getMockForAbstractClass(AbstractTestSessionListener::class); $this->session = $this->getSession(); - $this->listener->expects($this->any()) - ->method('getSession') - ->willReturn($this->session); + $this->listener = new class($this->session) extends AbstractTestSessionListener { + private $session; + + public function __construct($session) + { + parent::__construct(); + $this->session = $session; + } + + public function getSession(): ?SessionInterface + { + return $this->session; + } + }; } public function testShouldSaveMainRequestSession() diff --git a/src/Symfony/Component/HttpKernel/Tests/Fixtures/KernelForTestWithLoadClassCache.php b/src/Symfony/Component/HttpKernel/Tests/Fixtures/KernelForTestWithLoadClassCache.php new file mode 100644 index 0000000000000..080953fe02afd --- /dev/null +++ b/src/Symfony/Component/HttpKernel/Tests/Fixtures/KernelForTestWithLoadClassCache.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpKernel\Tests\Fixtures; + +class KernelForTestWithLoadClassCache extends KernelForTest +{ + public function doLoadClassCache(): void + { + } +} diff --git a/src/Symfony/Component/HttpKernel/Tests/Fixtures/MockableUploadFileWithClientSize.php b/src/Symfony/Component/HttpKernel/Tests/Fixtures/MockableUploadFileWithClientSize.php new file mode 100644 index 0000000000000..406f07a283fd3 --- /dev/null +++ b/src/Symfony/Component/HttpKernel/Tests/Fixtures/MockableUploadFileWithClientSize.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpKernel\Tests\Fixtures; + +use Symfony\Component\HttpFoundation\File\UploadedFile; + +class MockableUploadFileWithClientSize extends UploadedFile +{ + public function getClientSize(): int + { + return 0; + } +} diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php index 1d0eb90bf6fdb..8e083e14a2b1f 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/FragmentHandlerTest.php @@ -43,14 +43,14 @@ public function testRenderWhenRendererDoesNotExist() public function testRenderWithUnknownRenderer() { $this->expectException(\InvalidArgumentException::class); - $handler = $this->getHandler($this->returnValue(new Response('foo'))); + $handler = $this->getHandler(new Response('foo')); $handler->render('/', 'bar'); } public function testDeliverWithUnsuccessfulResponse() { - $handler = $this->getHandler($this->returnValue(new Response('foo', 404))); + $handler = $this->getHandler(new Response('foo', 404)); try { $handler->render('/', 'foo'); $this->fail('->render() throws a \RuntimeException exception if response is not successful'); @@ -70,7 +70,7 @@ public function testRender() { $expectedRequest = Request::create('/'); $handler = $this->getHandler( - $this->returnValue(new Response('foo')), + new Response('foo'), [ '/', $this->callback(function (Request $request) use ($expectedRequest) { @@ -97,7 +97,7 @@ protected function getHandler($returnValue, $arguments = []) $e = $renderer ->expects($this->any()) ->method('render') - ->will($returnValue) + ->willReturn($returnValue) ; if ($arguments) { diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php index 69bd7445acfd6..168957c1c089a 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/InlineFragmentRendererTest.php @@ -33,14 +33,14 @@ class InlineFragmentRendererTest extends TestCase { public function testRender() { - $strategy = new InlineFragmentRenderer($this->getKernel($this->returnValue(new Response('foo')))); + $strategy = new InlineFragmentRenderer($this->getKernel(new Response('foo'))); $this->assertEquals('foo', $strategy->render('/', Request::create('/'))->getContent()); } public function testRenderWithControllerReference() { - $strategy = new InlineFragmentRenderer($this->getKernel($this->returnValue(new Response('foo')))); + $strategy = new InlineFragmentRenderer($this->getKernel(new Response('foo'))); $this->assertEquals('foo', $strategy->render(new ControllerReference('main_controller', [], []), Request::create('/'))->getContent()); } @@ -81,7 +81,7 @@ public function testRenderExceptionNoIgnoreErrors() $dispatcher = $this->createMock(EventDispatcherInterface::class); $dispatcher->expects($this->never())->method('dispatch'); - $strategy = new InlineFragmentRenderer($this->getKernel($this->throwException(new \RuntimeException('foo'))), $dispatcher); + $strategy = new InlineFragmentRenderer($this->getKernel(new \RuntimeException('foo')), $dispatcher); $this->assertEquals('foo', $strategy->render('/', Request::create('/'))->getContent()); } @@ -89,7 +89,7 @@ public function testRenderExceptionNoIgnoreErrors() public function testRenderExceptionIgnoreErrors() { $exception = new \RuntimeException('foo'); - $kernel = $this->getKernel($this->throwException($exception)); + $kernel = $this->getKernel($exception); $request = Request::create('/'); $expectedEvent = new ExceptionEvent($kernel, $request, $kernel::SUB_REQUEST, $exception); $dispatcher = $this->createMock(EventDispatcherInterface::class); @@ -102,10 +102,17 @@ public function testRenderExceptionIgnoreErrors() public function testRenderExceptionIgnoreErrorsWithAlt() { - $strategy = new InlineFragmentRenderer($this->getKernel($this->onConsecutiveCalls( - $this->throwException(new \RuntimeException('foo')), - $this->returnValue(new Response('bar')) - ))); + $strategy = new InlineFragmentRenderer($this->getKernel($this->returnCallback(function () { + static $firstCall = true; + + if ($firstCall) { + $firstCall = false; + + throw new \RuntimeException('foo'); + } + + return new Response('bar'); + }))); $this->assertEquals('bar', $strategy->render('/', Request::create('/'), ['ignore_errors' => true, 'alt' => '/foo'])->getContent()); } @@ -113,12 +120,17 @@ public function testRenderExceptionIgnoreErrorsWithAlt() private function getKernel($returnValue) { $kernel = $this->createMock(HttpKernelInterface::class); - $kernel + $mocker = $kernel ->expects($this->any()) ->method('handle') - ->will($returnValue) ; + if ($returnValue instanceof \Exception) { + $mocker->willThrowException($returnValue); + } else { + $mocker->willReturn(...(\is_array($returnValue) ? $returnValue : [$returnValue])); + } + return $kernel; } diff --git a/src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php b/src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php index 937c23d869d8c..05c6325915668 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fragment/RoutableFragmentRendererTest.php @@ -75,7 +75,7 @@ public static function getGenerateFragmentUriDataWithNonScalar() private function callGenerateFragmentUriMethod(ControllerReference $reference, Request $request, $absolute = false) { - $renderer = $this->getMockForAbstractClass(RoutableFragmentRenderer::class); + $renderer = $this->createStub(RoutableFragmentRenderer::class); $r = new \ReflectionObject($renderer); $m = $r->getMethod('generateFragmentUri'); $m->setAccessible(true); diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpCache/EsiTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpCache/EsiTest.php index e876f28189087..677d38be62896 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpCache/EsiTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpCache/EsiTest.php @@ -245,7 +245,7 @@ protected function getCache($request, $response) if (\is_array($response)) { $cache->expects($this->any()) ->method('handle') - ->will($this->onConsecutiveCalls(...$response)) + ->willReturn(...$response) ; } else { $cache->expects($this->any()) diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpCache/SsiTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpCache/SsiTest.php index 97cc8fccd03d0..15e6ebcaee5c6 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpCache/SsiTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpCache/SsiTest.php @@ -201,7 +201,7 @@ protected function getCache($request, $response) if (\is_array($response)) { $cache->expects($this->any()) ->method('handle') - ->will($this->onConsecutiveCalls(...$response)) + ->willReturn(...$response) ; } else { $cache->expects($this->any()) diff --git a/src/Symfony/Component/HttpKernel/Tests/HttpKernelBrowserTest.php b/src/Symfony/Component/HttpKernel/Tests/HttpKernelBrowserTest.php index 55963a16c391e..9092c3bf4663d 100644 --- a/src/Symfony/Component/HttpKernel/Tests/HttpKernelBrowserTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/HttpKernelBrowserTest.php @@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\StreamedResponse; use Symfony\Component\HttpKernel\HttpKernelBrowser; +use Symfony\Component\HttpKernel\Tests\Fixtures\MockableUploadFileWithClientSize; use Symfony\Component\HttpKernel\Tests\Fixtures\TestClient; /** @@ -153,10 +154,9 @@ public function testUploadedFileWhenSizeExceedsUploadMaxFileSize() $client = new HttpKernelBrowser($kernel); $file = $this - ->getMockBuilder(UploadedFile::class) + ->getMockBuilder(MockableUploadFileWithClientSize::class) ->setConstructorArgs([$source, 'original', 'mime/original', \UPLOAD_ERR_OK, true]) - ->onlyMethods(['getSize']) - ->addMethods(['getClientSize']) + ->onlyMethods(['getSize', 'getClientSize']) ->getMock() ; /* should be modified when the getClientSize will be removed */ diff --git a/src/Symfony/Component/HttpKernel/Tests/KernelTest.php b/src/Symfony/Component/HttpKernel/Tests/KernelTest.php index 74cd34cde3131..6701555633a88 100644 --- a/src/Symfony/Component/HttpKernel/Tests/KernelTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/KernelTest.php @@ -30,6 +30,7 @@ use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\Kernel; use Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTest; +use Symfony\Component\HttpKernel\Tests\Fixtures\KernelForTestWithLoadClassCache; use Symfony\Component\HttpKernel\Tests\Fixtures\KernelWithoutBundles; use Symfony\Component\HttpKernel\Tests\Fixtures\ResettableService; @@ -148,7 +149,7 @@ public function testBootSetsTheBootedFlagToTrue() public function testClassCacheIsNotLoadedByDefault() { - $kernel = $this->getKernel(['initializeBundles'], [], false, ['doLoadClassCache']); + $kernel = $this->getKernel(['initializeBundles', 'doLoadClassCache'], [], false, KernelForTestWithLoadClassCache::class); $kernel->expects($this->never()) ->method('doLoadClassCache'); @@ -400,7 +401,7 @@ public function testLocateResourceOnDirectories() $kernel ->expects($this->exactly(2)) ->method('getBundle') - ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle', null, null, 'Bundle1Bundle')) + ->willReturn($this->getBundle(__DIR__.'/Fixtures/Bundle1Bundle', null, 'Bundle1Bundle')) ; $this->assertEquals( @@ -417,8 +418,8 @@ public function testInitializeBundleThrowsExceptionWhenRegisteringTwoBundlesWith { $this->expectException(\LogicException::class); $this->expectExceptionMessage('Trying to register two bundles with the same name "DuplicateName"'); - $fooBundle = $this->getBundle(__DIR__.'/Fixtures/FooBundle', null, 'FooBundle', 'DuplicateName'); - $barBundle = $this->getBundle(__DIR__.'/Fixtures/BarBundle', null, 'BarBundle', 'DuplicateName'); + $fooBundle = $this->getBundle(__DIR__.'/Fixtures/FooBundle', 'FooBundle', 'DuplicateName'); + $barBundle = $this->getBundle(__DIR__.'/Fixtures/BarBundle', 'BarBundle', 'DuplicateName'); $kernel = $this->getKernel([], [$fooBundle, $barBundle]); $kernel->boot(); @@ -628,11 +629,10 @@ public function getContainerClass(): string /** * Returns a mock for the BundleInterface. */ - protected function getBundle($dir = null, $parent = null, $className = null, $bundleName = null): BundleInterface + protected function getBundle($dir = null, $className = null, $bundleName = null): BundleInterface { $bundle = $this ->getMockBuilder(BundleInterface::class) - ->onlyMethods(['getPath', 'getName']) ->disableOriginalConstructor() ; @@ -640,7 +640,7 @@ protected function getBundle($dir = null, $parent = null, $className = null, $bu $bundle->setMockClassName($className); } - $bundle = $bundle->getMockForAbstractClass(); + $bundle = $bundle->getMock(); $bundle ->expects($this->any()) @@ -663,20 +663,16 @@ protected function getBundle($dir = null, $parent = null, $className = null, $bu * @param array $methods Additional methods to mock (besides the abstract ones) * @param array $bundles Bundles to register */ - protected function getKernel(array $methods = [], array $bundles = [], bool $debug = false, array $methodsToAdd = []): Kernel + protected function getKernel(array $methods = [], array $bundles = [], bool $debug = false, string $kernelClass = KernelForTest::class): Kernel { $methods[] = 'registerBundles'; $kernelMockBuilder = $this - ->getMockBuilder(KernelForTest::class) + ->getMockBuilder($kernelClass) ->onlyMethods($methods) ->setConstructorArgs(['test', $debug]) ; - if (0 !== \count($methodsToAdd)) { - $kernelMockBuilder->addMethods($methodsToAdd); - } - $kernel = $kernelMockBuilder->getMock(); $kernel->expects($this->any()) ->method('registerBundles') diff --git a/src/Symfony/Component/HttpKernel/Tests/UriSignerTest.php b/src/Symfony/Component/HttpKernel/Tests/UriSignerTest.php index 4801776cce146..8359918815daa 100644 --- a/src/Symfony/Component/HttpKernel/Tests/UriSignerTest.php +++ b/src/Symfony/Component/HttpKernel/Tests/UriSignerTest.php @@ -43,14 +43,19 @@ public function testCheck() public function testCheckWithDifferentArgSeparator() { - $this->iniSet('arg_separator.output', '&'); - $signer = new UriSigner('foobar'); - - $this->assertSame( - 'http://example.com/foo?_hash=rIOcC%2FF3DoEGo%2FvnESjSp7uU9zA9S%2F%2BOLhxgMexoPUM%3D&baz=bay&foo=bar', - $signer->sign('http://example.com/foo?foo=bar&baz=bay') - ); - $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar&baz=bay'))); + $initialSeparatorOutput = ini_set('arg_separator.output', '&'); + + try { + $signer = new UriSigner('foobar'); + + $this->assertSame( + 'http://example.com/foo?_hash=rIOcC%2FF3DoEGo%2FvnESjSp7uU9zA9S%2F%2BOLhxgMexoPUM%3D&baz=bay&foo=bar', + $signer->sign('http://example.com/foo?foo=bar&baz=bay') + ); + $this->assertTrue($signer->check($signer->sign('http://example.com/foo?foo=bar&baz=bay'))); + } finally { + ini_set('arg_separator.output', $initialSeparatorOutput); + } } public function testCheckWithRequest() diff --git a/src/Symfony/Component/Inflector/.gitattributes b/src/Symfony/Component/Inflector/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Inflector/.gitattributes +++ b/src/Symfony/Component/Inflector/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Inflector/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Inflector/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Inflector/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Inflector/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Inflector/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Inflector/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Intl/.gitattributes b/src/Symfony/Component/Intl/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Intl/.gitattributes +++ b/src/Symfony/Component/Intl/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Intl/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Intl/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Intl/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Intl/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Intl/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Intl/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Ldap/.gitattributes b/src/Symfony/Component/Ldap/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Ldap/.gitattributes +++ b/src/Symfony/Component/Ldap/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Ldap/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Ldap/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Ldap/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Ldap/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Ldap/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Ldap/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Ldap/Adapter/ExtLdap/UpdateOperation.php b/src/Symfony/Component/Ldap/Adapter/ExtLdap/UpdateOperation.php index cb57c1d6296ea..dc98896ab82e6 100644 --- a/src/Symfony/Component/Ldap/Adapter/ExtLdap/UpdateOperation.php +++ b/src/Symfony/Component/Ldap/Adapter/ExtLdap/UpdateOperation.php @@ -48,10 +48,15 @@ public function __construct(int $operationType, string $attribute, ?array $value public function toArray(): array { - return [ + $op = [ 'attrib' => $this->attribute, 'modtype' => $this->operationType, - 'values' => $this->values, ]; + + if (\LDAP_MODIFY_BATCH_REMOVE_ALL !== $this->operationType) { + $op['values'] = $this->values; + } + + return $op; } } diff --git a/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php b/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php index f849b4bf25f23..21737afda3c2a 100644 --- a/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php +++ b/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php @@ -266,6 +266,23 @@ public function testLdapAddAttributeValuesError() $entryManager->addAttributeValues($entry, 'mail', $entry->getAttribute('mail')); } + public function testLdapApplyOperationsRemoveAll() + { + $entryManager = $this->adapter->getEntryManager(); + + $result = $this->executeSearchQuery(1); + $entry = $result[0]; + + $entryManager->applyOperations($entry->getDn(), [new UpdateOperation(\LDAP_MODIFY_BATCH_REMOVE_ALL, 'mail', null)]); + + $result = $this->executeSearchQuery(1); + $entry = $result[0]; + + $this->assertNull($entry->getAttribute('mail')); + + $entryManager->addAttributeValues($entry, 'mail', ['fabpot@symfony.com', 'fabien@potencier.com']); + } + public function testLdapApplyOperationsRemoveAllWithArrayError() { $entryManager = $this->adapter->getEntryManager(); diff --git a/src/Symfony/Component/Lock/.gitattributes b/src/Symfony/Component/Lock/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Lock/.gitattributes +++ b/src/Symfony/Component/Lock/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Lock/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Lock/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Lock/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Lock/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Lock/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Lock/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Lock/Tests/LockTest.php b/src/Symfony/Component/Lock/Tests/LockTest.php index ee019a1d8db51..0b0349e81b5dd 100644 --- a/src/Symfony/Component/Lock/Tests/LockTest.php +++ b/src/Symfony/Component/Lock/Tests/LockTest.php @@ -39,7 +39,7 @@ public function testAcquireNoBlocking() ->method('save'); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquire(false)); } @@ -55,7 +55,7 @@ public function testAcquireNoBlockingWithPersistingStoreInterface() ->method('save'); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquire(false)); } @@ -71,7 +71,7 @@ public function testAcquireBlockingWithPersistingStoreInterface() ->method('save'); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquire(true)); } @@ -93,7 +93,7 @@ public function testAcquireBlockingRetryWithPersistingStoreInterface() }); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquire(true)); } @@ -110,7 +110,7 @@ public function testAcquireReturnsFalse() ->willThrowException(new LockConflictedException()); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertFalse($lock->acquire(false)); } @@ -127,7 +127,7 @@ public function testAcquireReturnsFalseStoreInterface() ->willThrowException(new LockConflictedException()); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertFalse($lock->acquire(false)); } @@ -146,7 +146,7 @@ public function testAcquireBlockingWithBlockingStoreInterface() ->method('waitAndSave'); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquire(true)); } @@ -166,7 +166,7 @@ public function testAcquireSetsTtl() ->with($key, 10); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $lock->acquire(); } @@ -183,7 +183,7 @@ public function testRefresh() ->with($key, 10); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $lock->refresh(); } @@ -200,7 +200,7 @@ public function testRefreshCustom() ->with($key, 20); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $lock->refresh(20); } @@ -214,7 +214,7 @@ public function testIsAquired() $store ->method('exists') ->with($key) - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->isAcquired()); } @@ -267,8 +267,8 @@ public function testReleaseOnDestruction() $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false) - ; + ->willReturn(true, false); + $store ->expects($this->once()) ->method('delete') @@ -286,8 +286,8 @@ public function testNoAutoReleaseWhenNotConfigured() $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false) - ; + ->willReturn(true, false); + $store ->expects($this->never()) ->method('delete') @@ -313,7 +313,8 @@ public function testReleaseThrowsExceptionWhenDeletionFail() $store ->expects($this->never()) ->method('exists') - ->with($key); + ->with($key) + ->willReturn(true); $lock->release(); } @@ -426,7 +427,7 @@ public function testAcquireReadNoBlockingWithSharedLockStoreInterface() ->method('saveRead'); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquireRead(false)); } @@ -534,7 +535,7 @@ public function testAcquireReadBlockingWithBlockingSharedLockStoreInterface() ->method('waitAndSaveRead'); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquireRead(true)); } @@ -556,7 +557,7 @@ public function testAcquireReadBlockingWithSharedLockStoreInterface() }); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquireRead(true)); } @@ -572,7 +573,7 @@ public function testAcquireReadBlockingWithBlockingLockStoreInterface() ->method('waitAndSave'); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquireRead(true)); } @@ -594,7 +595,7 @@ public function testAcquireReadBlockingWithPersistingStoreInterface() }); $store ->method('exists') - ->willReturnOnConsecutiveCalls(true, false); + ->willReturn(true, false); $this->assertTrue($lock->acquireRead(true)); } diff --git a/src/Symfony/Component/Lock/composer.json b/src/Symfony/Component/Lock/composer.json index b7e2d0c0d87ea..f2558dbb7459a 100644 --- a/src/Symfony/Component/Lock/composer.json +++ b/src/Symfony/Component/Lock/composer.json @@ -23,7 +23,7 @@ }, "require-dev": { "doctrine/dbal": "^2.13|^3|^4", - "predis/predis": "~1.0" + "predis/predis": "^1.0|^2.0" }, "conflict": { "doctrine/dbal": "<2.13" diff --git a/src/Symfony/Component/Mailer/.gitattributes b/src/Symfony/Component/Mailer/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/.gitattributes +++ b/src/Symfony/Component/Mailer/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/Amazon/.gitattributes b/src/Symfony/Component/Mailer/Bridge/Amazon/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Amazon/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/Amazon/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/Amazon/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/Amazon/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Amazon/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/Amazon/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/Amazon/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Amazon/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/Google/.gitattributes b/src/Symfony/Component/Mailer/Bridge/Google/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Google/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/Google/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/Google/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/Google/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Google/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/Google/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/Google/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Google/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/.gitattributes b/src/Symfony/Component/Mailer/Bridge/Mailchimp/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/Mailchimp/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/Mailchimp/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/Mailchimp/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/Mailchimp/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Mailchimp/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/.gitattributes b/src/Symfony/Component/Mailer/Bridge/Mailgun/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/Mailgun/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/Mailgun/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/Mailgun/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/Mailgun/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Mailgun/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/Mailjet/.gitattributes b/src/Symfony/Component/Mailer/Bridge/Mailjet/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Mailjet/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/Mailjet/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/Mailjet/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/Mailjet/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Mailjet/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/Mailjet/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/Mailjet/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Mailjet/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.gitattributes b/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/OhMySmtp/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/.gitattributes b/src/Symfony/Component/Mailer/Bridge/Postmark/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Postmark/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/Postmark/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/Postmark/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Postmark/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/Postmark/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/Postmark/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Postmark/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/.gitattributes b/src/Symfony/Component/Mailer/Bridge/Sendgrid/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/Sendgrid/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Bridge/Sendinblue/.gitattributes b/src/Symfony/Component/Mailer/Bridge/Sendinblue/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendinblue/.gitattributes +++ b/src/Symfony/Component/Mailer/Bridge/Sendinblue/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mailer/Bridge/Sendinblue/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mailer/Bridge/Sendinblue/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Sendinblue/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mailer/Bridge/Sendinblue/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mailer/Bridge/Sendinblue/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Sendinblue/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mailer/Tests/Transport/FailoverTransportTest.php b/src/Symfony/Component/Mailer/Tests/Transport/FailoverTransportTest.php index 99be0e01e6e87..21a5b72238927 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/FailoverTransportTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/FailoverTransportTest.php @@ -85,16 +85,30 @@ public function testSendOneDead() public function testSendOneDeadAndRecoveryWithinRetryPeriod() { $t1 = $this->createMock(TransportInterface::class); - $t1->method('send')->willReturnOnConsecutiveCalls($this->throwException(new TransportException())); + + $t1Matcher = $this->any(); + $t1->expects($t1Matcher) + ->method('send') + ->willReturnCallback(function () use ($t1Matcher) { + if (1 === $t1Matcher->getInvocationCount()) { + throw new TransportException(); + } + + return null; + }); + $t2 = $this->createMock(TransportInterface::class); - $t2->expects($this->exactly(4)) + $t2Matcher = $this->exactly(4); + $t2->expects($t2Matcher) ->method('send') - ->willReturnOnConsecutiveCalls( - null, - null, - null, - $this->throwException(new TransportException()) - ); + ->willReturnCallback(function () use ($t2Matcher) { + if (4 === $t2Matcher->getInvocationCount()) { + throw new TransportException(); + } + + return null; + }); + $t = new FailoverTransport([$t1, $t2], 6); $t->send(new RawMessage('')); // t1>fail - t2>sent $this->assertTransports($t, 0, [$t1]); @@ -115,16 +129,19 @@ public function testSendOneDeadAndRecoveryWithinRetryPeriod() public function testSendAllDeadWithinRetryPeriod() { $t1 = $this->createMock(TransportInterface::class); - $t1->method('send')->will($this->throwException(new TransportException())); + $t1->method('send')->willThrowException(new TransportException()); $t1->expects($this->once())->method('send'); $t2 = $this->createMock(TransportInterface::class); - $t2->expects($this->exactly(3)) + $matcher = $this->exactly(3); + $t2->expects($matcher) ->method('send') - ->willReturnOnConsecutiveCalls( - null, - null, - $this->throwException(new TransportException()) - ); + ->willReturnCallback(function () use ($matcher) { + if (3 === $matcher->getInvocationCount()) { + throw new TransportException(); + } + + return null; + }); $t = new FailoverTransport([$t1, $t2], 40); $t->send(new RawMessage('')); sleep(4); @@ -137,15 +154,27 @@ public function testSendAllDeadWithinRetryPeriod() public function testSendOneDeadButRecover() { + $t1Matcher = $this->any(); $t1 = $this->createMock(TransportInterface::class); - $t1->method('send')->willReturnOnConsecutiveCalls($this->throwException(new TransportException())); + $t1->expects($t1Matcher)->method('send')->willReturnCallback(function () use ($t1Matcher) { + if (1 === $t1Matcher->getInvocationCount()) { + throw new TransportException(); + } + + return null; + }); + $t2 = $this->createMock(TransportInterface::class); - $t2->expects($this->exactly(3)) - ->method('send')->willReturnOnConsecutiveCalls( - null, - null, - $this->throwException(new TransportException()) - ); + $matcher = $this->exactly(3); + $t2->expects($matcher) + ->method('send') + ->willReturnCallback(function () use ($matcher) { + if (3 === $matcher->getInvocationCount()) { + throw new TransportException(); + } + + return null; + }); $t = new FailoverTransport([$t1, $t2], 1); $t->send(new RawMessage('')); sleep(1); diff --git a/src/Symfony/Component/Mailer/Tests/Transport/Fixtures/fake-failing-sendmail.php b/src/Symfony/Component/Mailer/Tests/Transport/Fixtures/fake-failing-sendmail.php index 920b980e0f714..1ce987202d3d6 100755 --- a/src/Symfony/Component/Mailer/Tests/Transport/Fixtures/fake-failing-sendmail.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/Fixtures/fake-failing-sendmail.php @@ -1,4 +1,8 @@ #!/usr/bin/env php createMock(TransportInterface::class); $t1->expects($this->exactly(3))->method('send'); + + $matcher = $this->exactly(2); $t2 = $this->createMock(TransportInterface::class); - $t2->expects($this->exactly(2)) + $t2->expects($matcher) ->method('send') - ->willReturnOnConsecutiveCalls($this->throwException(new TransportException())); + ->willReturnCallback(function () use ($matcher) { + if (1 === $matcher->getInvocationCount()) { + throw new TransportException(); + } + + return null; + }); $t = new RoundRobinTransport([$t1, $t2], 3); $p = new \ReflectionProperty($t, 'cursor'); $p->setAccessible(true); diff --git a/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php b/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php index e452934cd0983..660d29c37c0f0 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/SendmailTransportTest.php @@ -13,15 +13,21 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\Mailer\DelayedEnvelope; +use Symfony\Component\Mailer\Envelope; use Symfony\Component\Mailer\Exception\TransportException; +use Symfony\Component\Mailer\SentMessage; use Symfony\Component\Mailer\Transport\SendmailTransport; +use Symfony\Component\Mailer\Transport\Smtp\Stream\ProcessStream; +use Symfony\Component\Mailer\Transport\TransportInterface; use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Email; +use Symfony\Component\Mime\RawMessage; class SendmailTransportTest extends TestCase { private const FAKE_SENDMAIL = __DIR__.'/Fixtures/fake-sendmail.php -t'; private const FAKE_FAILING_SENDMAIL = __DIR__.'/Fixtures/fake-failing-sendmail.php -t'; + private const FAKE_INTERACTIVE_SENDMAIL = __DIR__.'/Fixtures/fake-failing-sendmail.php -bs'; /** * @var string @@ -49,9 +55,7 @@ public function testToString() public function testToIsUsedWhenRecipientsAreNotSet() { - if ('\\' === \DIRECTORY_SEPARATOR) { - $this->markTestSkipped('Windows does not support shebangs nor non-blocking standard streams'); - } + $this->skipOnWindows(); $mail = new Email(); $mail @@ -71,20 +75,9 @@ public function testToIsUsedWhenRecipientsAreNotSet() public function testRecipientsAreUsedWhenSet() { - if ('\\' === \DIRECTORY_SEPARATOR) { - $this->markTestSkipped('Windows does not support shebangs nor non-blocking standard streams'); - } + $this->skipOnWindows(); - $mail = new Email(); - $mail - ->from('from@mail.com') - ->to('to@mail.com') - ->subject('Subject') - ->text('Some text') - ; - - $envelope = new DelayedEnvelope($mail); - $envelope->setRecipients([new Address('recipient@mail.com')]); + [$mail, $envelope] = $this->defaultMailAndEnvelope(); $sendmailTransport = new SendmailTransport(self::FAKE_SENDMAIL); $sendmailTransport->send($mail, $envelope); @@ -93,11 +86,90 @@ public function testRecipientsAreUsedWhenSet() } public function testThrowsTransportExceptionOnFailure() + { + $this->skipOnWindows(); + + [$mail, $envelope] = $this->defaultMailAndEnvelope(); + + $sendmailTransport = new SendmailTransport(self::FAKE_FAILING_SENDMAIL); + $this->expectException(TransportException::class); + $this->expectExceptionMessage('Process failed with exit code 42: Sending failed'); + $sendmailTransport->send($mail, $envelope); + + $streamProperty = new \ReflectionProperty(SendmailTransport::class, 'stream'); + $streamProperty->setAccessible(true); + $stream = $streamProperty->getValue($sendmailTransport); + $this->assertNull($stream->stream); + } + + public function testStreamIsClearedOnFailure() + { + $this->skipOnWindows(); + + [$mail, $envelope] = $this->defaultMailAndEnvelope(); + + $sendmailTransport = new SendmailTransport(self::FAKE_FAILING_SENDMAIL); + try { + $sendmailTransport->send($mail, $envelope); + } catch (TransportException $e) { + } + + $streamProperty = new \ReflectionProperty(SendmailTransport::class, 'stream'); + $streamProperty->setAccessible(true); + $stream = $streamProperty->getValue($sendmailTransport); + $innerStreamProperty = new \ReflectionProperty(ProcessStream::class, 'stream'); + $innerStreamProperty->setAccessible(true); + $this->assertNull($innerStreamProperty->getValue($stream)); + } + + public function testDoesNotThrowWhenInteractive() + { + $this->skipOnWindows(); + + [$mail, $envelope] = $this->defaultMailAndEnvelope(); + + $sendmailTransport = new SendmailTransport(self::FAKE_INTERACTIVE_SENDMAIL); + $transportProperty = new \ReflectionProperty(SendmailTransport::class, 'transport'); + $transportProperty->setAccessible(true); + + // Replace the transport with an anonymous consumer that trigger the stream methods + $transportProperty->setValue($sendmailTransport, new class($transportProperty->getValue($sendmailTransport)->getStream()) implements TransportInterface { + private $stream; + + public function __construct(ProcessStream $stream) + { + $this->stream = $stream; + } + + public function send(RawMessage $message, ?Envelope $envelope = null): ?SentMessage + { + $this->stream->initialize(); + $this->stream->write('SMTP'); + $this->stream->terminate(); + + return new SentMessage($message, $envelope); + } + + public function __toString(): string + { + return 'Interactive mode test'; + } + }); + + $sendmailTransport->send($mail, $envelope); + + $this->assertStringEqualsFile($this->argsPath, __DIR__.'/Fixtures/fake-failing-sendmail.php -bs'); + } + + private function skipOnWindows() { if ('\\' === \DIRECTORY_SEPARATOR) { $this->markTestSkipped('Windows does not support shebangs nor non-blocking standard streams'); } + } + private function defaultMailAndEnvelope(): array + { $mail = new Email(); $mail ->from('from@mail.com') @@ -109,9 +181,6 @@ public function testThrowsTransportExceptionOnFailure() $envelope = new DelayedEnvelope($mail); $envelope->setRecipients([new Address('recipient@mail.com')]); - $sendmailTransport = new SendmailTransport(self::FAKE_FAILING_SENDMAIL); - $this->expectException(TransportException::class); - $this->expectExceptionMessage('Process failed with exit code 42: Sending failed'); - $sendmailTransport->send($mail, $envelope); + return [$mail, $envelope]; } } diff --git a/src/Symfony/Component/Mailer/Tests/Transport/Smtp/SmtpTransportTest.php b/src/Symfony/Component/Mailer/Tests/Transport/Smtp/SmtpTransportTest.php index c54b050b92963..7d435dcaed5fb 100644 --- a/src/Symfony/Component/Mailer/Tests/Transport/Smtp/SmtpTransportTest.php +++ b/src/Symfony/Component/Mailer/Tests/Transport/Smtp/SmtpTransportTest.php @@ -158,7 +158,7 @@ public function testAssertResponseCodeWithNotValidCode() private function invokeAssertResponseCode(string $response, array $codes): void { - $transport = new SmtpTransport($this->getMockForAbstractClass(AbstractStream::class)); + $transport = new SmtpTransport($this->createStub(AbstractStream::class)); $m = new \ReflectionMethod($transport, 'assertResponseCode'); $m->setAccessible(true); $m->invoke($transport, $response, $codes); diff --git a/src/Symfony/Component/Mailer/Transport/SendmailTransport.php b/src/Symfony/Component/Mailer/Transport/SendmailTransport.php index 22aea4e915d1f..712016b5fed2b 100644 --- a/src/Symfony/Component/Mailer/Transport/SendmailTransport.php +++ b/src/Symfony/Component/Mailer/Transport/SendmailTransport.php @@ -64,6 +64,7 @@ public function __construct(?string $command = null, ?EventDispatcherInterface $ $this->stream = new ProcessStream(); if (str_contains($this->command, ' -bs')) { $this->stream->setCommand($this->command); + $this->stream->setInteractive(true); $this->transport = new SmtpTransport($this->stream, $dispatcher, $logger); } } diff --git a/src/Symfony/Component/Mailer/Transport/Smtp/Stream/ProcessStream.php b/src/Symfony/Component/Mailer/Transport/Smtp/Stream/ProcessStream.php index 808d9eb53fa68..d717055b64b1b 100644 --- a/src/Symfony/Component/Mailer/Transport/Smtp/Stream/ProcessStream.php +++ b/src/Symfony/Component/Mailer/Transport/Smtp/Stream/ProcessStream.php @@ -25,11 +25,18 @@ final class ProcessStream extends AbstractStream { private $command; + private $interactive = false; + public function setCommand(string $command) { $this->command = $command; } + public function setInteractive(bool $interactive) + { + $this->interactive = $interactive; + } + public function initialize(): void { $descriptorSpec = [ @@ -57,11 +64,15 @@ public function terminate(): void $err = stream_get_contents($this->err); fclose($this->err); if (0 !== $exitCode = proc_close($this->stream)) { - throw new TransportException('Process failed with exit code '.$exitCode.': '.$out.$err); + $errorMessage = 'Process failed with exit code '.$exitCode.': '.$out.$err; } } parent::terminate(); + + if (!$this->interactive && isset($errorMessage)) { + throw new TransportException($errorMessage); + } } protected function getReadConnectionDescription(): string diff --git a/src/Symfony/Component/Messenger/.gitattributes b/src/Symfony/Component/Messenger/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Messenger/.gitattributes +++ b/src/Symfony/Component/Messenger/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Messenger/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Messenger/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Messenger/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Messenger/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Messenger/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Messenger/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.gitattributes b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.gitattributes +++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsSenderTest.php b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsSenderTest.php index a3269841e4dda..80840c859cb05 100644 --- a/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsSenderTest.php +++ b/src/Symfony/Component/Messenger/Bridge/AmazonSqs/Tests/Transport/AmazonSqsSenderTest.php @@ -31,7 +31,7 @@ public function testSend() $connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers']); $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $sender = new AmazonSqsSender($connection, $serializer); $sender->send($envelope); @@ -49,7 +49,7 @@ public function testSendWithAmazonSqsFifoStamp() ->with($encoded['body'], $encoded['headers'], 0, $stamp->getMessageGroupId(), $stamp->getMessageDeduplicationId()); $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $sender = new AmazonSqsSender($connection, $serializer); $sender->send($envelope); @@ -67,7 +67,7 @@ public function testSendWithAmazonSqsXrayTraceHeaderStamp() ->with($encoded['body'], $encoded['headers'], 0, null, null, $stamp->getTraceId()); $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $sender = new AmazonSqsSender($connection, $serializer); $sender->send($envelope); diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/.gitattributes b/src/Symfony/Component/Messenger/Bridge/Amqp/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/.gitattributes +++ b/src/Symfony/Component/Messenger/Bridge/Amqp/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Messenger/Bridge/Amqp/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Messenger/Bridge/Amqp/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpSenderTest.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpSenderTest.php index 9949a0d59413f..b1dda969fb49b 100644 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpSenderTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/AmqpSenderTest.php @@ -31,7 +31,7 @@ public function testItSendsTheEncodedMessage() $encoded = ['body' => '...', 'headers' => ['type' => DummyMessage::class]]; $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $connection = $this->createMock(Connection::class); $connection->expects($this->once())->method('publish')->with($encoded['body'], $encoded['headers']); @@ -61,7 +61,7 @@ public function testItSendsTheEncodedMessageWithoutHeaders() $encoded = ['body' => '...']; $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $connection = $this->createMock(Connection::class); $connection->expects($this->once())->method('publish')->with($encoded['body'], []); @@ -76,7 +76,7 @@ public function testContentTypeHeaderIsMovedToAttribute() $encoded = ['body' => '...', 'headers' => ['type' => DummyMessage::class, 'Content-Type' => 'application/json']]; $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $connection = $this->createMock(Connection::class); unset($encoded['headers']['Content-Type']); @@ -93,7 +93,7 @@ public function testContentTypeHeaderDoesNotOverwriteAttribute() $encoded = ['body' => '...', 'headers' => ['type' => DummyMessage::class, 'Content-Type' => 'application/json']]; $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $connection = $this->createMock(Connection::class); unset($encoded['headers']['Content-Type']); @@ -110,7 +110,7 @@ public function testItThrowsATransportExceptionIfItCannotSendTheMessage() $encoded = ['body' => '...', 'headers' => ['type' => DummyMessage::class]]; $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $connection = $this->createMock(Connection::class); $connection->method('publish')->with($encoded['body'], $encoded['headers'])->willThrowException(new \AMQPException()); diff --git a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php index 32abfd58438be..9de6fa8ca0919 100644 --- a/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Amqp/Tests/Transport/ConnectionTest.php @@ -306,7 +306,10 @@ public function testItSetupsTheConnection() $factory->method('createConnection')->willReturn($amqpConnection); $factory->method('createChannel')->willReturn($amqpChannel); $factory->method('createExchange')->willReturn($amqpExchange); - $factory->method('createQueue')->will($this->onConsecutiveCalls($amqpQueue0, $amqpQueue1)); + + $factory + ->method('createQueue') + ->willReturn($amqpQueue0, $amqpQueue1); $amqpExchange->expects($this->once())->method('declareExchange'); $amqpExchange->expects($this->once())->method('publish')->with('body', 'routing_key', \AMQP_NOPARAM, ['headers' => [], 'delivery_mode' => 2, 'timestamp' => time()]); @@ -358,7 +361,9 @@ public function testItSetupsTheTTLConnection() $factory->method('createConnection')->willReturn($amqpConnection); $factory->method('createChannel')->willReturn($amqpChannel); $factory->method('createExchange')->willReturn($amqpExchange); - $factory->method('createQueue')->will($this->onConsecutiveCalls($amqpQueue0, $amqpQueue1)); + $factory + ->method('createQueue') + ->willReturn($amqpQueue0, $amqpQueue1); $amqpExchange->expects($this->once())->method('declareExchange'); $amqpExchange->expects($this->once())->method('publish')->with('body', 'routing_key', \AMQP_NOPARAM, ['headers' => [], 'delivery_mode' => 2, 'timestamp' => time()]); @@ -495,14 +500,15 @@ public function testAutoSetupWithDelayDeclaresExchangeQueuesAndDelay() $factory = $this->createMock(AmqpFactory::class); $factory->method('createConnection')->willReturn($amqpConnection); $factory->method('createChannel')->willReturn($amqpChannel); - $factory->method('createQueue')->will($this->onConsecutiveCalls( - $amqpQueue = $this->createMock(\AMQPQueue::class), - $delayQueue = $this->createMock(\AMQPQueue::class) - )); - $factory->method('createExchange')->will($this->onConsecutiveCalls( - $amqpExchange = $this->createMock(\AMQPExchange::class), - $delayExchange = $this->createMock(\AMQPExchange::class) - )); + + $amqpQueue = $this->createMock(\AMQPQueue::class); + $factory + ->method('createQueue') + ->willReturn($amqpQueue, $this->createMock(\AMQPQueue::class)); + + $amqpExchange = $this->createMock(\AMQPExchange::class); + $delayExchange = $this->createMock(\AMQPExchange::class); + $factory->method('createExchange')->willReturn($amqpExchange, $delayExchange); $amqpExchange->expects($this->once())->method('setName')->with(self::DEFAULT_EXCHANGE_NAME); $amqpExchange->expects($this->once())->method('declareExchange'); @@ -553,14 +559,12 @@ public function testItDelaysTheMessageWithADifferentRoutingKeyAndTTLs() $factory = $this->createMock(AmqpFactory::class); $factory->method('createConnection')->willReturn($amqpConnection); $factory->method('createChannel')->willReturn($amqpChannel); - $factory->method('createQueue')->will($this->onConsecutiveCalls( - $this->createMock(\AMQPQueue::class), - $delayQueue = $this->createMock(\AMQPQueue::class) - )); - $factory->method('createExchange')->will($this->onConsecutiveCalls( - $this->createMock(\AMQPExchange::class), - $delayExchange = $this->createMock(\AMQPExchange::class) - )); + + $delayQueue = $this->createMock(\AMQPQueue::class); + $factory->method('createQueue')->willReturn($this->createMock(\AMQPQueue::class), $delayQueue); + + $delayExchange = $this->createMock(\AMQPExchange::class); + $factory->method('createExchange')->willReturn($this->createMock(\AMQPExchange::class), $delayExchange); $connectionOptions = [ 'retry' => [ @@ -693,14 +697,12 @@ public function testItDelaysTheMessageWithTheInitialSuppliedRoutingKeyAsArgument $factory = $this->createMock(AmqpFactory::class); $factory->method('createConnection')->willReturn($amqpConnection); $factory->method('createChannel')->willReturn($amqpChannel); - $factory->method('createQueue')->will($this->onConsecutiveCalls( - $this->createMock(\AMQPQueue::class), - $delayQueue = $this->createMock(\AMQPQueue::class) - )); - $factory->method('createExchange')->will($this->onConsecutiveCalls( - $this->createMock(\AMQPExchange::class), - $delayExchange = $this->createMock(\AMQPExchange::class) - )); + + $delayQueue = $this->createMock(\AMQPQueue::class); + $factory->method('createQueue')->willReturn($this->createMock(\AMQPQueue::class), $delayQueue); + + $delayExchange = $this->createMock(\AMQPExchange::class); + $factory->method('createExchange')->willReturn($this->createMock(\AMQPExchange::class), $delayExchange); $connectionOptions = [ 'retry' => [ @@ -819,14 +821,10 @@ private function createDelayOrRetryConnection(\AMQPExchange $delayExchange, stri $factory = $this->createMock(AmqpFactory::class); $factory->method('createConnection')->willReturn($amqpConnection); $factory->method('createChannel')->willReturn($amqpChannel); - $factory->method('createQueue')->will($this->onConsecutiveCalls( - $this->createMock(\AMQPQueue::class), - $delayQueue = $this->createMock(\AMQPQueue::class) - )); - $factory->method('createExchange')->will($this->onConsecutiveCalls( - $this->createMock(\AMQPExchange::class), - $delayExchange - )); + + $delayQueue = $this->createMock(\AMQPQueue::class); + $factory->method('createQueue')->willReturn($this->createMock(\AMQPQueue::class), $delayQueue); + $factory->method('createExchange')->willReturn($this->createMock(\AMQPExchange::class), $delayExchange); $delayQueue->expects($this->once())->method('setName')->with($delayQueueName); $delayQueue->expects($this->once())->method('setArguments')->with([ diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.gitattributes b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.gitattributes +++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php index cfc5b8fdba84f..89ac3449f3a4b 100644 --- a/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Beanstalkd/Tests/Transport/BeanstalkdSenderTest.php @@ -30,7 +30,7 @@ public function testSend() $connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers'], 0); $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $sender = new BeanstalkdSender($connection, $serializer); $sender->send($envelope); @@ -45,7 +45,7 @@ public function testSendWithDelay() $connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers'], 500); $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $sender = new BeanstalkdSender($connection, $serializer); $sender->send($envelope); diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/.gitattributes b/src/Symfony/Component/Messenger/Bridge/Doctrine/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Messenger/Bridge/Doctrine/.gitattributes +++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Messenger/Bridge/Doctrine/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/Doctrine/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Messenger/Bridge/Doctrine/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/Doctrine/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineSenderTest.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineSenderTest.php index 8505e3dee0481..1f769533e7165 100644 --- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineSenderTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Tests/Transport/DoctrineSenderTest.php @@ -31,7 +31,7 @@ public function testSend() $connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers'])->willReturn('15'); $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $sender = new DoctrineSender($connection, $serializer); $actualEnvelope = $sender->send($envelope); @@ -51,7 +51,7 @@ public function testSendWithDelay() $connection->expects($this->once())->method('send')->with($encoded['body'], $encoded['headers'], 500); $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $sender = new DoctrineSender($connection, $serializer); $sender->send($envelope); diff --git a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php index 100058d240fcd..6980a2e6b03fb 100644 --- a/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php +++ b/src/Symfony/Component/Messenger/Bridge/Doctrine/Transport/Connection.php @@ -21,6 +21,7 @@ use Doctrine\DBAL\Platforms\OraclePlatform; use Doctrine\DBAL\Query\QueryBuilder; use Doctrine\DBAL\Result; +use Doctrine\DBAL\Schema\AbstractAsset; use Doctrine\DBAL\Schema\AbstractSchemaManager; use Doctrine\DBAL\Schema\Comparator; use Doctrine\DBAL\Schema\Schema; @@ -289,7 +290,17 @@ public function setup(): void { $configuration = $this->driverConnection->getConfiguration(); $assetFilter = $configuration->getSchemaAssetsFilter(); - $configuration->setSchemaAssetsFilter(function (string $tableName) { return $tableName === $this->configuration['table_name']; }); + $configuration->setSchemaAssetsFilter(function ($tableName) { + if ($tableName instanceof AbstractAsset) { + $tableName = $tableName->getName(); + } + + if (!\is_string($tableName)) { + throw new \TypeError(sprintf('The table name must be an instance of "%s" or a string ("%s" given).', AbstractAsset::class, get_debug_type($tableName))); + } + + return $tableName === $this->configuration['table_name']; + }); $this->updateSchema(); $configuration->setSchemaAssetsFilter($assetFilter); $this->autoSetup = false; diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/.gitattributes b/src/Symfony/Component/Messenger/Bridge/Redis/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Messenger/Bridge/Redis/.gitattributes +++ b/src/Symfony/Component/Messenger/Bridge/Redis/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Messenger/Bridge/Redis/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/Redis/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Messenger/Bridge/Redis/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Messenger/Bridge/Redis/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php index 2e5c7bf0b043e..b1bff95fe4b67 100644 --- a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/ConnectionTest.php @@ -408,7 +408,7 @@ public function testLastErrorGetsCleared() $redis->expects($this->once())->method('xadd')->willReturn('0'); $redis->expects($this->once())->method('xack')->willReturn(0); - $redis->method('getLastError')->willReturnOnConsecutiveCalls('xadd error', 'xack error'); + $redis->method('getLastError')->willReturn('xadd error', 'xack error'); $redis->expects($this->exactly(2))->method('clearLastError'); $connection = Connection::fromDsn('redis://localhost/messenger-clearlasterror', ['auto_setup' => false, 'delete_after_ack' => true], $redis); diff --git a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisSenderTest.php b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisSenderTest.php index 3a4d817acc140..925a7292a7e3a 100644 --- a/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisSenderTest.php +++ b/src/Symfony/Component/Messenger/Bridge/Redis/Tests/Transport/RedisSenderTest.php @@ -29,7 +29,7 @@ public function testSend() $connection->expects($this->once())->method('add')->with($encoded['body'], $encoded['headers']); $serializer = $this->createMock(SerializerInterface::class); - $serializer->method('encode')->with($envelope)->willReturnOnConsecutiveCalls($encoded); + $serializer->method('encode')->with($envelope)->willReturn($encoded); $sender = new RedisSender($connection, $serializer); $sender->send($envelope); diff --git a/src/Symfony/Component/Messenger/Tests/Command/SetupTransportsCommandTest.php b/src/Symfony/Component/Messenger/Tests/Command/SetupTransportsCommandTest.php index e0a57563915a4..0d1f1111b0b90 100644 --- a/src/Symfony/Component/Messenger/Tests/Command/SetupTransportsCommandTest.php +++ b/src/Symfony/Component/Messenger/Tests/Command/SetupTransportsCommandTest.php @@ -30,10 +30,10 @@ public function testReceiverNames() // get method must be call twice and will return consecutively a setup-able transport and a non setup-able transport $serviceLocator->expects($this->exactly(2)) ->method('get') - ->will($this->onConsecutiveCalls( + ->willReturn( $this->createMock(SetupableTransportInterface::class), $this->createMock(TransportInterface::class) - )); + ); $serviceLocator ->method('has') ->willReturn(true); @@ -53,12 +53,10 @@ public function testReceiverNameArgument() /** @var MockObject&ServiceLocator $serviceLocator */ $serviceLocator = $this->createMock(ServiceLocator::class); // get method must be call twice and will return consecutively a setup-able transport and a non setup-able transport - $serviceLocator->expects($this->exactly(1)) + $serviceLocator->expects($this->once()) ->method('get') - ->will($this->onConsecutiveCalls( - $this->createMock(SetupableTransportInterface::class) - )); - $serviceLocator->expects($this->exactly(1)) + ->willReturn($this->createMock(SetupableTransportInterface::class)); + $serviceLocator->expects($this->once()) ->method('has') ->willReturn(true); diff --git a/src/Symfony/Component/Messenger/Tests/Middleware/DispatchAfterCurrentBusMiddlewareTest.php b/src/Symfony/Component/Messenger/Tests/Middleware/DispatchAfterCurrentBusMiddlewareTest.php index b0cc4c4f2ed87..cd65ab046f0c6 100644 --- a/src/Symfony/Component/Messenger/Tests/Middleware/DispatchAfterCurrentBusMiddlewareTest.php +++ b/src/Symfony/Component/Messenger/Tests/Middleware/DispatchAfterCurrentBusMiddlewareTest.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Messenger\Tests\Middleware; +use PHPUnit\Framework\AssertionFailedError; use PHPUnit\Framework\Constraint\Callback; use PHPUnit\Framework\MockObject\Stub\ReturnCallback; use PHPUnit\Framework\TestCase; @@ -67,12 +68,7 @@ public function testEventsInNewTransactionAreHandledAfterMainMessage() ->with($this->callback(function (Envelope $envelope) use (&$series) { return $envelope->getMessage() === array_shift($series); })) - ->willReturnOnConsecutiveCalls( - $this->willHandleMessage(), - $this->willHandleMessage(), - $this->willHandleMessage(), - $this->willHandleMessage() - ); + ->will($this->willHandleMessage()); $messageBus->dispatch($message); } @@ -110,16 +106,19 @@ public function testThrowingEventsHandlingWontStopExecution() $secondEvent, ]; - $handlingMiddleware->expects($this->exactly(3)) + $matcher = $this->exactly(3); + $handlingMiddleware->expects($matcher) ->method('handle') ->with($this->callback(function (Envelope $envelope) use (&$series) { return $envelope->getMessage() === array_shift($series); })) - ->willReturnOnConsecutiveCalls( - $this->willHandleMessage(), - $this->throwException(new \RuntimeException('Some exception while handling first event')), - $this->willHandleMessage() - ); + ->willReturnCallback(function ($envelope, StackInterface $stack) use ($matcher) { + if (2 === $matcher->getInvocationCount()) { + throw new \RuntimeException('Some exception while handling first event'); + } + + return $stack->next()->handle($envelope, $stack); + }); $this->expectException(DelayedMessageHandlingException::class); $this->expectExceptionMessage('RuntimeException: Some exception while handling first event'); @@ -176,34 +175,39 @@ public function testLongChainWithExceptions() // Note: $eventL3a should not be handled. ]; - $handlingMiddleware->expects($this->exactly(7)) + $matcher = $this->exactly(7); + $handlingMiddleware->expects($matcher) ->method('handle') ->with($this->callback(function (Envelope $envelope) use (&$series) { return $envelope->getMessage() === array_shift($series); })) - ->willReturnOnConsecutiveCalls( - $this->willHandleMessage(), - $this->willHandleMessage(), - $this->returnCallback(function ($envelope, StackInterface $stack) use ($eventBus, $eventL2a, $eventL2b) { - $envelope1 = new Envelope($eventL2a, [new DispatchAfterCurrentBusStamp()]); - $eventBus->dispatch($envelope1); - $eventBus->dispatch(new Envelope($eventL2b, [new DispatchAfterCurrentBusStamp()])); - - return $stack->next()->handle($envelope, $stack); - }), - $this->willHandleMessage(), - $this->returnCallback(function () use ($eventBus, $eventL3a) { - $eventBus->dispatch(new Envelope($eventL3a, [new DispatchAfterCurrentBusStamp()])); - - throw new \RuntimeException('Some exception while handling Event level 2a'); - }), - $this->returnCallback(function ($envelope, StackInterface $stack) use ($eventBus, $eventL3b) { - $eventBus->dispatch(new Envelope($eventL3b, [new DispatchAfterCurrentBusStamp()])); - - return $stack->next()->handle($envelope, $stack); - }), - $this->willHandleMessage() - ); + ->willReturnCallback(function ($envelope, StackInterface $stack) use ($eventBus, $eventL2a, $eventL2b, $eventL3a, $eventL3b, $matcher) { + switch ($matcher->getInvocationCount()) { + case 1: + case 2: + case 4: + case 7: + return $stack->next()->handle($envelope, $stack); + + case 3: + $envelope1 = new Envelope($eventL2a, [new DispatchAfterCurrentBusStamp()]); + $eventBus->dispatch($envelope1); + $eventBus->dispatch(new Envelope($eventL2b, [new DispatchAfterCurrentBusStamp()])); + + return $stack->next()->handle($envelope, $stack); + + case 5: + $eventBus->dispatch(new Envelope($eventL3a, [new DispatchAfterCurrentBusStamp()])); + + throw new \RuntimeException('Some exception while handling Event level 2a'); + case 6: + $eventBus->dispatch(new Envelope($eventL3b, [new DispatchAfterCurrentBusStamp()])); + + return $stack->next()->handle($envelope, $stack); + } + + throw new AssertionFailedError('Unexpected call to handle'); + }); $this->expectException(DelayedMessageHandlingException::class); $this->expectExceptionMessage('RuntimeException: Some exception while handling Event level 2a'); diff --git a/src/Symfony/Component/Mime/.gitattributes b/src/Symfony/Component/Mime/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Mime/.gitattributes +++ b/src/Symfony/Component/Mime/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Mime/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Mime/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Mime/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Mime/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Mime/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Mime/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Mime/Message.php b/src/Symfony/Component/Mime/Message.php index 639b26b521b73..df7ed1b7944c2 100644 --- a/src/Symfony/Component/Mime/Message.php +++ b/src/Symfony/Component/Mime/Message.php @@ -124,11 +124,18 @@ public function toIterable(): iterable public function ensureValidity() { - if (!$this->headers->has('To') && !$this->headers->has('Cc') && !$this->headers->has('Bcc')) { + $to = (null !== $header = $this->headers->get('To')) ? $header->getBody() : null; + $cc = (null !== $header = $this->headers->get('Cc')) ? $header->getBody() : null; + $bcc = (null !== $header = $this->headers->get('Bcc')) ? $header->getBody() : null; + + if (!$to && !$cc && !$bcc) { throw new LogicException('An email must have a "To", "Cc", or "Bcc" header.'); } - if (!$this->headers->has('From') && !$this->headers->has('Sender')) { + $from = (null !== $header = $this->headers->get('From')) ? $header->getBody() : null; + $sender = (null !== $header = $this->headers->get('Sender')) ? $header->getBody() : null; + + if (!$from && !$sender) { throw new LogicException('An email must have a "From" or a "Sender" header.'); } diff --git a/src/Symfony/Component/Mime/Tests/MessageTest.php b/src/Symfony/Component/Mime/Tests/MessageTest.php index 308eb8f7179db..6d981e7eb1f6d 100644 --- a/src/Symfony/Component/Mime/Tests/MessageTest.php +++ b/src/Symfony/Component/Mime/Tests/MessageTest.php @@ -276,4 +276,71 @@ public function testSymfonySerialize() $serialized = $serializer->serialize($e, 'json'); $this->assertSame($expectedJson, json_encode(json_decode($serialized), \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES)); } + + /** + * @dataProvider ensureValidityProvider + */ + public function testEnsureValidity(array $headers, ?string $exceptionClass, ?string $exceptionMessage) + { + if ($exceptionClass) { + $this->expectException($exceptionClass); + $this->expectExceptionMessage($exceptionMessage); + } else { + $this->expectNotToPerformAssertions(); + } + + $m = new Message(); + foreach ($headers as $headerName => $headerValue) { + $m->getHeaders()->addMailboxListHeader($headerName, $headerValue); + } + $m->ensureValidity(); + } + + public function ensureValidityProvider() + { + return [ + 'Valid address fields' => [ + [ + 'To' => ['dummy@symfony.com'], + 'From' => ['test@symfony.com'], + ], + null, + null, + ], + + 'No destination address fields' => [ + [ + 'From' => ['test@symfony.com'], + ], + LogicException::class, + 'An email must have a "To", "Cc", or "Bcc" header.', + ], + + 'Empty destination address fields' => [ + [ + 'To' => [], + 'From' => ['test@symfony.com'], + ], + LogicException::class, + 'An email must have a "To", "Cc", or "Bcc" header.', + ], + + 'No originator fields' => [ + [ + 'To' => ['dummy@symfony.com'], + ], + LogicException::class, + 'An email must have a "From" or a "Sender" header.', + ], + + 'Empty originator fields' => [ + [ + 'To' => ['dummy@symfony.com'], + 'From' => [], + ], + LogicException::class, + 'An email must have a "From" or a "Sender" header.', + ], + ]; + } } diff --git a/src/Symfony/Component/Notifier/.gitattributes b/src/Symfony/Component/Notifier/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/.gitattributes +++ b/src/Symfony/Component/Notifier/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/AllMySms/.gitattributes b/src/Symfony/Component/Notifier/Bridge/AllMySms/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/AllMySms/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/AllMySms/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/AllMySms/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/AllMySms/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/AllMySms/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/AllMySms/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/AllMySms/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/AllMySms/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/AmazonSns/.gitattributes b/src/Symfony/Component/Notifier/Bridge/AmazonSns/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/AmazonSns/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/AmazonSns/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/AmazonSns/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/AmazonSns/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/AmazonSns/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/AmazonSns/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/AmazonSns/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/AmazonSns/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Clickatell/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Clickatell/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Clickatell/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Clickatell/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Clickatell/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Clickatell/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Clickatell/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Clickatell/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Clickatell/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Clickatell/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Discord/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Discord/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Discord/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Discord/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Discord/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Discord/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Discord/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Discord/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Esendex/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Esendex/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Esendex/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Esendex/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Esendex/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Esendex/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Esendex/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Esendex/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Esendex/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Esendex/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Expo/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Expo/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Expo/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Expo/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Expo/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Expo/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Expo/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Expo/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Expo/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Expo/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/FakeChat/.gitattributes b/src/Symfony/Component/Notifier/Bridge/FakeChat/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/FakeChat/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/FakeChat/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/FakeChat/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/FakeChat/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/FakeChat/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/FakeChat/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/FakeChat/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/FakeChat/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/FakeSms/.gitattributes b/src/Symfony/Component/Notifier/Bridge/FakeSms/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/FakeSms/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/FakeSms/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/FakeSms/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/FakeSms/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/FakeSms/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/FakeSms/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/FakeSms/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/FakeSms/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Firebase/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Firebase/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Firebase/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Firebase/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Firebase/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Firebase/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Firebase/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Firebase/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Firebase/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Firebase/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/FreeMobile/.gitattributes b/src/Symfony/Component/Notifier/Bridge/FreeMobile/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/FreeMobile/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/FreeMobile/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/FreeMobile/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/FreeMobile/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/FreeMobile/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/FreeMobile/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/FreeMobile/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/FreeMobile/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/GatewayApi/.gitattributes b/src/Symfony/Component/Notifier/Bridge/GatewayApi/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/GatewayApi/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/GatewayApi/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/GatewayApi/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/GatewayApi/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/GatewayApi/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/GatewayApi/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/GatewayApi/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/GatewayApi/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Gitter/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Gitter/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Gitter/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Gitter/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Gitter/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Gitter/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Gitter/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Gitter/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Gitter/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Gitter/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/GoogleChat/.gitattributes b/src/Symfony/Component/Notifier/Bridge/GoogleChat/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/GoogleChat/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/GoogleChat/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/GoogleChat/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/GoogleChat/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/GoogleChat/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/GoogleChat/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/GoogleChat/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/GoogleChat/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Infobip/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Infobip/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Infobip/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Infobip/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Infobip/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Infobip/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Infobip/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Infobip/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Infobip/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Infobip/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Iqsms/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Iqsms/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Iqsms/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Iqsms/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Iqsms/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Iqsms/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Iqsms/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Iqsms/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Iqsms/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Iqsms/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/LightSms/.gitattributes b/src/Symfony/Component/Notifier/Bridge/LightSms/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/LightSms/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/LightSms/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/LightSms/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/LightSms/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/LightSms/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/LightSms/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/LightSms/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/LightSms/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/LinkedIn/.gitattributes b/src/Symfony/Component/Notifier/Bridge/LinkedIn/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/LinkedIn/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/LinkedIn/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/LinkedIn/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/LinkedIn/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/LinkedIn/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/LinkedIn/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/LinkedIn/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/LinkedIn/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Mailjet/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Mailjet/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Mailjet/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Mailjet/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Mailjet/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Mailjet/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Mailjet/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Mailjet/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Mailjet/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Mailjet/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Mattermost/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Mattermost/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Mattermost/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Mattermost/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Mattermost/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Mattermost/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Mattermost/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Mattermost/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Mattermost/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Mattermost/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Mercure/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Mercure/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Mercure/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Mercure/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Mercure/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Mercure/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Mercure/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Mercure/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Mercure/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Mercure/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/MessageBird/.gitattributes b/src/Symfony/Component/Notifier/Bridge/MessageBird/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/MessageBird/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/MessageBird/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/MessageBird/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/MessageBird/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/MessageBird/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/MessageBird/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/MessageBird/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/MessageBird/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/MessageMedia/.gitattributes b/src/Symfony/Component/Notifier/Bridge/MessageMedia/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/MessageMedia/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/MessageMedia/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/MessageMedia/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/MessageMedia/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/MessageMedia/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/MessageMedia/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/MessageMedia/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/MessageMedia/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.gitattributes b/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/MicrosoftTeams/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Mobyt/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Mobyt/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Mobyt/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Mobyt/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Mobyt/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Mobyt/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Mobyt/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Mobyt/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Mobyt/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Mobyt/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Nexmo/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Nexmo/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Nexmo/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Nexmo/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Nexmo/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Nexmo/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Nexmo/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Nexmo/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Nexmo/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Nexmo/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Octopush/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Octopush/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Octopush/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Octopush/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Octopush/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Octopush/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Octopush/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Octopush/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Octopush/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Octopush/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/OneSignal/.gitattributes b/src/Symfony/Component/Notifier/Bridge/OneSignal/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/OneSignal/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/OneSignal/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/OneSignal/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/OneSignal/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/OneSignal/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/OneSignal/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/OneSignal/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/OneSignal/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/OvhCloud/.gitattributes b/src/Symfony/Component/Notifier/Bridge/OvhCloud/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/OvhCloud/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/OvhCloud/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/OvhCloud/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/OvhCloud/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/OvhCloud/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/OvhCloud/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/OvhCloud/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/OvhCloud/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/RocketChat/.gitattributes b/src/Symfony/Component/Notifier/Bridge/RocketChat/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/RocketChat/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/RocketChat/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/RocketChat/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/RocketChat/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/RocketChat/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/RocketChat/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/RocketChat/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/RocketChat/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Sendinblue/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Sendinblue/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Sendinblue/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Sendinblue/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Sinch/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Sinch/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Sinch/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Sinch/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Sinch/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Sinch/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Sinch/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Sinch/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Sinch/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Sinch/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Slack/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Slack/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Slack/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Slack/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Slack/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Slack/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php index 8595f364e866a..dffea36ac402b 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/SlackTransport.php @@ -83,7 +83,7 @@ protected function doSend(MessageInterface $message): SentMessage } $options['text'] = $message->getSubject(); $response = $this->client->request('POST', 'https://'.$this->getEndpoint().'/api/chat.postMessage', [ - 'json' => array_filter($options), + 'json' => array_filter($options, function ($value): bool { return !\in_array($value, ['', [], null], true); }), 'auth_bearer' => $this->accessToken, 'headers' => [ 'Content-Type' => 'application/json; charset=utf-8', diff --git a/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php index 231677c8a251e..164fbec575cbd 100644 --- a/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php +++ b/src/Symfony/Component/Notifier/Bridge/Slack/Tests/SlackTransportTest.php @@ -174,6 +174,56 @@ public function testSendWithNotification() $this->assertSame('1503435956.000247', $sentMessage->getMessageId()); } + /** + * @testWith [true] + * [false] + */ + public function testSendWithBooleanOptionValue(bool $value) + { + $channel = 'testChannel'; + $message = 'testMessage'; + + $response = $this->createMock(ResponseInterface::class); + + $response->expects($this->exactly(2)) + ->method('getStatusCode') + ->willReturn(200); + + $response->expects($this->once()) + ->method('getContent') + ->willReturn(json_encode(['ok' => true, 'ts' => '1503435956.000247'])); + + $options = new SlackOptions(); + $options->asUser($value); + $options->linkNames($value); + $options->mrkdwn($value); + $options->unfurlLinks($value); + $options->unfurlMedia($value); + $notification = new Notification($message); + $chatMessage = ChatMessage::fromNotification($notification); + $chatMessage->options($options); + + $expectedBody = json_encode([ + 'as_user' => $value, + 'channel' => $channel, + 'link_names' => $value, + 'mrkdwn' => $value, + 'text' => $message, + 'unfurl_links' => $value, + 'unfurl_media' => $value, + ]); + + $client = new MockHttpClient(function (string $method, string $url, array $options = []) use ($response, $expectedBody): ResponseInterface { + $this->assertJsonStringEqualsJsonString($expectedBody, $options['body']); + + return $response; + }); + + $transport = self::createTransport($client, $channel); + + $transport->send($chatMessage); + } + public function testSendWithInvalidOptions() { $this->expectException(LogicException::class); diff --git a/src/Symfony/Component/Notifier/Bridge/Sms77/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Sms77/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Sms77/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Sms77/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Sms77/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Sms77/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Sms77/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Sms77/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Sms77/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Sms77/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.gitattributes b/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/SmsBiuras/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Smsapi/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Smsapi/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Smsapi/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Smsapi/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Smsapi/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Smsapi/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Smsapi/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Smsapi/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Smsapi/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Smsapi/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Smsc/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Smsc/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Smsc/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Smsc/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Smsc/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Smsc/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Smsc/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Smsc/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Smsc/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Smsc/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/SpotHit/.gitattributes b/src/Symfony/Component/Notifier/Bridge/SpotHit/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/SpotHit/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/SpotHit/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/SpotHit/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/SpotHit/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/SpotHit/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/SpotHit/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/SpotHit/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/SpotHit/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Telegram/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Telegram/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Telegram/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Telegram/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Telegram/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Telegram/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Telnyx/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Telnyx/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Telnyx/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Telnyx/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Telnyx/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Telnyx/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Telnyx/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Telnyx/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Telnyx/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Telnyx/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/TurboSms/.gitattributes b/src/Symfony/Component/Notifier/Bridge/TurboSms/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/TurboSms/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/TurboSms/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/TurboSms/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/TurboSms/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/TurboSms/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/TurboSms/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/TurboSms/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/TurboSms/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Twilio/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Twilio/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Twilio/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Twilio/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Twilio/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Twilio/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Twilio/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Twilio/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Twilio/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Twilio/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Vonage/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Vonage/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Vonage/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Vonage/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Vonage/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Vonage/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Vonage/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Vonage/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Vonage/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Vonage/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Yunpian/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Yunpian/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Yunpian/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Yunpian/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Yunpian/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Yunpian/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Yunpian/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Yunpian/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Yunpian/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Yunpian/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Bridge/Zulip/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Zulip/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Notifier/Bridge/Zulip/.gitattributes +++ b/src/Symfony/Component/Notifier/Bridge/Zulip/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Notifier/Bridge/Zulip/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Notifier/Bridge/Zulip/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Zulip/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Notifier/Bridge/Zulip/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Notifier/Bridge/Zulip/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Notifier/Bridge/Zulip/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Notifier/Tests/Transport/FailoverTransportTest.php b/src/Symfony/Component/Notifier/Tests/Transport/FailoverTransportTest.php index 2b48c20e20ff0..07d4720459b4d 100644 --- a/src/Symfony/Component/Notifier/Tests/Transport/FailoverTransportTest.php +++ b/src/Symfony/Component/Notifier/Tests/Transport/FailoverTransportTest.php @@ -121,13 +121,17 @@ public function testSendAllDeadWithinRetryPeriod() $t1->expects($this->once())->method('send'); $t2 = $this->createMock(TransportInterface::class); $t2->method('supports')->with($message)->willReturn(true); - $t2->expects($this->exactly(3)) + + $matcher = $this->exactly(3); + $t2->expects($matcher) ->method('send') - ->willReturnOnConsecutiveCalls( - new SentMessage($message, 't2'), - new SentMessage($message, 't2'), - $this->throwException($this->createMock(TransportExceptionInterface::class)) - ); + ->willReturnCallback(function () use ($matcher, $message) { + if (3 === $matcher->getInvocationCount()) { + throw $this->createMock(TransportExceptionInterface::class); + } + + return new SentMessage($message, 't2'); + }); $t = new FailoverTransport([$t1, $t2], 40); $t->send($message); sleep(4); @@ -146,16 +150,27 @@ public function testSendOneDeadButRecover() $t1 = $this->createMock(TransportInterface::class); $t1->method('supports')->with($message)->willReturn(true); - $t1->expects($this->exactly(2))->method('send')->willReturnOnConsecutiveCalls( - $this->throwException($this->createMock(TransportExceptionInterface::class)), - new SentMessage($message, 't1') - ); + + $t1Matcher = $this->exactly(2); + $t1->expects($t1Matcher)->method('send') + ->willReturnCallback(function () use ($t1Matcher, $message) { + if (1 === $t1Matcher->getInvocationCount()) { + throw $this->createMock(TransportExceptionInterface::class); + } + + return new SentMessage($message, 't1'); + }); $t2 = $this->createMock(TransportInterface::class); $t2->method('supports')->with($message)->willReturn(true); - $t2->expects($this->exactly(2))->method('send')->willReturnOnConsecutiveCalls( - new SentMessage($message, 't2'), - $this->throwException($this->createMock(TransportExceptionInterface::class)) - ); + + $t2Matcher = $this->exactly(2); + $t2->expects($t2Matcher)->method('send')->willReturnCallback(function () use ($t2Matcher, $message) { + if (1 === $t2Matcher->getInvocationCount()) { + return new SentMessage($message, 't1'); + } + + throw $this->createMock(TransportExceptionInterface::class); + }); $t = new FailoverTransport([$t1, $t2], 1); diff --git a/src/Symfony/Component/OptionsResolver/.gitattributes b/src/Symfony/Component/OptionsResolver/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/OptionsResolver/.gitattributes +++ b/src/Symfony/Component/OptionsResolver/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/OptionsResolver/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/OptionsResolver/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/OptionsResolver/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/OptionsResolver/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/OptionsResolver/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/OptionsResolver/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/PasswordHasher/.gitattributes b/src/Symfony/Component/PasswordHasher/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/PasswordHasher/.gitattributes +++ b/src/Symfony/Component/PasswordHasher/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/PasswordHasher/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/PasswordHasher/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/PasswordHasher/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/PasswordHasher/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/PasswordHasher/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/PasswordHasher/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/PasswordHasher/Tests/Hasher/NativePasswordHasherTest.php b/src/Symfony/Component/PasswordHasher/Tests/Hasher/NativePasswordHasherTest.php index 4cf708b806296..324e1dc65b9ca 100644 --- a/src/Symfony/Component/PasswordHasher/Tests/Hasher/NativePasswordHasherTest.php +++ b/src/Symfony/Component/PasswordHasher/Tests/Hasher/NativePasswordHasherTest.php @@ -98,16 +98,44 @@ public function testBcryptWithLongPassword() $this->assertTrue($hasher->verify($hasher->hash($plainPassword), $plainPassword)); } - public function testBcryptWithNulByte() + /** + * @requires PHP < 8.4 + */ + public function testBcryptWithNulByteWithNativePasswordHash() { $hasher = new NativePasswordHasher(null, null, 4, \PASSWORD_BCRYPT); $plainPassword = "a\0b"; - if (\PHP_VERSION_ID < 80218 || \PHP_VERSION_ID >= 80300 && \PHP_VERSION_ID < 80305) { - // password_hash() does not accept passwords containing NUL bytes since PHP 8.2.18 and 8.3.5 - $this->assertFalse($hasher->verify(password_hash($plainPassword, \PASSWORD_BCRYPT, ['cost' => 4]), $plainPassword)); + try { + $hash = password_hash($plainPassword, \PASSWORD_BCRYPT, ['cost' => 4]); + } catch (\Throwable $throwable) { + // we skip the test in case the current PHP version does not support NUL bytes in passwords + // with bcrypt + // + // @see https://github.com/php/php-src/commit/11f2568767660ffe92fbc6799800e01203aad73a + if (str_contains($throwable->getMessage(), 'Bcrypt password must not contain null character')) { + $this->markTestSkipped('password_hash() does not accept passwords containing NUL bytes.'); + } + + throw $throwable; } + if (null === $hash) { + // we also skip the test in case password_hash() returns null as + // implemented in security patches backports + // + // @see https://github.com/shivammathur/php-src-backports/commit/d22d9ebb29dce86edd622205dd1196a2796c08c7 + $this->markTestSkipped('password_hash() does not accept passwords containing NUL bytes.'); + } + + $this->assertFalse($hasher->verify($hash, $plainPassword)); + } + + public function testPasswordNulByteGracefullyHandled() + { + $hasher = new NativePasswordHasher(null, null, 4, \PASSWORD_BCRYPT); + $plainPassword = "a\0b"; + $this->assertTrue($hasher->verify($hasher->hash($plainPassword), $plainPassword)); } diff --git a/src/Symfony/Component/PasswordHasher/Tests/Hasher/SodiumPasswordHasherTest.php b/src/Symfony/Component/PasswordHasher/Tests/Hasher/SodiumPasswordHasherTest.php index 101c09fc46ed3..ed04b5e097c58 100644 --- a/src/Symfony/Component/PasswordHasher/Tests/Hasher/SodiumPasswordHasherTest.php +++ b/src/Symfony/Component/PasswordHasher/Tests/Hasher/SodiumPasswordHasherTest.php @@ -73,17 +73,45 @@ public function testBcryptWithLongPassword() $this->assertTrue($hasher->verify((new NativePasswordHasher(null, null, 4, \PASSWORD_BCRYPT))->hash($plainPassword), $plainPassword)); } - public function testBcryptWithNulByte() + /** + * @requires PHP < 8.4 + */ + public function testBcryptWithNulByteWithNativePasswordHash() { $hasher = new SodiumPasswordHasher(null, null); $plainPassword = "a\0b"; - if (\PHP_VERSION_ID < 80218 || \PHP_VERSION_ID >= 80300 && \PHP_VERSION_ID < 80305) { - // password_hash() does not accept passwords containing NUL bytes since PHP 8.2.18 and 8.3.5 - $this->assertFalse($hasher->verify(password_hash($plainPassword, \PASSWORD_BCRYPT, ['cost' => 4]), $plainPassword)); + try { + $hash = password_hash($plainPassword, \PASSWORD_BCRYPT, ['cost' => 4]); + } catch (\Throwable $throwable) { + // we skip the test in case the current PHP version does not support NUL bytes in passwords + // with bcrypt + // + // @see https://github.com/php/php-src/commit/11f2568767660ffe92fbc6799800e01203aad73a + if (str_contains($throwable->getMessage(), 'Bcrypt password must not contain null character')) { + $this->markTestSkipped('password_hash() does not accept passwords containing NUL bytes.'); + } + + throw $throwable; } - $this->assertTrue($hasher->verify((new NativePasswordHasher(null, null, 4, \PASSWORD_BCRYPT))->hash($plainPassword), $plainPassword)); + if (null === $hash) { + // we also skip the test in case password_hash() returns null as + // implemented in security patches backports + // + // @see https://github.com/shivammathur/php-src-backports/commit/d22d9ebb29dce86edd622205dd1196a2796c08c7 + $this->markTestSkipped('password_hash() does not accept passwords containing NUL bytes.'); + } + + $this->assertFalse($hasher->verify($hash, $plainPassword)); + } + + public function testPasswordNulByteGracefullyHandled() + { + $hasher = new SodiumPasswordHasher(null, null); + $plainPassword = "a\0b"; + + $this->assertTrue($hasher->verify($hasher->hash($plainPassword), $plainPassword)); } public function testUserProvidedSaltIsNotUsed() diff --git a/src/Symfony/Component/PasswordHasher/Tests/Hasher/UserPasswordHasherTest.php b/src/Symfony/Component/PasswordHasher/Tests/Hasher/UserPasswordHasherTest.php index 32805b1917ec7..c8f057cf85ec2 100644 --- a/src/Symfony/Component/PasswordHasher/Tests/Hasher/UserPasswordHasherTest.php +++ b/src/Symfony/Component/PasswordHasher/Tests/Hasher/UserPasswordHasherTest.php @@ -154,7 +154,7 @@ public function testNeedsRehash() $mockPasswordHasherFactory->expects($this->any()) ->method('getPasswordHasher') ->with($user) - ->will($this->onConsecutiveCalls($hasher, $hasher, new NativePasswordHasher(5, 20000, 5), $hasher)); + ->willReturn($hasher, $hasher, new NativePasswordHasher(5, 20000, 5), $hasher); $passwordHasher = new UserPasswordHasher($mockPasswordHasherFactory); diff --git a/src/Symfony/Component/Process/.gitattributes b/src/Symfony/Component/Process/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Process/.gitattributes +++ b/src/Symfony/Component/Process/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Process/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Process/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Process/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Process/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Process/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Process/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php b/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php index 5c63cf0f91c47..6d089def27ad1 100644 --- a/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php +++ b/src/Symfony/Component/Process/Tests/ExecutableFinderTest.php @@ -109,12 +109,16 @@ public function testFindWithOpenBaseDir() $this->markTestSkipped('Cannot test when open_basedir is set'); } - $this->iniSet('open_basedir', \dirname(\PHP_BINARY).\PATH_SEPARATOR.'/'); + $initialOpenBaseDir = ini_set('open_basedir', \dirname(\PHP_BINARY).\PATH_SEPARATOR.'/'); - $finder = new ExecutableFinder(); - $result = $finder->find($this->getPhpBinaryName()); + try { + $finder = new ExecutableFinder(); + $result = $finder->find($this->getPhpBinaryName()); - $this->assertSamePath(\PHP_BINARY, $result); + $this->assertSamePath(\PHP_BINARY, $result); + } finally { + ini_set('open_basedir', $initialOpenBaseDir); + } } /** @@ -130,12 +134,17 @@ public function testFindProcessInOpenBasedir() } $this->setPath(''); - $this->iniSet('open_basedir', \PHP_BINARY.\PATH_SEPARATOR.'/'); - $finder = new ExecutableFinder(); - $result = $finder->find($this->getPhpBinaryName(), false); + $initialOpenBaseDir = ini_set('open_basedir', \PHP_BINARY.\PATH_SEPARATOR.'/'); - $this->assertSamePath(\PHP_BINARY, $result); + try { + $finder = new ExecutableFinder(); + $result = $finder->find($this->getPhpBinaryName(), false); + + $this->assertSamePath(\PHP_BINARY, $result); + } finally { + ini_set('open_basedir', $initialOpenBaseDir); + } } public function testFindBatchExecutableOnWindows() diff --git a/src/Symfony/Component/PropertyAccess/.gitattributes b/src/Symfony/Component/PropertyAccess/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/PropertyAccess/.gitattributes +++ b/src/Symfony/Component/PropertyAccess/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/PropertyAccess/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/PropertyAccess/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/PropertyAccess/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/PropertyAccess/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/PropertyAccess/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/PropertyAccess/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/PropertyInfo/.gitattributes b/src/Symfony/Component/PropertyInfo/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/PropertyInfo/.gitattributes +++ b/src/Symfony/Component/PropertyInfo/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/PropertyInfo/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/PropertyInfo/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/PropertyInfo/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/PropertyInfo/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/PropertyInfo/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/PropertyInfo/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/RateLimiter/.gitattributes b/src/Symfony/Component/RateLimiter/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/RateLimiter/.gitattributes +++ b/src/Symfony/Component/RateLimiter/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/RateLimiter/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/RateLimiter/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/RateLimiter/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/RateLimiter/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/RateLimiter/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/RateLimiter/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Routing/.gitattributes b/src/Symfony/Component/Routing/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Routing/.gitattributes +++ b/src/Symfony/Component/Routing/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Routing/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Routing/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Routing/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Routing/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Routing/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Routing/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php b/src/Symfony/Component/Routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php index 64e47438386d4..ef3061db7b9ec 100644 --- a/src/Symfony/Component/Routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php +++ b/src/Symfony/Component/Routing/Tests/Generator/Dumper/CompiledUrlGeneratorDumperTest.php @@ -63,10 +63,12 @@ protected function tearDown(): void parent::tearDown(); @unlink($this->testTmpFilepath); + @unlink($this->largeTestTmpFilepath); $this->routeCollection = null; $this->generatorDumper = null; $this->testTmpFilepath = null; + $this->largeTestTmpFilepath = null; } public function testDumpWithRoutes() diff --git a/src/Symfony/Component/Routing/Tests/Loader/AbstractAnnotationLoaderTestCase.php b/src/Symfony/Component/Routing/Tests/Loader/AbstractAnnotationLoaderTestCase.php index e743ef2e35d50..c081f5e6cbbd7 100644 --- a/src/Symfony/Component/Routing/Tests/Loader/AbstractAnnotationLoaderTestCase.php +++ b/src/Symfony/Component/Routing/Tests/Loader/AbstractAnnotationLoaderTestCase.php @@ -13,6 +13,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\Routing\Loader\AnnotationClassLoader; +use Symfony\Component\Routing\Route; abstract class AbstractAnnotationLoaderTestCase extends TestCase { @@ -26,9 +27,10 @@ public function getReader() public function getClassLoader($reader) { - return $this->getMockBuilder(AnnotationClassLoader::class) - ->setConstructorArgs([$reader]) - ->getMockForAbstractClass() - ; + return new class($reader) extends AnnotationClassLoader { + protected function configureRoute(Route $route, \ReflectionClass $class, \ReflectionMethod $method, object $annot): void + { + } + }; } } diff --git a/src/Symfony/Component/Routing/Tests/Loader/ObjectLoaderTest.php b/src/Symfony/Component/Routing/Tests/Loader/ObjectLoaderTest.php index 51f7045a12163..62cb6b9f843c1 100644 --- a/src/Symfony/Component/Routing/Tests/Loader/ObjectLoaderTest.php +++ b/src/Symfony/Component/Routing/Tests/Loader/ObjectLoaderTest.php @@ -81,9 +81,8 @@ public function testExceptionOnBadMethod() public function testExceptionOnMethodNotReturningCollection() { $this->expectException(\LogicException::class); - $service = $this->getMockBuilder(\stdClass::class) - ->addMethods(['loadRoutes']) - ->getMock(); + + $service = $this->createMock(CustomRouteLoader::class); $service->expects($this->once()) ->method('loadRoutes') ->willReturn('NOT_A_COLLECTION'); @@ -109,6 +108,11 @@ protected function getObject(string $id): object } } +interface CustomRouteLoader +{ + public function loadRoutes(); +} + class TestObjectLoaderRouteService { private $collection; diff --git a/src/Symfony/Component/Routing/Tests/Matcher/RedirectableUrlMatcherTest.php b/src/Symfony/Component/Routing/Tests/Matcher/RedirectableUrlMatcherTest.php index d1fd035d12aed..e5093a749b8dc 100644 --- a/src/Symfony/Component/Routing/Tests/Matcher/RedirectableUrlMatcherTest.php +++ b/src/Symfony/Component/Routing/Tests/Matcher/RedirectableUrlMatcherTest.php @@ -211,6 +211,9 @@ public function testTrailingRequirementWithDefaultA() protected function getUrlMatcher(RouteCollection $routes, ?RequestContext $context = null) { - return $this->getMockForAbstractClass(RedirectableUrlMatcher::class, [$routes, $context ?? new RequestContext()]); + return $this->getMockBuilder(RedirectableUrlMatcher::class) + ->setConstructorArgs([$routes, $context ?? new RequestContext()]) + ->onlyMethods(['redirect']) + ->getMock(); } } diff --git a/src/Symfony/Component/Runtime/.gitattributes b/src/Symfony/Component/Runtime/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Runtime/.gitattributes +++ b/src/Symfony/Component/Runtime/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Runtime/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Runtime/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Runtime/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Runtime/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Runtime/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Runtime/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Security/Core/.gitattributes b/src/Symfony/Component/Security/Core/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Security/Core/.gitattributes +++ b/src/Symfony/Component/Security/Core/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Security/Core/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Security/Core/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Security/Core/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Security/Core/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Security/Core/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Security/Core/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.af.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.af.xlf index 014111dff1262..7bcb92066c72f 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.af.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.af.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Te veel mislukte aanmeldpogings, probeer asseblief weer oor %minutes% minuut. + + Too many failed login attempts, please try again in %minutes% minutes. + Te veel mislukte aanmeldpogings, probeer asseblief weer oor %minutes% minute. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.ar.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.ar.xlf index 4871bc6676620..d90e830ff18f4 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.ar.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.ar.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. عدد كبير جدا من محاولات الدخول الفاشلة، يرجى اعادة المحاولة بعد %minutes% دقيقة. + + Too many failed login attempts, please try again in %minutes% minutes. + عدد محاولات تسجيل الدخول الفاشلة كثيرة، الرجاء المحاولة مرة أخرى بعد %minutes% دقيقة.|عدد محاولات تسجيل الدخول الفاشلة كثيرة، الرجاء المحاولة مرة أخرى بعد %minutes% دقائق. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf index 29d26c4fbb784..25cb8605d2bc8 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.az.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Həddindən artıq uğursuz giriş cəhdi, lütfən %minutes% dəqiqə ərzində yenidən yoxlayın. + + Too many failed login attempts, please try again in %minutes% minutes. + Çox sayda uğursuz giriş cəhdi, zəhmət olmasa %minutes% dəqiqə sonra yenidən cəhd edin.|Çox sayda uğursuz giriş cəhdi, zəhmət olmasa %minutes% dəqiqə sonra yenidən cəhd edin. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf index f9dd10d472fcf..194392935fcc1 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.be.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Занадта шмат няўдалых спроб уваходу ў сістэму, паспрабуйце спробу праз %minutes% хвіліну. + + Too many failed login attempts, please try again in %minutes% minutes. + Занадта шмат няўдалых спробаў уваходу, калі ласка, паспрабуйце зноў праз %minutes% хвіліну.|Занадта шмат няўдалых спробаў уваходу, калі ласка, паспрабуйце зноў праз %minutes% хвіліны.|Занадта шмат няўдалых спробаў уваходу, калі ласка, паспрабуйце зноў праз %minutes% хвілін. + 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 8c04364db7166..7fdd4252411be 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.bg.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.bg.xlf @@ -74,6 +74,10 @@ 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.bs.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.bs.xlf index d3fde1a5d2f01..f58dce0ea8e59 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.bs.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.bs.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Previše neuspjelih pokušaja prijave, pokušajte ponovo za %minutes% minuta. + + Too many failed login attempts, please try again in %minutes% minutes. + Previše neuspješnih pokušaja prijave, pokušajte ponovo za %minutes% minut.|Previše neuspješnih pokušaja prijave, pokušajte ponovo za %minutes% minuta. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.ca.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.ca.xlf index 1450b8d0d4581..6d7dc7fc23e33 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.ca.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.ca.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Massa intents d'inici de sessió fallits, torneu-ho a provar en %minutes% minut. + + Too many failed login attempts, please try again in %minutes% minutes. + Massa intents fallits d'inici de sessió, torneu-ho a provar d'aquí a %minutes% minuts. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.cs.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.cs.xlf index 2572e628a8a68..a37e34e106ed1 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.cs.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.cs.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Příliš mnoho neúspěšných pokusů o přihlášení, zkuste to prosím znovu za %minutes% minutu. + + Too many failed login attempts, please try again in %minutes% minutes. + Příliš mnoho neúspěšných pokusů o přihlášení, zkuste to prosím znovu za %minutes% minutu.|Příliš mnoho neúspěšných pokusů o přihlášení, zkuste to prosím znovu za %minutes% minuty.|Příliš mnoho neúspěšných pokusů o přihlášení, zkuste to prosím znovu za %minutes% minut. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.cy.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.cy.xlf index b701c291c5049..ddb47097a93c7 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.cy.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.cy.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Gormod o ymdrechion mewngofnodi wedi methu, ceisiwch eto ymhen %minutes% munud. + + Too many failed login attempts, please try again in %minutes% minutes. + Gormod o ymdrechion mewngofnodi wedi methu, rhowch gynnig arall arni mewn %minutes% munud.|Gormod o ymdrechion mewngofnodi wedi methu, rhowch gynnig arall arni mewn %minutes% munud. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.da.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.da.xlf index bd58bee7037c2..564f0eee992ee 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.da.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.da.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. For mange mislykkede loginforsøg. Prøv venligst igen om %minutes% minut. + + Too many failed login attempts, please try again in %minutes% minutes. + For mange mislykkede loginforsøg, prøv igen om %minutes% minutter. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.de.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.de.xlf index 76cb737ae25f3..c1c457abd92b3 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.de.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.de.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Zu viele fehlgeschlagene Anmeldeversuche, bitte versuchen Sie es in einer Minute noch einmal. + + Too many failed login attempts, please try again in %minutes% minutes. + Zu viele fehlgeschlagene Anmeldeversuche, bitte versuchen Sie es in %minutes% Minuten noch einmal. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.el.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.el.xlf index bebd2a486a3e7..25cfb43bdf474 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.el.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.el.xlf @@ -74,6 +74,10 @@ 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.en.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.en.xlf index 589ca1babed5a..dffde89751e55 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.en.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.en.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Too many failed login attempts, please try again in %minutes% minute. + + Too many failed login attempts, please try again in %minutes% minutes. + Too many failed login attempts, please try again in %minutes% minutes. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.es.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.es.xlf index 971b97e69829a..e8af87e5bb9c8 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.es.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.es.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Demasiados intentos fallidos de inicio de sesión, inténtelo de nuevo en %minutes% minuto. + + Too many failed login attempts, please try again in %minutes% minutes. + Demasiados intentos fallidos de inicio de sesión, inténtelo de nuevo en %minutes% minutos. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.et.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.et.xlf index e09c718d9e302..b87cb71ceec7f 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.et.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.et.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Liiga palju ebaõnnestunud autentimise katseid, palun proovi uuesti %minutes% minuti pärast. + + Too many failed login attempts, please try again in %minutes% minutes. + Liiga palju nurjunud sisselogimiskatseid, proovige uuesti %minutes% minuti pärast. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.eu.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.eu.xlf index 7b294c2249969..0f0a71342ff38 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.eu.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.eu.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Saioa hasteko huts gehiegi egin dira, saiatu berriro minutu %minutes% geroago. + + Too many failed login attempts, please try again in %minutes% minutes. + Saioa hasteko saiakera huts gehiegi, saiatu berriro %minutes% minututan. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.fa.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.fa.xlf index d5ab89f6a264d..897c34b8e86b0 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.fa.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.fa.xlf @@ -74,6 +74,10 @@ 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.fi.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.fi.xlf index c50d484633250..7df4a19347428 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.fi.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.fi.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Liian monta epäonnistunutta kirjautumisyritystä, yritä uudelleen %minutes% minuutin kuluttua. + + Too many failed login attempts, please try again in %minutes% minutes. + Liian monta epäonnistunutta kirjautumisyritystä, yritä uudelleen %minutes% minuutin kuluttua. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.fr.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.fr.xlf index 4594e8eaac409..058ad9473b96a 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.fr.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.fr.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Plusieurs tentatives de connexion ont échoué, veuillez réessayer dans %minutes% minute. + + Too many failed login attempts, please try again in %minutes% minutes. + Trop de tentatives de connexion échouées, veuillez réessayer dans %minutes% minutes. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.gl.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.gl.xlf index 5ec7187aaf43a..49f48dbed9412 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.gl.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.gl.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Demasiados intentos de inicio de sesión errados, por favor, ténteo de novo en %minutes% minuto. + + Too many failed login attempts, please try again in %minutes% minutes. + Demasiados intentos fallidos de inicio de sesión, inténtao de novo en %minutes% minutos. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.he.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.he.xlf index f1294d0c9e272..b1d6afd434e8a 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.he.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.he.xlf @@ -74,6 +74,10 @@ 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.hr.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.hr.xlf index b61f133ad9ad0..f3b5a257e5f28 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.hr.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.hr.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Previše neuspjelih pokušaja prijave, molim pokušajte ponovo za %minutes% minutu. + + Too many failed login attempts, please try again in %minutes% minutes. + Previše neuspjelih pokušaja prijave, pokušajte ponovo za %minutes% minutu.|Previše neuspjelih pokušaja prijave, pokušajte ponovo za %minutes% minute.|Previše neuspjelih pokušaja prijave, pokušajte ponovo za %minutes% minuta. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.hu.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.hu.xlf index 6262acf50915b..bdee5f6813fbf 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.hu.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.hu.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Túl sok sikertelen bejelentkezési kísérlet, kérjük próbálja újra %minutes% perc múlva. + + Too many failed login attempts, please try again in %minutes% minutes. + Túl sok sikertelen bejelentkezési kísérlet, kérjük, próbálja újra %minutes% perc múlva. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.hy.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.hy.xlf index e58ce08b739b4..e506c9198812c 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.hy.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.hy.xlf @@ -74,6 +74,10 @@ 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.id.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.id.xlf index 477e91bc16cf2..4c1cd9965e1af 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.id.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.id.xlf @@ -4,7 +4,7 @@ An authentication exception occurred. - Terjadi sebuah pengecualian otentikasi. + Terjadi kesalahan otentikasi. Authentication credentials could not be found. @@ -16,7 +16,7 @@ Invalid credentials. - Kredensial salah. + Kredensial tidak valid. Cookie has already been used by someone else. @@ -28,7 +28,7 @@ Invalid CSRF token. - Token CSRF salah. + Token CSRF tidak valid. No authentication provider found to support the authentication token. @@ -64,15 +64,19 @@ Too many failed login attempts, please try again later. - Terlalu banyak percobaan login yang salah, silahkan coba lagi nanti. + Terlalu banyak percobaan login yang gagal, silahkan coba lagi nanti. Invalid or expired login link. - Link login salah atau sudah kedaluwarsa. + Link login tidak valid atau sudah kedaluwarsa. Too many failed login attempts, please try again in %minutes% minute. - Terlalu banyak percobaan login yang salah, silahkan coba lagi dalam %minutes% menit. + Terlalu banyak percobaan login yang gagal, silahkan coba lagi dalam %minutes% menit. + + + Too many failed login attempts, please try again in %minutes% minutes. + Terlalu banyak upaya login yang gagal, silakan coba lagi dalam beberapa %minutes% menit. diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.it.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.it.xlf index 4100dbd11b1f0..ef250923e411c 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.it.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.it.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Troppi tentativi di login falliti, riprova tra %minutes% minuto. + + Too many failed login attempts, please try again in %minutes% minutes. + Troppi tentativi di accesso falliti, riprova tra %minutes% minuti. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.ja.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.ja.xlf index f344b570129b7..bc3a18aefd8b2 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.ja.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.ja.xlf @@ -74,6 +74,10 @@ 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.lb.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.lb.xlf index ae0a4fd760540..181ef2444f62b 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.lb.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.lb.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Zu vill fehlgeschloen Loginversich, w. e. g. probéiert nach am %minutes% Minutt. + + Too many failed login attempts, please try again in %minutes% minutes. + Ze vill Feeler beim Umellen, versicht weg erëm an %minutes% Minutten. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.lt.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.lt.xlf index 19e553a04bfb5..8053d0da23a87 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.lt.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.lt.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Per daug nepavykusių prisijungimo bandymų, pabandykite dar kartą po %minutes% minutės. + + Too many failed login attempts, please try again in %minutes% minutes. + Per daug nesėkmingų prisijungimo bandymų, bandykite vėl po %minutes% minutės.|Per daug nesėkmingų prisijungimo bandymų, bandykite vėl po %minutes% minučių. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.lv.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.lv.xlf index 45775be0335ee..fdf0a09698887 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.lv.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.lv.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Pārāk daudz nesekmīgu autentifikācijas mēģinājumu, lūdzu mēģiniet vēlreiz pēc %minutes% minūtes. + + Too many failed login attempts, please try again in %minutes% minutes. + Pārāk daudz neveiksmīgu autentifikācijas mēģinājumu, lūdzu, mēģiniet vēlreiz pēc %minutes% minūtes.|Pārāk daudz neveiksmīgu autentifikācijas mēģinājumu, lūdzu, mēģiniet vēlreiz pēc %minutes% minūtēm. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.mk.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.mk.xlf index e82e31cefab7c..ba046eca2c15b 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.mk.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.mk.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Премногу неуспешни обиди за најавување, обидете се повторно за %minutes% минута. + + Too many failed login attempts, please try again in %minutes% minutes. + Претерано многу неуспешни обиди за најавување, ве молиме обидете се повторно за %minutes% минута.|Претерано многу неуспешни обиди за најавување, ве молиме обидете се повторно за %minutes% минути. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.mn.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.mn.xlf index 3a14608923612..33a9ffda2163b 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.mn.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.mn.xlf @@ -74,6 +74,10 @@ 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.my.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.my.xlf index 066dae7673d92..8550e745ef813 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.my.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.my.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Login ၀င်ရန်ကြိုးစားမှုများလွန်းပါသည်၊ ကျေးဇူးပြု၍ နောက် %minutes% မှထပ်မံကြိုးစားပါ။ + + Too many failed login attempts, please try again in %minutes% minutes. + ဝင်ရောက်မှု မအောင်မြင်သော ကြိုးပမ်းမှုများအတွက် တစ်ခါတည်း ပြန်လုပ်မည်။ ထပ်မံကြိုးစားကြည့်ပါ။ %minutes% မိနစ်အတွင်း|ဝင်ရောက်မှု မအောင်မြင်သော ကြိုးပမ်းမှုများအတွက် တစ်ခါတည်း ပြန်လုပ်မည်။ ထပ်မံကြိုးစားကြည့်ပါ။ %minutes% မိနစ်အတွင်း + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.nb.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.nb.xlf index 549bcbf65d488..9ace014112098 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.nb.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.nb.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. For mange mislykkede påloggingsforsøk, prøv igjen om %minutes% minutt. + + Too many failed login attempts, please try again in %minutes% minutes. + For mange mislykkede påloggingsforsøk, prøv igjen om %minutes% minutter. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.nl.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.nl.xlf index 418e1409d1458..4549d9f1c34f3 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.nl.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.nl.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Te veel onjuiste inlogpogingen, probeer het opnieuw over %minutes% minuut. + + Too many failed login attempts, please try again in %minutes% minutes. + Te veel mislukte inlogpogingen, probeer het over %minutes% minuten opnieuw. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.nn.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.nn.xlf index db49db3992bfe..1a4c32b737909 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.nn.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.nn.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. For mange mislykkede påloggingsforsøk, prøv igjen om %minutes% minutt. + + Too many failed login attempts, please try again in %minutes% minutes. + For mange mislukka innloggingsforsøk, prøv igjen om %minutes% minutt. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.no.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.no.xlf index 549bcbf65d488..9ace014112098 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.no.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.no.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. For mange mislykkede påloggingsforsøk, prøv igjen om %minutes% minutt. + + Too many failed login attempts, please try again in %minutes% minutes. + For mange mislykkede påloggingsforsøk, prøv igjen om %minutes% minutter. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.pl.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.pl.xlf index 4833f59db16af..0cfc58b35bf2d 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.pl.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.pl.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Zbyt wiele nieudanych prób logowania, spróbuj ponownie po upływie %minutes% minut. + + Too many failed login attempts, please try again in %minutes% minutes. + Zbyt wiele nieudanych prób logowania, spróbuj ponownie za %minutes% minutę.|Zbyt wiele nieudanych prób logowania, spróbuj ponownie za %minutes% minuty.|Zbyt wiele nieudanych prób logowania, spróbuj ponownie za %minutes% minut. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.pt.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.pt.xlf index 20fd523d3516d..5ae30c96f8ca9 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.pt.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.pt.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Demasiadas tentativas de login, tente novamente num minuto. + + Too many failed login attempts, please try again in %minutes% minutes. + Muitas tentativas de login sem sucesso, por favor tente novamente em %minutes% minutos. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.pt_BR.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.pt_BR.xlf index f15b3a8909720..675b600e83783 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.pt_BR.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.pt_BR.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Muitas tentativas de login inválidas, por favor, tente novamente em um minuto. + + Too many failed login attempts, please try again in %minutes% minutes. + Muitas tentativas de login sem sucesso, por favor tente novamente em %minutes% minutos. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.ro.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.ro.xlf index 07bb782e68312..3316275fdec13 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.ro.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.ro.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Prea multe încercări nereușite, încearcă din nou în %minutes% minut. + + Too many failed login attempts, please try again in %minutes% minutes. + Prea multe încercări eșuate de autentificare, vă rugăm să încercați din nou peste %minutes% minut.|Prea multe încercări eșuate de autentificare, vă rugăm să încercați din nou peste %minutes% minute. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.ru.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.ru.xlf index 05003efcc2b77..8705a24cff2e3 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.ru.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.ru.xlf @@ -72,7 +72,11 @@ Too many failed login attempts, please try again in %minutes% minute. - Слишком много неудачных попыток входа в систему, повторите попытку через %minutes% минуту. + Слишком много неудачных попыток входа, повторите попытку через %minutes% минуту. + + + Too many failed login attempts, please try again in %minutes% minutes. + Слишком много неудачных попыток входа, повторите попытку через %minutes% минуту.|Слишком много неудачных попыток входа, повторите попытку через %minutes% минуты.|Слишком много неудачных попыток входа, повторите попытку через %minutes% минут. diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.sk.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.sk.xlf index 5d67a2454d049..b08757de0086f 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.sk.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.sk.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Príliš veľa neúspešných pokusov o prihlásenie. Skúste to znova o %minutes% minútu. + + Too many failed login attempts, please try again in %minutes% minutes. + Príliš veľa neúspešných pokusov o prihlásenie, skúste to prosím znova o %minutes% minútu.|Príliš veľa neúspešných pokusov o prihlásenie, skúste to prosím znova o %minutes% minúty.|Príliš veľa neúspešných pokusov o prihlásenie, skúste to prosím znova o %minutes% minút. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.sl.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.sl.xlf index 218864b42680f..7d0514005116d 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.sl.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.sl.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Preveč neuspelih poskusov prijave, poskusite znova čez %minutes% minuto. + + Too many failed login attempts, please try again in %minutes% minutes. + Preveč neuspešnih poskusov prijave, poskusite znova čez %minutes% minuto.|Preveč neuspešnih poskusov prijave, poskusite znova čez %minutes% minut. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.sq.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.sq.xlf index 905ac7b6ec58b..44f129e306115 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.sq.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.sq.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Shumë përpjekje të dështuara për identifikim; provo sërish pas %minutes% minutë. + + Too many failed login attempts, please try again in %minutes% minutes. + Shumë përpjekje të pasuksesshme për t'u identifikuar, ju lutemi provoni përsëri pas %minutes% minutash. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.sr_Cyrl.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.sr_Cyrl.xlf index 0a18dff55678a..c4e58def93226 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.sr_Cyrl.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.sr_Cyrl.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Превише неуспешних покушаја пријављивања, молим покушајте поново за %minutes% минут. + + Too many failed login attempts, please try again in %minutes% minutes. + Превише неуспешних покушаја пријављивања, покушајте поново за %minutes% минут.|Превише неуспешних покушаја пријављивања, покушајте поново за %minutes% минута.|Превише неуспешних покушаја пријављивања, покушајте поново за %minutes% минута. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.sr_Latn.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.sr_Latn.xlf index 79403cb97d1d5..ad0774f9a0bb2 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.sr_Latn.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.sr_Latn.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Previše neuspešnih pokušaja prijavljivanja, molim pokušajte ponovo za %minutes% minut. + + Too many failed login attempts, please try again in %minutes% minutes. + Previše neuspešnih pokušaja prijavljivanja, pokušajte ponovo za %minutes% minut.|Previše neuspešnih pokušaja prijavljivanja, pokušajte ponovo za %minutes% minuta.|Previše neuspešnih pokušaja prijavljivanja, pokušajte ponovo za %minutes% minuta. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.sv.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.sv.xlf index 7604431130b9a..dffe36df6350f 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.sv.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.sv.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. För många misslyckade inloggningsförsök, försök igen om %minutes% minut. + + Too many failed login attempts, please try again in %minutes% minutes. + För många misslyckade inloggningsförsök, vänligen försök igen om %minutes% minuter. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.th.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.th.xlf index 4e066754de340..0209b4c423eb7 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.th.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.th.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. มีความพยายามเข้าสู่ระบบล้มเหลวมากเกินไป โปรดลองอีกครั้งใน %minutes% นาที + + Too many failed login attempts, please try again in %minutes% minutes. + มีความพยายามในการเข้าสู่ระบบล้มเหลวมากเกินไป โปรดลองอีกครั้งใน %minutes% นาที.|มีความพยายามในการเข้าสู่ระบบล้มเหลวมากเกินไป โปรดลองอีกครั้งใน %minutes% นาที. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.tl.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.tl.xlf index 4c8d455eeeb68..c02222dedb204 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.tl.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.tl.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Napakaraming nabigong mga pagtatangka sa pag-login, pakisubukan ulit sa% minuto% minuto. + + Too many failed login attempts, please try again in %minutes% minutes. + Napakaraming nabigong pagtatangka ng pag-login, mangyaring subukang muli sa loob ng %minutes% minuto.|Napakaraming nabigong pagtatangka ng pag-login, mangyaring subukang muli sa loob ng %minutes% minuto. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.tr.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.tr.xlf index da131b5faa332..4cfc1cb9dfce0 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.tr.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.tr.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Çok fazla başarısız giriş denemesi, lütfen %minutes% dakika sonra tekrar deneyin. + + Too many failed login attempts, please try again in %minutes% minutes. + Çok fazla başarısız giriş denemesi, lütfen %minutes% dakika sonra tekrar deneyin.|Çok fazla başarısız giriş denemesi, lütfen %minutes% dakika sonra tekrar deneyin. + 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 48bb6960373ae..6b27de7caed99 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.uk.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.uk.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Забагато невдалих спроб входу. Будь ласка, спробуйте знову через %minutes% хвилину. + + Too many failed login attempts, please try again in %minutes% minutes. + Забагато невдалих спроб входу, будь ласка, спробуйте ще раз через %minutes% хвилину.|Забагато невдалих спроб входу, будь ласка, спробуйте ще раз через %minutes% хвилини.|Забагато невдалих спроб входу, будь ласка, спробуйте ще раз через %minutes% хвилин. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.ur.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.ur.xlf index 070c9bbfd48a1..5c705cd0f7293 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.ur.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.ur.xlf @@ -74,6 +74,10 @@ 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.uz.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.uz.xlf index 574f46c36c663..ec690c5f43711 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.uz.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.uz.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Kirish uchun muvaffaqiyatsiz urinishlar, %minutes% daqiqadan so'ng qayta urinib ko'ring. + + Too many failed login attempts, please try again in %minutes% minutes. + Koʻplab muvaffaqiyatsiz kirish urinishlari, iltimos, %minutes% daqiqadan so'ng qayta urinib koʻring.|Koʻplab muvaffaqiyatsiz kirish urinishlari, iltimos, %minutes% daqiqadan so'ng qayta urinib koʻring. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.vi.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.vi.xlf index cca3cfd7dd834..fc4595c8d7c77 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.vi.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.vi.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. Quá nhiều lần thử đăng nhập không thành công, vui lòng thử lại sau %minutes% phút. + + Too many failed login attempts, please try again in %minutes% minutes. + Quá nhiều lần đăng nhập không thành công, vui lòng thử lại sau %minutes% phút.|Quá nhiều lần đăng nhập không thành công, vui lòng thử lại sau %minutes% phút. + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.zh_CN.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.zh_CN.xlf index 1d218426793da..9954d866a89e2 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.zh_CN.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.zh_CN.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. 登入失败的次数过多,请在%minutes%分钟后再试。 + + Too many failed login attempts, please try again in %minutes% minutes. + 登录尝试失败次数过多,请在 %minutes% 分钟后再试。|登录尝试失败次数过多,请在 %minutes% 分钟后再试。 + diff --git a/src/Symfony/Component/Security/Core/Resources/translations/security.zh_TW.xlf b/src/Symfony/Component/Security/Core/Resources/translations/security.zh_TW.xlf index 43372798665d2..097ce9976f32f 100644 --- a/src/Symfony/Component/Security/Core/Resources/translations/security.zh_TW.xlf +++ b/src/Symfony/Component/Security/Core/Resources/translations/security.zh_TW.xlf @@ -74,6 +74,10 @@ Too many failed login attempts, please try again in %minutes% minute. 登錄失敗的次數過多,請在%minutes%分鐘後再試。 + + Too many failed login attempts, please try again in %minutes% minutes. + 嘗試登入失敗次數過多,請 %minutes% 分鐘後再試。|嘗試登入失敗次數過多,請 %minutes% 分鐘後再試。 + diff --git a/src/Symfony/Component/Security/Core/Tests/Authentication/Provider/UserAuthenticationProviderTest.php b/src/Symfony/Component/Security/Core/Tests/Authentication/Provider/UserAuthenticationProviderTest.php index 8eaf3bb15f378..0527069eebada 100644 --- a/src/Symfony/Component/Security/Core/Tests/Authentication/Provider/UserAuthenticationProviderTest.php +++ b/src/Symfony/Component/Security/Core/Tests/Authentication/Provider/UserAuthenticationProviderTest.php @@ -22,6 +22,7 @@ use Symfony\Component\Security\Core\Exception\BadCredentialsException; use Symfony\Component\Security\Core\Exception\CredentialsExpiredException; use Symfony\Component\Security\Core\Exception\UserNotFoundException; +use Symfony\Component\Security\Core\Tests\Fixtures\MockableUsernamePasswordTokenWithRoles; use Symfony\Component\Security\Core\User\InMemoryUser; use Symfony\Component\Security\Core\User\UserCheckerInterface; use Symfony\Component\Security\Core\User\UserInterface; @@ -232,7 +233,9 @@ public function testAuthenticatePreservesOriginalToken() protected function getSupportedToken() { - $mock = $this->getMockBuilder(UsernamePasswordToken::class)->onlyMethods(['getCredentials', 'getFirewallName'])->addMethods(['getRoles'])->disableOriginalConstructor()->getMock(); + $mock = $this->getMockBuilder(MockableUsernamePasswordTokenWithRoles::class) + ->onlyMethods(['getCredentials', 'getFirewallName', 'getRoles']) + ->disableOriginalConstructor()->getMock(); $mock ->expects($this->any()) ->method('getFirewallName') @@ -250,6 +253,9 @@ protected function getProvider($userChecker = false, $hide = true) $userChecker = $this->createMock(UserCheckerInterface::class); } - return $this->getMockForAbstractClass(UserAuthenticationProvider::class, [$userChecker, 'key', $hide]); + return $this->getMockBuilder(UserAuthenticationProvider::class) + ->setConstructorArgs([$userChecker, 'key', $hide]) + ->onlyMethods(['retrieveUser', 'checkAuthentication']) + ->getMock(); } } diff --git a/src/Symfony/Component/Security/Core/Tests/Authorization/AccessDecisionManagerTest.php b/src/Symfony/Component/Security/Core/Tests/Authorization/AccessDecisionManagerTest.php index aa75671c8e344..6aa99ef3177f5 100644 --- a/src/Symfony/Component/Security/Core/Tests/Authorization/AccessDecisionManagerTest.php +++ b/src/Symfony/Component/Security/Core/Tests/Authorization/AccessDecisionManagerTest.php @@ -179,7 +179,8 @@ public static function getStrategyTests(): array public function testCacheableVoters() { $token = $this->createMock(TokenInterface::class); - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); + $voter ->expects($this->once()) ->method('supportsAttribute') @@ -203,7 +204,7 @@ public function testCacheableVoters() public function testCacheableVotersIgnoresNonStringAttributes() { $token = $this->createMock(TokenInterface::class); - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); $voter ->expects($this->never()) ->method('supportsAttribute'); @@ -225,7 +226,7 @@ public function testCacheableVotersIgnoresNonStringAttributes() public function testCacheableVotersWithMultipleAttributes() { $token = $this->createMock(TokenInterface::class); - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); $voter ->expects($this->exactly(2)) ->method('supportsAttribute') @@ -258,7 +259,7 @@ public function testCacheableVotersWithMultipleAttributes() public function testCacheableVotersWithEmptyAttributes() { $token = $this->createMock(TokenInterface::class); - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); $voter ->expects($this->never()) ->method('supportsAttribute'); @@ -280,7 +281,7 @@ public function testCacheableVotersWithEmptyAttributes() public function testCacheableVotersSupportsMethodsCalledOnce() { $token = $this->createMock(TokenInterface::class); - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); $voter ->expects($this->once()) ->method('supportsAttribute') @@ -305,7 +306,7 @@ public function testCacheableVotersSupportsMethodsCalledOnce() public function testCacheableVotersNotCalled() { $token = $this->createMock(TokenInterface::class); - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); $voter ->expects($this->once()) ->method('supportsAttribute') @@ -325,7 +326,7 @@ public function testCacheableVotersNotCalled() public function testCacheableVotersWithMultipleAttributesAndNonString() { $token = $this->createMock(TokenInterface::class); - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); $voter ->expects($this->once()) ->method('supportsAttribute') diff --git a/src/Symfony/Component/Security/Core/Tests/Authorization/Voter/TraceableVoterTest.php b/src/Symfony/Component/Security/Core/Tests/Authorization/Voter/TraceableVoterTest.php index d0f8ae08f97db..1d8c86490de4e 100644 --- a/src/Symfony/Component/Security/Core/Tests/Authorization/Voter/TraceableVoterTest.php +++ b/src/Symfony/Component/Security/Core/Tests/Authorization/Voter/TraceableVoterTest.php @@ -23,18 +23,18 @@ class TraceableVoterTest extends TestCase { public function testGetDecoratedVoterClass() { - $voter = $this->getMockBuilder(VoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createStub(VoterInterface::class); - $sut = new TraceableVoter($voter, $this->getMockBuilder(EventDispatcherInterface::class)->getMockForAbstractClass()); + $sut = new TraceableVoter($voter, $this->createStub(EventDispatcherInterface::class)); $this->assertSame($voter, $sut->getDecoratedVoter()); } public function testVote() { - $voter = $this->getMockBuilder(VoterInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(VoterInterface::class); - $eventDispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMockForAbstractClass(); - $token = $this->getMockBuilder(TokenInterface::class)->getMockForAbstractClass(); + $eventDispatcher = $this->createMock(EventDispatcherInterface::class); + $token = $this->createStub(TokenInterface::class); $voter ->expects($this->once()) @@ -55,8 +55,8 @@ public function testVote() public function testSupportsAttributeOnCacheable() { - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); - $eventDispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); + $eventDispatcher = $this->createStub(EventDispatcherInterface::class); $voter ->expects($this->once()) @@ -71,8 +71,8 @@ public function testSupportsAttributeOnCacheable() public function testSupportsTypeOnCacheable() { - $voter = $this->getMockBuilder(CacheableVoterInterface::class)->getMockForAbstractClass(); - $eventDispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMockForAbstractClass(); + $voter = $this->createMock(CacheableVoterInterface::class); + $eventDispatcher = $this->createStub(EventDispatcherInterface::class); $voter ->expects($this->once()) @@ -87,8 +87,8 @@ public function testSupportsTypeOnCacheable() public function testSupportsAttributeOnNonCacheable() { - $voter = $this->getMockBuilder(VoterInterface::class)->getMockForAbstractClass(); - $eventDispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMockForAbstractClass(); + $voter = $this->createStub(VoterInterface::class); + $eventDispatcher = $this->createStub(EventDispatcherInterface::class); $sut = new TraceableVoter($voter, $eventDispatcher); @@ -97,8 +97,8 @@ public function testSupportsAttributeOnNonCacheable() public function testSupportsTypeOnNonCacheable() { - $voter = $this->getMockBuilder(VoterInterface::class)->getMockForAbstractClass(); - $eventDispatcher = $this->getMockBuilder(EventDispatcherInterface::class)->getMockForAbstractClass(); + $voter = $this->createStub(VoterInterface::class); + $eventDispatcher = $this->createStub(EventDispatcherInterface::class); $sut = new TraceableVoter($voter, $eventDispatcher); diff --git a/src/Symfony/Component/Security/Core/Tests/Encoder/UserPasswordEncoderTest.php b/src/Symfony/Component/Security/Core/Tests/Encoder/UserPasswordEncoderTest.php index 6f52fbf1b22d9..9fca415024e12 100644 --- a/src/Symfony/Component/Security/Core/Tests/Encoder/UserPasswordEncoderTest.php +++ b/src/Symfony/Component/Security/Core/Tests/Encoder/UserPasswordEncoderTest.php @@ -86,7 +86,7 @@ public function testNeedsRehash() $mockEncoderFactory->expects($this->any()) ->method('getEncoder') ->with($user) - ->will($this->onConsecutiveCalls($encoder, $encoder, new NativePasswordEncoder(5, 20000, 5), $encoder)); + ->willReturn($encoder, $encoder, new NativePasswordEncoder(5, 20000, 5), $encoder); $passwordEncoder = new UserPasswordEncoder($mockEncoderFactory); diff --git a/src/Symfony/Component/Security/Core/Tests/Fixtures/MockableUsernamePasswordTokenWithRoles.php b/src/Symfony/Component/Security/Core/Tests/Fixtures/MockableUsernamePasswordTokenWithRoles.php new file mode 100644 index 0000000000000..94fd47fdc1a83 --- /dev/null +++ b/src/Symfony/Component/Security/Core/Tests/Fixtures/MockableUsernamePasswordTokenWithRoles.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Security\Core\Tests\Fixtures; + +use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; + +class MockableUsernamePasswordTokenWithRoles extends UsernamePasswordToken +{ + public function getRoles(): array + { + return []; + } +} diff --git a/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php b/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php index a5a74f0b05651..c44402bdfe05d 100644 --- a/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php +++ b/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php @@ -252,14 +252,14 @@ public function testPasswordUpgrades() { $user = new InMemoryUser('user', 'pwd'); - $provider1 = $this->getMockForAbstractClass(MigratingProvider::class); + $provider1 = $this->createMock(MigratingProvider::class); $provider1 ->expects($this->once()) ->method('upgradePassword') ->willThrowException(new UnsupportedUserException('unsupported')) ; - $provider2 = $this->getMockForAbstractClass(MigratingProvider::class); + $provider2 = $this->createMock(MigratingProvider::class); $provider2 ->expects($this->once()) ->method('upgradePassword') diff --git a/src/Symfony/Component/Security/Csrf/.gitattributes b/src/Symfony/Component/Security/Csrf/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Security/Csrf/.gitattributes +++ b/src/Symfony/Component/Security/Csrf/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Security/Csrf/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Security/Csrf/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Security/Csrf/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Security/Csrf/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Security/Csrf/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Security/Csrf/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Security/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php b/src/Symfony/Component/Security/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php index dd86f43ebc65a..46cdb282bcd47 100644 --- a/src/Symfony/Component/Security/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php +++ b/src/Symfony/Component/Security/Csrf/Tests/TokenGenerator/UriSafeTokenGeneratorTest.php @@ -53,9 +53,7 @@ public function testGenerateToken() $token = $this->generator->generateToken(); $this->assertTrue(ctype_print($token), 'is printable'); - $this->assertStringNotMatchesFormat('%S+%S', $token, 'is URI safe'); - $this->assertStringNotMatchesFormat('%S/%S', $token, 'is URI safe'); - $this->assertStringNotMatchesFormat('%S=%S', $token, 'is URI safe'); + $this->assertDoesNotMatchRegularExpression('#.+([+/=]).+#', $token, 'is URI safe'); } /** diff --git a/src/Symfony/Component/Security/Guard/.gitattributes b/src/Symfony/Component/Security/Guard/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Security/Guard/.gitattributes +++ b/src/Symfony/Component/Security/Guard/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Security/Guard/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Security/Guard/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Security/Guard/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Security/Guard/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Security/Guard/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Security/Guard/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php b/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php index 4f39ad61f6f3a..3e56c7b885717 100644 --- a/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php +++ b/src/Symfony/Component/Security/Guard/Tests/GuardAuthenticatorHandlerTest.php @@ -159,12 +159,11 @@ public function testSessionStrategyIsNotCalledWhenStateless() public function testSessionIsNotInstantiatedOnStatelessFirewall() { - $sessionFactory = $this->getMockBuilder(\stdClass::class) - ->addMethods(['__invoke']) - ->getMock(); + $this->expectNotToPerformAssertions(); - $sessionFactory->expects($this->never()) - ->method('__invoke'); + $sessionFactory = static function (): void { + throw new \LogicException('This should not be called'); + }; $this->request->setSessionFactory($sessionFactory); diff --git a/src/Symfony/Component/Security/Http/.gitattributes b/src/Symfony/Component/Security/Http/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Security/Http/.gitattributes +++ b/src/Symfony/Component/Security/Http/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Security/Http/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Security/Http/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Security/Http/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Security/Http/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Security/Http/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Security/Http/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Security/Http/Tests/EventListener/PasswordMigratingListenerTest.php b/src/Symfony/Component/Security/Http/Tests/EventListener/PasswordMigratingListenerTest.php index 8cc200bd99517..4e8ca62a2f036 100644 --- a/src/Symfony/Component/Security/Http/Tests/EventListener/PasswordMigratingListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/EventListener/PasswordMigratingListenerTest.php @@ -108,7 +108,7 @@ public function testUnsupportedPassport() public function testUpgradeWithUpgrader() { - $passwordUpgrader = $this->getMockForAbstractClass(TestMigratingUserProvider::class); + $passwordUpgrader = $this->createMock(TestMigratingUserProvider::class); $passwordUpgrader->expects($this->once()) ->method('upgradePassword') ->with($this->user, 'new-hash') @@ -120,7 +120,7 @@ public function testUpgradeWithUpgrader() public function testUpgradeWithoutUpgrader() { - $userLoader = $this->getMockForAbstractClass(TestMigratingUserProvider::class); + $userLoader = $this->createMock(TestMigratingUserProvider::class); $userLoader->expects($this->any())->method('loadUserByIdentifier')->willReturn($this->user); $userLoader->expects($this->exactly(2)) diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/AbstractPreAuthenticatedListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/AbstractPreAuthenticatedListenerTest.php index 673ae997061d5..c32bd7181f3f8 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/AbstractPreAuthenticatedListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/AbstractPreAuthenticatedListenerTest.php @@ -56,11 +56,15 @@ public function testHandleWithValidValues() ->willReturn($token) ; - $listener = $this->getMockForAbstractClass(AbstractPreAuthenticatedListener::class, [ - $tokenStorage, - $authenticationManager, - 'TheProviderKey', - ]); + $listener = $this->getMockBuilder(AbstractPreAuthenticatedListener::class) + ->setConstructorArgs([ + $tokenStorage, + $authenticationManager, + 'TheProviderKey', + ]) + ->onlyMethods(['getPreAuthenticatedData']) + ->getMock(); + $listener ->expects($this->once()) ->method('getPreAuthenticatedData') @@ -95,12 +99,15 @@ public function testHandleWhenAuthenticationFails() ->willThrowException($exception) ; - $listener = $this->getMockForAbstractClass( - AbstractPreAuthenticatedListener::class, [ - $tokenStorage, - $authenticationManager, - 'TheProviderKey', - ]); + $listener = $this->getMockBuilder(AbstractPreAuthenticatedListener::class) + ->setConstructorArgs([ + $tokenStorage, + $authenticationManager, + 'TheProviderKey', + ]) + ->onlyMethods(['getPreAuthenticatedData']) + ->getMock(); + $listener ->expects($this->once()) ->method('getPreAuthenticatedData') @@ -137,12 +144,15 @@ public function testHandleWhenAuthenticationFailsWithDifferentToken() ->willThrowException($exception) ; - $listener = $this->getMockForAbstractClass( - AbstractPreAuthenticatedListener::class, [ - $tokenStorage, - $authenticationManager, - 'TheProviderKey', - ]); + $listener = $this->getMockBuilder(AbstractPreAuthenticatedListener::class) + ->setConstructorArgs([ + $tokenStorage, + $authenticationManager, + 'TheProviderKey', + ]) + ->onlyMethods(['getPreAuthenticatedData']) + ->getMock(); + $listener ->expects($this->once()) ->method('getPreAuthenticatedData') @@ -174,12 +184,15 @@ public function testHandleWithASimilarAuthenticatedToken() ->method('authenticate') ; - $listener = $this->getMockForAbstractClass( - AbstractPreAuthenticatedListener::class, [ - $tokenStorage, - $authenticationManager, - 'TheProviderKey', - ]); + $listener = $this->getMockBuilder(AbstractPreAuthenticatedListener::class) + ->setConstructorArgs([ + $tokenStorage, + $authenticationManager, + 'TheProviderKey', + ]) + ->onlyMethods(['getPreAuthenticatedData']) + ->getMock(); + $listener ->expects($this->once()) ->method('getPreAuthenticatedData') @@ -217,12 +230,15 @@ public function testHandleWithAnInvalidSimilarToken() ->willThrowException($exception) ; - $listener = $this->getMockForAbstractClass( - AbstractPreAuthenticatedListener::class, [ - $tokenStorage, - $authenticationManager, - 'TheProviderKey', - ]); + $listener = $this->getMockBuilder(AbstractPreAuthenticatedListener::class) + ->setConstructorArgs([ + $tokenStorage, + $authenticationManager, + 'TheProviderKey', + ]) + ->onlyMethods(['getPreAuthenticatedData']) + ->getMock(); + $listener ->expects($this->once()) ->method('getPreAuthenticatedData') diff --git a/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php b/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php index 4d748592aad5f..5389e54ac690f 100644 --- a/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php @@ -366,8 +366,11 @@ public function testWithPreviousNotStartedSession() public function testSessionIsNotReported() { - $usageReporter = $this->getMockBuilder(\stdClass::class)->addMethods(['__invoke'])->getMock(); - $usageReporter->expects($this->never())->method('__invoke'); + $this->expectNotToPerformAssertions(); + + $usageReporter = static function (): void { + throw new \LogicException('This should not be called'); + }; $session = new Session(new MockArraySessionStorage(), null, null, $usageReporter); diff --git a/src/Symfony/Component/Security/Http/Tests/RememberMe/AbstractRememberMeServicesTest.php b/src/Symfony/Component/Security/Http/Tests/RememberMe/AbstractRememberMeServicesTest.php index 37e4d753da521..825ef808317fa 100644 --- a/src/Symfony/Component/Security/Http/Tests/RememberMe/AbstractRememberMeServicesTest.php +++ b/src/Symfony/Component/Security/Http/Tests/RememberMe/AbstractRememberMeServicesTest.php @@ -298,9 +298,12 @@ protected function getService($userProvider = null, $options = [], $logger = nul $userProvider = $this->getProvider(); } - return $this->getMockForAbstractClass(AbstractRememberMeServices::class, [ - [$userProvider], 'foosecret', 'fookey', $options, $logger, - ]); + return $this->getMockBuilder(AbstractRememberMeServices::class) + ->setConstructorArgs([ + [$userProvider], 'foosecret', 'fookey', $options, $logger, + ]) + ->onlyMethods(['processAutoLoginCookie', 'onLoginSuccess']) + ->getMock(); } protected function getProvider() diff --git a/src/Symfony/Component/Semaphore/.gitattributes b/src/Symfony/Component/Semaphore/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Semaphore/.gitattributes +++ b/src/Symfony/Component/Semaphore/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Semaphore/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Semaphore/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Semaphore/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Semaphore/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Semaphore/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Semaphore/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Semaphore/composer.json b/src/Symfony/Component/Semaphore/composer.json index cbbd11c7ffcb4..3927cb71d964d 100644 --- a/src/Symfony/Component/Semaphore/composer.json +++ b/src/Symfony/Component/Semaphore/composer.json @@ -24,7 +24,7 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "predis/predis": "~1.0" + "predis/predis": "^1.1|^2.0" }, "autoload": { "psr-4": { "Symfony\\Component\\Semaphore\\": "" }, diff --git a/src/Symfony/Component/Serializer/.gitattributes b/src/Symfony/Component/Serializer/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Serializer/.gitattributes +++ b/src/Symfony/Component/Serializer/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Serializer/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Serializer/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Serializer/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Serializer/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Serializer/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Serializer/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php index 55f78b1d0e013..a2d4df909dce8 100644 --- a/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php +++ b/src/Symfony/Component/Serializer/Encoder/CsvEncoder.php @@ -181,18 +181,24 @@ public function decode(string $data, string $format, array $context = []) $depth = $headerCount[$i]; $arr = &$item; for ($j = 0; $j < $depth; ++$j) { + $headerName = $headers[$i][$j]; + + if ('' === $headerName) { + $headerName = $i; + } + // Handle nested arrays if ($j === ($depth - 1)) { - $arr[$headers[$i][$j]] = $cols[$i]; + $arr[$headerName] = $cols[$i]; continue; } - if (!isset($arr[$headers[$i][$j]])) { - $arr[$headers[$i][$j]] = []; + if (!isset($arr[$headerName])) { + $arr[$headerName] = []; } - $arr = &$arr[$headers[$i][$j]]; + $arr = &$arr[$headerName]; } } diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php index 2192f8ac23c97..256be49ebca00 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php @@ -418,7 +418,7 @@ protected function instantiateObject(array &$data, string $class, array &$contex $exception = NotNormalizableValueException::createForUnexpectedDataType( sprintf('Failed to create object because the class misses the "%s" property.', $constructorParameter->name), - $data, + null, [$constructorParameterType], $context['deserialization_path'], true diff --git a/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php index 9aaac706f2133..619500828d506 100644 --- a/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php @@ -107,7 +107,7 @@ private function isSetMethod(\ReflectionMethod $method): bool { return !$method->isStatic() && (\PHP_VERSION_ID < 80000 || !$method->getAttributes(Ignore::class)) - && 1 === $method->getNumberOfRequiredParameters() + && 0 < $method->getNumberOfParameters() && str_starts_with($method->name, 'set'); } diff --git a/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php index a1ab11177482e..6a5413f69d317 100644 --- a/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/ObjectNormalizer.php @@ -36,6 +36,7 @@ class ObjectNormalizer extends AbstractObjectNormalizer protected $propertyAccessor; protected $propertyInfoExtractor; + private $writeInfoExtractor; private $objectClassResolver; @@ -54,6 +55,7 @@ public function __construct(?ClassMetadataFactoryInterface $classMetadataFactory }; $this->propertyInfoExtractor = $propertyInfoExtractor ?: new ReflectionExtractor(); + $this->writeInfoExtractor = new ReflectionExtractor(); } /** @@ -195,8 +197,15 @@ protected function isAllowedAttribute($classOrObject, string $attribute, ?string return $this->propertyInfoExtractor->isReadable($class, $attribute) || $this->hasAttributeAccessorMethod($class, $attribute); } - return $this->propertyInfoExtractor->isWritable($class, $attribute) - || ($writeInfo = $this->propertyInfoExtractor->getWriteInfo($class, $attribute)) && PropertyWriteInfo::TYPE_NONE !== $writeInfo->getType(); + if ($this->propertyInfoExtractor->isWritable($class, $attribute)) { + return true; + } + + if (($writeInfo = $this->writeInfoExtractor->getWriteInfo($class, $attribute)) && PropertyWriteInfo::TYPE_NONE !== $writeInfo->getType()) { + return true; + } + + return false; } private function hasAttributeAccessorMethod(string $class, string $attribute): bool diff --git a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php index 06cf6a0617d86..9b1bbfb281672 100644 --- a/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php +++ b/src/Symfony/Component/Serializer/Tests/Encoder/CsvEncoderTest.php @@ -218,7 +218,13 @@ public function testDecodeEmptyData() { $data = $this->encoder->decode("\n\n", 'csv'); - $this->assertSame([['' => null]], $data); + $this->assertSame([[0 => null]], $data); + } + + public function testMultipleEmptyHeaderNamesWithSeparator() + { + $this->assertSame([['', [1 => '']]], $this->encoder->decode(',. +,', 'csv')); } public function testEncodeVariableStructure() diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php index 2ca7d79fef075..a6477e97ad331 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/AbstractObjectNormalizerTest.php @@ -172,10 +172,10 @@ private function getDenormalizerForDummyCollection() { $extractor = $this->createMock(PhpDocExtractor::class); $extractor->method('getTypes') - ->will($this->onConsecutiveCalls( + ->willReturn( [new Type('array', false, null, true, new Type('int'), new Type('object', false, DummyChild::class))], null - )); + ); $denormalizer = new AbstractObjectNormalizerCollectionDummy(null, null, $extractor); $arrayDenormalizer = new ArrayDenormalizerDummy(); @@ -227,10 +227,10 @@ private function getDenormalizerForStringCollection() { $extractor = $this->createMock(PhpDocExtractor::class); $extractor->method('getTypes') - ->will($this->onConsecutiveCalls( + ->willReturn( [new Type('array', false, null, true, new Type('int'), new Type('string'))], null - )); + ); $denormalizer = new AbstractObjectNormalizerCollectionDummy(null, null, $extractor); $arrayDenormalizer = new ArrayDenormalizerDummy(); @@ -417,7 +417,7 @@ private function getDenormalizerForObjectWithBasicProperties() { $extractor = $this->createMock(PhpDocExtractor::class); $extractor->method('getTypes') - ->will($this->onConsecutiveCalls( + ->willReturn( [new Type('bool')], [new Type('bool')], [new Type('bool')], @@ -430,7 +430,7 @@ private function getDenormalizerForObjectWithBasicProperties() [new Type('float')], [new Type('float')], [new Type('float')] - )); + ); $denormalizer = new AbstractObjectNormalizerCollectionDummy(null, null, $extractor); $arrayDenormalizer = new ArrayDenormalizerDummy(); @@ -663,8 +663,7 @@ protected function createChildContext(array $parentContext, string $attribute, ? public function testDenormalizeXmlScalar() { - $normalizer = new class () extends AbstractObjectNormalizer - { + $normalizer = new class() extends AbstractObjectNormalizer { public function __construct() { parent::__construct(null, new MetadataAwareNameConverter(new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader())))); diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CallbacksTestTrait.php b/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CallbacksTestTrait.php index db7b226c3e14b..e573c8c227001 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CallbacksTestTrait.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CallbacksTestTrait.php @@ -126,13 +126,13 @@ public function testUncallableCallbacks($callbacks) $normalizer->normalize($obj, null, ['callbacks' => $callbacks]); } - public function provideNormalizeCallbacks() + public static function provideNormalizeCallbacks() { return [ 'Change a string' => [ [ 'bar' => function ($bar) { - $this->assertEquals('baz', $bar); + static::assertEquals('baz', $bar); return 'baz'; }, @@ -143,11 +143,11 @@ public function provideNormalizeCallbacks() 'Null an item' => [ [ 'bar' => function ($value, $object, $attributeName, $format, $context) { - $this->assertSame('baz', $value); - $this->assertInstanceOf(CallbacksObject::class, $object); - $this->assertSame('bar', $attributeName); - $this->assertSame('any', $format); - $this->assertArrayHasKey('circular_reference_limit_counters', $context); + static::assertSame('baz', $value); + static::assertInstanceOf(CallbacksObject::class, $object); + static::assertSame('bar', $attributeName); + static::assertSame('any', $format); + static::assertArrayHasKey('circular_reference_limit_counters', $context); }, ], 'baz', @@ -156,7 +156,7 @@ public function provideNormalizeCallbacks() 'Format a date' => [ [ 'bar' => function ($bar) { - $this->assertInstanceOf(\DateTime::class, $bar); + static::assertInstanceOf(\DateTime::class, $bar); return $bar->format('d-m-Y H:i:s'); }, @@ -190,13 +190,13 @@ public function provideNormalizeCallbacks() ]; } - public function provideDenormalizeCallbacks(): array + public static function provideDenormalizeCallbacks(): array { return [ 'Change a string' => [ [ 'bar' => function ($bar) { - $this->assertEquals('bar', $bar); + static::assertEquals('bar', $bar); return $bar; }, @@ -207,11 +207,11 @@ public function provideDenormalizeCallbacks(): array 'Null an item' => [ [ 'bar' => function ($value, $object, $attributeName, $format, $context) { - $this->assertSame('baz', $value); - $this->assertTrue(is_a($object, CallbacksObject::class, true)); - $this->assertSame('bar', $attributeName); - $this->assertSame('any', $format); - $this->assertIsArray($context); + static::assertSame('baz', $value); + static::assertTrue(is_a($object, CallbacksObject::class, true)); + static::assertSame('bar', $attributeName); + static::assertSame('any', $format); + static::assertIsArray($context); }, ], 'baz', @@ -220,7 +220,7 @@ public function provideDenormalizeCallbacks(): array 'Format a date' => [ [ 'bar' => function ($bar) { - $this->assertIsString($bar); + static::assertIsString($bar); return \DateTime::createFromFormat('d-m-Y H:i:s', $bar); }, @@ -254,13 +254,13 @@ public function provideDenormalizeCallbacks(): array ]; } - public function providerDenormalizeCallbacksWithTypedProperty(): array + public static function providerDenormalizeCallbacksWithTypedProperty(): array { return [ 'Change a typed string' => [ [ 'foo' => function ($foo) { - $this->assertEquals('foo', $foo); + static::assertEquals('foo', $foo); return $foo; }, @@ -271,11 +271,11 @@ public function providerDenormalizeCallbacksWithTypedProperty(): array 'Null an typed item' => [ [ 'foo' => function ($value, $object, $attributeName, $format, $context) { - $this->assertSame('fool', $value); - $this->assertTrue(is_a($object, CallbacksObject::class, true)); - $this->assertSame('foo', $attributeName); - $this->assertSame('any', $format); - $this->assertIsArray($context); + static::assertSame('fool', $value); + static::assertTrue(is_a($object, CallbacksObject::class, true)); + static::assertSame('foo', $attributeName); + static::assertSame('any', $format); + static::assertIsArray($context); }, ], 'fool', @@ -284,7 +284,7 @@ public function providerDenormalizeCallbacksWithTypedProperty(): array ]; } - public function provideInvalidCallbacks() + public static function provideInvalidCallbacks() { return [ [['bar' => null]], diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CircularReferenceTestTrait.php b/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CircularReferenceTestTrait.php index 1996e80e98a38..ffbddf2ab3f29 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CircularReferenceTestTrait.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/Features/CircularReferenceTestTrait.php @@ -23,7 +23,7 @@ abstract protected function getNormalizerForCircularReference(array $defaultCont abstract protected function getSelfReferencingModel(); - public function provideUnableToNormalizeCircularReference(): array + public static function provideUnableToNormalizeCircularReference(): array { return [ [[], [], 1], diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/Features/SkipUninitializedValuesTestTrait.php b/src/Symfony/Component/Serializer/Tests/Normalizer/Features/SkipUninitializedValuesTestTrait.php index 596b3404b7e24..02707768fc880 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/Features/SkipUninitializedValuesTestTrait.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/Features/SkipUninitializedValuesTestTrait.php @@ -44,7 +44,7 @@ public function testSkipUninitializedValues(array $context) $this->assertSame('value', $objectToPopulate->getUninitialized()); } - public function skipUninitializedValuesFlagProvider(): iterable + public static function skipUninitializedValuesFlagProvider(): iterable { yield 'passed manually' => [['skip_uninitialized_values' => true, 'groups' => ['foo']]]; yield 'using default context value' => [['groups' => ['foo']]]; diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php index e7c23cf58a574..424dd215e7952 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/GetSetMethodNormalizerTest.php @@ -538,6 +538,18 @@ public function testSupportsAndDenormalizeWithOnlyParentSetter() $obj = $this->normalizer->denormalize(['foo' => 'foo'], GetSetDummyChild::class); $this->assertSame('foo', $obj->getFoo()); } + + /** + * @testWith [{"foo":"foo"}, "getFoo", "foo"] + * [{"bar":"bar"}, "getBar", "bar"] + */ + public function testSupportsAndDenormalizeWithOptionalSetterArgument(array $data, string $method, string $expected) + { + $this->assertTrue($this->normalizer->supportsDenormalization($data, GetSetDummyWithOptionalAndMultipleSetterArgs::class)); + + $obj = $this->normalizer->denormalize($data, GetSetDummyWithOptionalAndMultipleSetterArgs::class); + $this->assertSame($expected, $obj->$method()); + } } class GetSetDummy @@ -861,3 +873,29 @@ public function setFoo($foo) $this->foo = $foo; } } + +class GetSetDummyWithOptionalAndMultipleSetterArgs +{ + private $foo; + private $bar; + + public function getFoo() + { + return $this->foo; + } + + public function setFoo($foo = null) + { + $this->foo = $foo; + } + + public function getBar() + { + return $this->bar; + } + + public function setBar($bar = null, $other = true) + { + $this->bar = $bar; + } +} diff --git a/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php b/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php index 830817b8b673b..5f88844974cd9 100644 --- a/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php +++ b/src/Symfony/Component/Serializer/Tests/Normalizer/ObjectNormalizerTest.php @@ -274,6 +274,22 @@ public function testConstructorWithObjectDenormalize() $this->assertEquals('bar', $obj->bar); } + public function testConstructorWithObjectDenormalizeUsingPropertyInfoExtractor() + { + $serializer = $this->createMock(ObjectSerializerNormalizer::class); + $normalizer = new ObjectNormalizer(null, null, null, null, null, null, [], new PropertyInfoExtractor()); + $normalizer->setSerializer($serializer); + + $data = new \stdClass(); + $data->foo = 'foo'; + $data->bar = 'bar'; + $data->baz = true; + $data->fooBar = 'foobar'; + $obj = $normalizer->denormalize($data, ObjectConstructorDummy::class, 'any'); + $this->assertEquals('foo', $obj->getFoo()); + $this->assertEquals('bar', $obj->bar); + } + public function testConstructorWithObjectTypeHintDenormalize() { $data = [ diff --git a/src/Symfony/Component/Serializer/Tests/SerializerTest.php b/src/Symfony/Component/Serializer/Tests/SerializerTest.php index 1fa299682dd3f..639d14e0d6664 100644 --- a/src/Symfony/Component/Serializer/Tests/SerializerTest.php +++ b/src/Symfony/Component/Serializer/Tests/SerializerTest.php @@ -1045,7 +1045,7 @@ public function testCollectDenormalizationErrors(?ClassMetadataFactory $classMet 'message' => 'The type of the "string" attribute for class "Symfony\Component\Serializer\Tests\Fixtures\Php74Full" must be one of "string" ("null" given).', ], [ - 'currentType' => 'array', + 'currentType' => 'null', 'expectedTypes' => [ 'unknown', ], @@ -1306,7 +1306,7 @@ public function testCollectDenormalizationErrorsWithConstructor(?ClassMetadataFa 'message' => 'The type of the "bool" attribute for class "Symfony\\Component\\Serializer\\Tests\\Fixtures\\Php80WithPromotedTypedConstructor" must be one of "bool" ("string" given).', ], [ - 'currentType' => 'array', + 'currentType' => 'null', 'expectedTypes' => [ 'string', ], @@ -1315,7 +1315,7 @@ public function testCollectDenormalizationErrorsWithConstructor(?ClassMetadataFa 'message' => 'Failed to create object because the class misses the "string" property.', ], [ - 'currentType' => 'array', + 'currentType' => 'null', 'expectedTypes' => [ 'int', ], @@ -1420,7 +1420,7 @@ public function testCollectDenormalizationErrorsWithEnumConstructor() $expected = [ [ - 'currentType' => 'array', + 'currentType' => 'null', 'useMessageForUser' => true, 'message' => 'Failed to create object because the class misses the "get" property.', ], @@ -1546,7 +1546,7 @@ public function testPartialDenormalizationWithMissingConstructorTypes() $expected = [ [ - 'currentType' => 'array', + 'currentType' => 'null', 'expectedTypes' => [ 'string', ], diff --git a/src/Symfony/Component/Stopwatch/.gitattributes b/src/Symfony/Component/Stopwatch/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Stopwatch/.gitattributes +++ b/src/Symfony/Component/Stopwatch/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Stopwatch/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Stopwatch/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Stopwatch/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Stopwatch/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Stopwatch/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Stopwatch/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/String/.gitattributes b/src/Symfony/Component/String/.gitattributes index 166549d614199..0f57d864c994d 100644 --- a/src/Symfony/Component/String/.gitattributes +++ b/src/Symfony/Component/String/.gitattributes @@ -2,4 +2,5 @@ /Resources/WcswidthDataGenerator.php export-ignore /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/String/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/String/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/String/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/String/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/String/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/String/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/String/AbstractUnicodeString.php b/src/Symfony/Component/String/AbstractUnicodeString.php index 52123f507733b..239f234239fb8 100644 --- a/src/Symfony/Component/String/AbstractUnicodeString.php +++ b/src/Symfony/Component/String/AbstractUnicodeString.php @@ -195,7 +195,7 @@ public function folded(bool $compat = true): parent if (!$compat || \PHP_VERSION_ID < 70300 || !\defined('Normalizer::NFKC_CF')) { $str->string = normalizer_normalize($str->string, $compat ? \Normalizer::NFKC : \Normalizer::NFC); - $str->string = mb_strtolower(str_replace(self::FOLD_FROM, self::FOLD_TO, $this->string), 'UTF-8'); + $str->string = mb_strtolower(str_replace(self::FOLD_FROM, self::FOLD_TO, $str->string), 'UTF-8'); } else { $str->string = normalizer_normalize($str->string, \Normalizer::NFKC_CF); } diff --git a/src/Symfony/Component/String/Inflector/EnglishInflector.php b/src/Symfony/Component/String/Inflector/EnglishInflector.php index 60eace3c9b283..d9eff19b9a950 100644 --- a/src/Symfony/Component/String/Inflector/EnglishInflector.php +++ b/src/Symfony/Component/String/Inflector/EnglishInflector.php @@ -238,6 +238,9 @@ final class EnglishInflector implements InflectorInterface // teeth (tooth) ['htoot', 5, true, true, 'teeth'], + // albums (album) + ['mubla', 5, true, true, 'albums'], + // bacteria (bacterium), criteria (criterion), phenomena (phenomenon) ['mu', 2, true, true, 'a'], diff --git a/src/Symfony/Component/String/Tests/AbstractUnicodeTestCase.php b/src/Symfony/Component/String/Tests/AbstractUnicodeTestCase.php index 49e44f8cf1bac..cddfe866c89b1 100644 --- a/src/Symfony/Component/String/Tests/AbstractUnicodeTestCase.php +++ b/src/Symfony/Component/String/Tests/AbstractUnicodeTestCase.php @@ -470,10 +470,10 @@ public static function provideBeforeAfterLastIgnoreCase(): array ); } - public static function provideToFoldedCase(): array + public static function provideFolded(): array { return array_merge( - parent::provideToFoldedCase(), + parent::provideFolded(), [ ['déjà', 'DéjÀ'], ['σσσ', 'Σσς'], diff --git a/src/Symfony/Component/String/Tests/Inflector/EnglishInflectorTest.php b/src/Symfony/Component/String/Tests/Inflector/EnglishInflectorTest.php index 51849fd42540a..ba8d6d797c4d0 100644 --- a/src/Symfony/Component/String/Tests/Inflector/EnglishInflectorTest.php +++ b/src/Symfony/Component/String/Tests/Inflector/EnglishInflectorTest.php @@ -24,6 +24,7 @@ public static function singularizeProvider() ['accesses', 'access'], ['addresses', 'address'], ['agendas', 'agenda'], + ['albums', 'album'], ['alumnae', 'alumna'], ['alumni', 'alumnus'], ['analyses', ['analys', 'analyse', 'analysis']], @@ -179,6 +180,7 @@ public static function pluralizeProvider() ['address', 'addresses'], ['agenda', 'agendas'], ['aircraft', 'aircraft'], + ['album', 'albums'], ['alumnus', 'alumni'], ['analysis', 'analyses'], ['antenna', 'antennas'], // antennae diff --git a/src/Symfony/Component/Templating/.gitattributes b/src/Symfony/Component/Templating/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Templating/.gitattributes +++ b/src/Symfony/Component/Templating/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Templating/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Templating/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Templating/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Templating/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Templating/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Templating/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Templating/Tests/DelegatingEngineTest.php b/src/Symfony/Component/Templating/Tests/DelegatingEngineTest.php index c3544f9156bd1..ad5322f34fd69 100644 --- a/src/Symfony/Component/Templating/Tests/DelegatingEngineTest.php +++ b/src/Symfony/Component/Templating/Tests/DelegatingEngineTest.php @@ -133,7 +133,7 @@ private function getEngineMock($template, $supports) private function getStreamingEngineMock($template, $supports) { - $engine = $this->getMockForAbstractClass(MyStreamingEngine::class); + $engine = $this->createMock(MyStreamingEngine::class); $engine->expects($this->once()) ->method('supports') diff --git a/src/Symfony/Component/Translation/.gitattributes b/src/Symfony/Component/Translation/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Translation/.gitattributes +++ b/src/Symfony/Component/Translation/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Translation/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Translation/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Translation/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Translation/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Translation/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Translation/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Translation/Bridge/Crowdin/.gitattributes b/src/Symfony/Component/Translation/Bridge/Crowdin/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Translation/Bridge/Crowdin/.gitattributes +++ b/src/Symfony/Component/Translation/Bridge/Crowdin/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Translation/Bridge/Crowdin/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Translation/Bridge/Crowdin/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Translation/Bridge/Crowdin/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Translation/Bridge/Crowdin/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Translation/Bridge/Crowdin/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Translation/Bridge/Crowdin/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Translation/Bridge/Loco/.gitattributes b/src/Symfony/Component/Translation/Bridge/Loco/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Translation/Bridge/Loco/.gitattributes +++ b/src/Symfony/Component/Translation/Bridge/Loco/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Translation/Bridge/Loco/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Translation/Bridge/Loco/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Translation/Bridge/Loco/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Translation/Bridge/Loco/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Translation/Bridge/Loco/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Translation/Bridge/Loco/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Translation/Bridge/Lokalise/.gitattributes b/src/Symfony/Component/Translation/Bridge/Lokalise/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Translation/Bridge/Lokalise/.gitattributes +++ b/src/Symfony/Component/Translation/Bridge/Lokalise/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Translation/Bridge/Lokalise/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Translation/Bridge/Lokalise/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Translation/Bridge/Lokalise/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Translation/Bridge/Lokalise/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Translation/Bridge/Lokalise/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Translation/Bridge/Lokalise/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Uid/.gitattributes b/src/Symfony/Component/Uid/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Uid/.gitattributes +++ b/src/Symfony/Component/Uid/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Uid/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Uid/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Uid/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Uid/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Uid/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Uid/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Validator/.gitattributes b/src/Symfony/Component/Validator/.gitattributes index b9f8f3944ce62..c34694db5f725 100644 --- a/src/Symfony/Component/Validator/.gitattributes +++ b/src/Symfony/Component/Validator/.gitattributes @@ -1,4 +1,5 @@ /Tests export-ignore /phpunit.xml.dist export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore /Resources/bin/sync-iban-formats.php export-ignore -/.git* export-ignore diff --git a/src/Symfony/Component/Validator/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Validator/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Validator/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Validator/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Validator/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Validator/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Validator/Constraints/IbanValidator.php b/src/Symfony/Component/Validator/Constraints/IbanValidator.php index 173cb6678dc0e..423e0099d94c5 100644 --- a/src/Symfony/Component/Validator/Constraints/IbanValidator.php +++ b/src/Symfony/Component/Validator/Constraints/IbanValidator.php @@ -228,6 +228,18 @@ public function validate($value, Constraint $constraint) return; } + // Check digits should always between 2 and 98 + // A ECBS document (https://www.ecbs.org/Download/EBS204_V3.PDF) replicates part of the ISO/IEC 7064:2003 standard as a method for generating check digits in the range 02 to 98. + $checkDigits = (int) substr($canonicalized, 2, 2); + if ($checkDigits < 2 || $checkDigits > 98) { + $this->context->buildViolation($constraint->message) + ->setParameter('{{ value }}', $this->formatValue($value)) + ->setCode(Iban::CHECKSUM_FAILED_ERROR) + ->addViolation(); + + return; + } + // Move the first four characters to the end // e.g. CH93 0076 2011 6238 5295 7 // -> 0076 2011 6238 5295 7 CH93 diff --git a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php index a7209d5377d85..957000274b2f3 100644 --- a/src/Symfony/Component/Validator/Mapping/ClassMetadata.php +++ b/src/Symfony/Component/Validator/Mapping/ClassMetadata.php @@ -210,7 +210,7 @@ public function addConstraint(Constraint $constraint) $this->cascadingStrategy = CascadingStrategy::CASCADE; foreach ($this->getReflectionClass()->getProperties() as $property) { - if ($property->hasType() && (('array' === $type = $property->getType()->getName()) || class_exists($type))) { + if ($this->canCascade($property->getType())) { $this->addPropertyConstraint($property->getName(), new Valid()); } } @@ -511,4 +511,33 @@ private function checkConstraint(Constraint $constraint) } } } + + private function canCascade(?\ReflectionType $type = null): bool + { + if (null === $type) { + return false; + } + + if ($type instanceof \ReflectionIntersectionType) { + foreach ($type->getTypes() as $nestedType) { + if ($this->canCascade($nestedType)) { + return true; + } + } + + return false; + } + + if ($type instanceof \ReflectionUnionType) { + foreach ($type->getTypes() as $nestedType) { + if (!$this->canCascade($nestedType)) { + return false; + } + } + + return true; + } + + return $type instanceof \ReflectionNamedType && (\in_array($type->getName(), ['array', 'null'], true) || class_exists($type->getName())); + } } diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.ja.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.ja.xlf index c977df4a3e186..9ec98ebbd47c4 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.ja.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.ja.xlf @@ -136,7 +136,7 @@ This value is not a valid IP address. - この値は有効なIPアドレスではありません。 + 有効なIPアドレスではありません。 This value is not a valid language. @@ -192,7 +192,7 @@ No temporary folder was configured in php.ini, or the configured folder does not exist. - php.iniに一時フォルダが設定されていないか、設定されたフォルダが存在しません。 + php.iniに一時フォルダが設定されていないか、設定されたフォルダが存在しません。 Cannot write temporary file to disk. @@ -224,7 +224,7 @@ This value is not a valid International Bank Account Number (IBAN). - この値は有効な国際銀行口座番号(IBAN)ではありません。 + 有効な国際銀行勘定番号(IBAN)ではありません。 This value is not a valid ISBN-10. @@ -312,7 +312,7 @@ This value is not a valid Business Identifier Code (BIC). - この値は有効なビジネス識別コード(BIC)ではありません。 + 有効なSWIFTコードではありません。 Error @@ -320,7 +320,7 @@ This value is not a valid UUID. - この値は有効なUUIDではありません。 + 有効なUUIDではありません。 This value should be a multiple of {{ compared_value }}. @@ -436,11 +436,11 @@ This value is not a valid MAC address. - この値は有効なMACアドレスではありません。 + 有効なMACアドレスではありません。 This URL is missing a top-level domain. - このURLはトップレベルドメインがありません。 + このURLはトップレベルドメインがありません。 diff --git a/src/Symfony/Component/Validator/Resources/translations/validators.nl.xlf b/src/Symfony/Component/Validator/Resources/translations/validators.nl.xlf index 7596799d0d904..aa4a3e2151f18 100644 --- a/src/Symfony/Component/Validator/Resources/translations/validators.nl.xlf +++ b/src/Symfony/Component/Validator/Resources/translations/validators.nl.xlf @@ -440,7 +440,7 @@ This URL is missing a top-level domain. - Deze URL mist een top-level domein. + Deze URL mist een top-level domein. diff --git a/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php b/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php index 89f8d0008e75a..0e89e78b1a039 100644 --- a/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php +++ b/src/Symfony/Component/Validator/Test/ConstraintValidatorTestCase.php @@ -80,8 +80,10 @@ protected function setUp(): void $this->validator = $this->createValidator(); $this->validator->initialize($this->context); - $this->defaultLocale = \Locale::getDefault(); - \Locale::setDefault('en'); + if (class_exists(\Locale::class)) { + $this->defaultLocale = \Locale::getDefault(); + \Locale::setDefault('en'); + } $this->expectedViolations = []; $this->call = 0; @@ -93,7 +95,9 @@ protected function tearDown(): void { $this->restoreDefaultTimezone(); - \Locale::setDefault($this->defaultLocale); + if (class_exists(\Locale::class)) { + \Locale::setDefault($this->defaultLocale); + } } protected function setDefaultTimezone(?string $defaultTimezone) diff --git a/src/Symfony/Component/Validator/Tests/Constraints/IbanValidatorTest.php b/src/Symfony/Component/Validator/Tests/Constraints/IbanValidatorTest.php index 70994f509170c..566430079d6b1 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/IbanValidatorTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/IbanValidatorTest.php @@ -401,6 +401,12 @@ public static function getIbansWithValidFormatButIncorrectChecksum() ['UA213223130000026007233566002'], // Ukraine ['AE260211000000230064017'], // United Arab Emirates ['VA59001123000012345671'], // Vatican City State + + // Checksum digits not between 02 and 98 + ['FO00 5432 0388 8999 44'], // Faroe Islands + ['NL01INGB0001393698'], // Netherlands + ['NL01RABO0331811235'], // Netherlands + ['RU99 0445 2560 0407 0281 0412 3456 7890 1'], // Russia ]; } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/UuidValidatorTest.php b/src/Symfony/Component/Validator/Tests/Constraints/UuidValidatorTest.php index d6d6e80699ed9..2c657a3766a7e 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/UuidValidatorTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/UuidValidatorTest.php @@ -45,7 +45,7 @@ public function testEmptyStringIsValid() public function testExpectsUuidConstraintCompatibleType() { $this->expectException(UnexpectedTypeException::class); - $constraint = $this->getMockForAbstractClass(Constraint::class); + $constraint = $this->createStub(Constraint::class); $this->validator->validate('216fff40-98d9-11e3-a5e2-0800200c9a66', $constraint); } diff --git a/src/Symfony/Component/Validator/Tests/Fixtures/CascadingEntityIntersection.php b/src/Symfony/Component/Validator/Tests/Fixtures/CascadingEntityIntersection.php new file mode 100644 index 0000000000000..9478f647c4b5d --- /dev/null +++ b/src/Symfony/Component/Validator/Tests/Fixtures/CascadingEntityIntersection.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Validator\Tests\Fixtures; + +class CascadingEntityIntersection +{ + public CascadedChild&\stdClass $classes; +} diff --git a/src/Symfony/Component/Validator/Tests/Fixtures/CascadingEntityUnion.php b/src/Symfony/Component/Validator/Tests/Fixtures/CascadingEntityUnion.php new file mode 100644 index 0000000000000..03c808fca330f --- /dev/null +++ b/src/Symfony/Component/Validator/Tests/Fixtures/CascadingEntityUnion.php @@ -0,0 +1,25 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Validator\Tests\Fixtures; + +class CascadingEntityUnion +{ + public CascadedChild|\stdClass $classes; + public CascadedChild|array $classAndArray; + public CascadedChild|null $classAndNull; + public array|null $arrayAndNull; + public CascadedChild|array|null $classAndArrayAndNull; + public int|string $scalars; + public int|null $scalarAndNull; + public CascadedChild|int $classAndScalar; + public array|int $arrayAndScalar; +} diff --git a/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php b/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php index a9f942319af83..4e0bca845a2cb 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/ClassMetadataTest.php @@ -25,6 +25,8 @@ use Symfony\Component\Validator\Tests\Fixtures\Annotation\EntityParent; use Symfony\Component\Validator\Tests\Fixtures\Annotation\GroupSequenceProviderEntity; use Symfony\Component\Validator\Tests\Fixtures\CascadingEntity; +use Symfony\Component\Validator\Tests\Fixtures\CascadingEntityIntersection; +use Symfony\Component\Validator\Tests\Fixtures\CascadingEntityUnion; use Symfony\Component\Validator\Tests\Fixtures\ClassConstraint; use Symfony\Component\Validator\Tests\Fixtures\ConstraintA; use Symfony\Component\Validator\Tests\Fixtures\ConstraintB; @@ -361,6 +363,40 @@ public function testCascadeConstraint() 'children', ], $metadata->getConstrainedProperties()); } + + /** + * @requires PHP 8.0 + */ + public function testCascadeConstraintWithUnionTypeProperties() + { + $metadata = new ClassMetadata(CascadingEntityUnion::class); + $metadata->addConstraint(new Cascade()); + + $this->assertSame(CascadingStrategy::CASCADE, $metadata->getCascadingStrategy()); + $this->assertCount(5, $metadata->properties); + $this->assertSame([ + 'classes', + 'classAndArray', + 'classAndNull', + 'arrayAndNull', + 'classAndArrayAndNull', + ], $metadata->getConstrainedProperties()); + } + + /** + * @requires PHP 8.1 + */ + public function testCascadeConstraintWithIntersectionTypeProperties() + { + $metadata = new ClassMetadata(CascadingEntityIntersection::class); + $metadata->addConstraint(new Cascade()); + + $this->assertSame(CascadingStrategy::CASCADE, $metadata->getCascadingStrategy()); + $this->assertCount(1, $metadata->properties); + $this->assertSame([ + 'classes', + ], $metadata->getConstrainedProperties()); + } } class ClassCompositeConstraint extends Composite diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Loader/FilesLoaderTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Loader/FilesLoaderTest.php index ea5e947be880b..0c2e2a9534de1 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/Loader/FilesLoaderTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/Loader/FilesLoaderTest.php @@ -36,11 +36,11 @@ public function testCallsActualFileLoaderForMetadata() public function getFilesLoader(LoaderInterface $loader) { - return $this->getMockForAbstractClass(FilesLoader::class, [[ + return new class([ __DIR__.'/constraint-mapping.xml', __DIR__.'/constraint-mapping.yaml', __DIR__.'/constraint-mapping.test', __DIR__.'/constraint-mapping.txt', - ], $loader]); + ], $loader) extends FilesLoader {}; } } diff --git a/src/Symfony/Component/Validator/Tests/Mapping/Loader/PropertyInfoLoaderTest.php b/src/Symfony/Component/Validator/Tests/Mapping/Loader/PropertyInfoLoaderTest.php index ee0f5fb97e60b..ab43246fe7f65 100644 --- a/src/Symfony/Component/Validator/Tests/Mapping/Loader/PropertyInfoLoaderTest.php +++ b/src/Symfony/Component/Validator/Tests/Mapping/Loader/PropertyInfoLoaderTest.php @@ -54,9 +54,10 @@ public function testLoadClassMetadata() 'noAutoMapping', ]) ; + $propertyInfoStub ->method('getTypes') - ->will($this->onConsecutiveCalls( + ->willReturn( [new Type(Type::BUILTIN_TYPE_STRING, true)], [new Type(Type::BUILTIN_TYPE_STRING)], [new Type(Type::BUILTIN_TYPE_STRING, true), new Type(Type::BUILTIN_TYPE_INT), new Type(Type::BUILTIN_TYPE_BOOL)], @@ -69,11 +70,12 @@ public function testLoadClassMetadata() [new Type(Type::BUILTIN_TYPE_ARRAY, true, null, true, null, new Type(Type::BUILTIN_TYPE_FLOAT))], [new Type(Type::BUILTIN_TYPE_STRING)], [new Type(Type::BUILTIN_TYPE_STRING)] - )) + ) ; + $propertyInfoStub ->method('isWritable') - ->will($this->onConsecutiveCalls( + ->willReturn( true, true, true, @@ -86,7 +88,7 @@ public function testLoadClassMetadata() true, false, true - )) + ) ; $propertyInfoLoader = new PropertyInfoLoader($propertyInfoStub, $propertyInfoStub, $propertyInfoStub, '{.*}'); @@ -222,9 +224,10 @@ public function testClassNoAutoMapping() ->method('getProperties') ->willReturn(['string', 'autoMappingExplicitlyEnabled']) ; + $propertyInfoStub ->method('getTypes') - ->willReturnOnConsecutiveCalls( + ->willReturn( [new Type(Type::BUILTIN_TYPE_STRING)], [new Type(Type::BUILTIN_TYPE_BOOL)] ); diff --git a/src/Symfony/Component/Validator/composer.json b/src/Symfony/Component/Validator/composer.json index 5cc9b399f1fb5..19a27b3333a81 100644 --- a/src/Symfony/Component/Validator/composer.json +++ b/src/Symfony/Component/Validator/composer.json @@ -72,7 +72,8 @@ "autoload": { "psr-4": { "Symfony\\Component\\Validator\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/bin/" ] }, "minimum-stability": "dev" diff --git a/src/Symfony/Component/VarDumper/.gitattributes b/src/Symfony/Component/VarDumper/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/VarDumper/.gitattributes +++ b/src/Symfony/Component/VarDumper/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/VarDumper/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/VarDumper/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/VarDumper/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/VarDumper/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/VarDumper/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/VarDumper/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php b/src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php index 35fd1e8a99b2b..87e5ffcc07858 100644 --- a/src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php +++ b/src/Symfony/Component/VarDumper/Caster/ReflectionCaster.php @@ -83,13 +83,13 @@ public static function castGenerator(\Generator $c, array $a, Stub $stub, bool $ // Cannot create ReflectionGenerator based on a terminated Generator try { $reflectionGenerator = new \ReflectionGenerator($c); + + return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested); } catch (\Exception $e) { $a[Caster::PREFIX_VIRTUAL.'closed'] = true; return $a; } - - return self::castReflectionGenerator($reflectionGenerator, $a, $stub, $isNested); } public static function castType(\ReflectionType $c, array $a, Stub $stub, bool $isNested) diff --git a/src/Symfony/Component/VarDumper/Tests/Caster/ReflectionCasterTest.php b/src/Symfony/Component/VarDumper/Tests/Caster/ReflectionCasterTest.php index e57999182ea89..a87fa55c8fa8f 100644 --- a/src/Symfony/Component/VarDumper/Tests/Caster/ReflectionCasterTest.php +++ b/src/Symfony/Component/VarDumper/Tests/Caster/ReflectionCasterTest.php @@ -500,6 +500,84 @@ class: "Symfony\Component\VarDumper\Tests\Caster\ReflectionCasterTest" ); } + /** + * @requires PHP < 8.4 + */ + public function testGeneratorPriorTo84() + { + if (\extension_loaded('xdebug')) { + $this->markTestSkipped('xdebug is active'); + } + + $generator = new GeneratorDemo(); + $generator = $generator->baz(); + + $expectedDump = <<<'EODUMP' +Generator { + this: Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo { …} + %s: { + %sGeneratorDemo.php:14 { + Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo->baz() + › { + › yield from bar(); + › } + } +%A} + closed: false +} +EODUMP; + + $this->assertDumpMatchesFormat($expectedDump, $generator); + + foreach ($generator as $v) { + break; + } + + $expectedDump = <<<'EODUMP' +array:2 [ + 0 => ReflectionGenerator { + this: Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo { …} + %s: { + %s%eTests%eFixtures%eGeneratorDemo.php:%d { + Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo() +%A › yield 1; +%A } + %s%eTests%eFixtures%eGeneratorDemo.php:20 { …} + %s%eTests%eFixtures%eGeneratorDemo.php:14 { …} +%A } + closed: false + } + 1 => Generator { + %s: { + %s%eTests%eFixtures%eGeneratorDemo.php:%d { + Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo() + › yield 1; + › } + › + } +%A } + closed: false + } +] +EODUMP; + + $r = new \ReflectionGenerator($generator); + $this->assertDumpMatchesFormat($expectedDump, [$r, $r->getExecutingGenerator()]); + + foreach ($generator as $v) { + } + + $expectedDump = <<<'EODUMP' +Generator { + closed: true +} +EODUMP; + $this->assertDumpMatchesFormat($expectedDump, $generator); + } + + /** + * @requires PHP 8.4 + */ public function testGenerator() { if (\extension_loaded('xdebug')) { @@ -511,6 +589,7 @@ public function testGenerator() $expectedDump = <<<'EODUMP' Generator { + function: "Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::baz" this: Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo { …} %s: { %sGeneratorDemo.php:14 { @@ -519,6 +598,7 @@ public function testGenerator() › yield from bar(); › } } + Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo->baz() {} %A} closed: false } @@ -545,6 +625,7 @@ public function testGenerator() closed: false } 1 => Generator { + function: "Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo" %s: { %s%eTests%eFixtures%eGeneratorDemo.php:%d { Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo() @@ -566,6 +647,7 @@ public function testGenerator() $expectedDump = <<<'EODUMP' Generator { + function: "Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::baz" closed: true } EODUMP; diff --git a/src/Symfony/Component/VarDumper/Tests/Command/Descriptor/HtmlDescriptorTest.php b/src/Symfony/Component/VarDumper/Tests/Command/Descriptor/HtmlDescriptorTest.php index 09acf149a877b..156b0a829a888 100644 --- a/src/Symfony/Component/VarDumper/Tests/Command/Descriptor/HtmlDescriptorTest.php +++ b/src/Symfony/Component/VarDumper/Tests/Command/Descriptor/HtmlDescriptorTest.php @@ -45,7 +45,7 @@ public function testItOutputsStylesAndScriptsOnFirstDescribeCall() $descriptor->describe($output, new Data([[123]]), ['timestamp' => 1544804268.3668], 1); - $this->assertStringNotMatchesFormat('%A', $output->fetch(), 'styles & scripts are output only once'); + $this->assertDoesNotMatchRegularExpression('#(.*)#', $output->fetch(), 'styles & scripts are output only once'); } /** diff --git a/src/Symfony/Component/VarExporter/.gitattributes b/src/Symfony/Component/VarExporter/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/VarExporter/.gitattributes +++ b/src/Symfony/Component/VarExporter/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/VarExporter/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/VarExporter/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/VarExporter/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/VarExporter/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/VarExporter/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/VarExporter/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/WebLink/.gitattributes b/src/Symfony/Component/WebLink/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/WebLink/.gitattributes +++ b/src/Symfony/Component/WebLink/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/WebLink/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/WebLink/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/WebLink/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/WebLink/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/WebLink/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/WebLink/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Workflow/.gitattributes b/src/Symfony/Component/Workflow/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Workflow/.gitattributes +++ b/src/Symfony/Component/Workflow/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Workflow/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Workflow/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Workflow/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Workflow/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Workflow/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Workflow/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Component/Yaml/.gitattributes b/src/Symfony/Component/Yaml/.gitattributes index 14c3c35940427..84c7add058fb5 100644 --- a/src/Symfony/Component/Yaml/.gitattributes +++ b/src/Symfony/Component/Yaml/.gitattributes @@ -1,3 +1,4 @@ /Tests export-ignore /phpunit.xml.dist export-ignore -/.git* export-ignore +/.gitattributes export-ignore +/.gitignore export-ignore diff --git a/src/Symfony/Component/Yaml/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Component/Yaml/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Component/Yaml/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Component/Yaml/.github/workflows/check-subtree-split.yml b/src/Symfony/Component/Yaml/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Component/Yaml/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Contracts/.gitattributes b/src/Symfony/Contracts/.gitattributes deleted file mode 100644 index 825312826d129..0000000000000 --- a/src/Symfony/Contracts/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/.git* export-ignore diff --git a/src/Symfony/Contracts/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Contracts/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Contracts/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Contracts/.github/workflows/check-subtree-split.yml b/src/Symfony/Contracts/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Contracts/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Contracts/Cache/.gitattributes b/src/Symfony/Contracts/Cache/.gitattributes deleted file mode 100644 index 825312826d129..0000000000000 --- a/src/Symfony/Contracts/Cache/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/.git* export-ignore diff --git a/src/Symfony/Contracts/Cache/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Contracts/Cache/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Contracts/Cache/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Contracts/Cache/.github/workflows/check-subtree-split.yml b/src/Symfony/Contracts/Cache/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Contracts/Cache/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Contracts/Deprecation/.gitattributes b/src/Symfony/Contracts/Deprecation/.gitattributes deleted file mode 100644 index 825312826d129..0000000000000 --- a/src/Symfony/Contracts/Deprecation/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/.git* export-ignore diff --git a/src/Symfony/Contracts/Deprecation/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Contracts/Deprecation/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Contracts/Deprecation/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Contracts/Deprecation/.github/workflows/check-subtree-split.yml b/src/Symfony/Contracts/Deprecation/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Contracts/Deprecation/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Contracts/EventDispatcher/.gitattributes b/src/Symfony/Contracts/EventDispatcher/.gitattributes deleted file mode 100644 index 825312826d129..0000000000000 --- a/src/Symfony/Contracts/EventDispatcher/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/.git* export-ignore diff --git a/src/Symfony/Contracts/EventDispatcher/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Contracts/EventDispatcher/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Contracts/EventDispatcher/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Contracts/EventDispatcher/.github/workflows/check-subtree-split.yml b/src/Symfony/Contracts/EventDispatcher/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Contracts/EventDispatcher/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Contracts/HttpClient/.gitattributes b/src/Symfony/Contracts/HttpClient/.gitattributes deleted file mode 100644 index 825312826d129..0000000000000 --- a/src/Symfony/Contracts/HttpClient/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/.git* export-ignore diff --git a/src/Symfony/Contracts/HttpClient/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Contracts/HttpClient/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Contracts/HttpClient/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Contracts/HttpClient/.github/workflows/check-subtree-split.yml b/src/Symfony/Contracts/HttpClient/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Contracts/HttpClient/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Contracts/Service/.gitattributes b/src/Symfony/Contracts/Service/.gitattributes deleted file mode 100644 index 825312826d129..0000000000000 --- a/src/Symfony/Contracts/Service/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/.git* export-ignore diff --git a/src/Symfony/Contracts/Service/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Contracts/Service/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Contracts/Service/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Contracts/Service/.github/workflows/check-subtree-split.yml b/src/Symfony/Contracts/Service/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Contracts/Service/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } diff --git a/src/Symfony/Contracts/Translation/.gitattributes b/src/Symfony/Contracts/Translation/.gitattributes deleted file mode 100644 index 825312826d129..0000000000000 --- a/src/Symfony/Contracts/Translation/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -/.git* export-ignore diff --git a/src/Symfony/Contracts/Translation/.github/PULL_REQUEST_TEMPLATE.md b/src/Symfony/Contracts/Translation/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 4689c4dad430e..0000000000000 --- a/src/Symfony/Contracts/Translation/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -Please do not submit any Pull Requests here. They will be closed. ---- - -Please submit your PR here instead: -https://github.com/symfony/symfony - -This repository is what we call a "subtree split": a read-only subset of that main repository. -We're looking forward to your PR there! diff --git a/src/Symfony/Contracts/Translation/.github/workflows/check-subtree-split.yml b/src/Symfony/Contracts/Translation/.github/workflows/check-subtree-split.yml deleted file mode 100644 index 16be48bae3113..0000000000000 --- a/src/Symfony/Contracts/Translation/.github/workflows/check-subtree-split.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Check subtree split - -on: - pull_request_target: - -jobs: - close-pull-request: - runs-on: ubuntu-latest - - steps: - - name: Close pull request - uses: actions/github-script@v6 - with: - script: | - if (context.repo.owner === "symfony") { - github.rest.issues.createComment({ - owner: "symfony", - repo: context.repo.repo, - issue_number: context.issue.number, - body: ` - Thanks for your Pull Request! We love contributions. - - However, you should instead open your PR on the main repository: - https://github.com/symfony/symfony - - This repository is what we call a "subtree split": a read-only subset of that main repository. - We're looking forward to your PR there! - ` - }); - - github.rest.pulls.update({ - owner: "symfony", - repo: context.repo.repo, - pull_number: context.issue.number, - state: "closed" - }); - } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy