Merge branch '4.3' into 4.4

* 4.3:
  Properly handle optional tag attributes for !tagged_iterator
  [Mime] rename Headers::getAll() to all()
  [Mailer] Fix phpdoc for variadic methods
  [HttpClient] fix debug output added to stderr at shutdown
This commit is contained in:
Nicolas Grekas 2019-07-18 22:39:44 +02:00
commit d3a50d6cef
14 changed files with 49 additions and 31 deletions

View File

@ -741,7 +741,7 @@ class YamlFileLoader extends FileLoader
throw new InvalidArgumentException(sprintf('"!%s" tag contains unsupported key "%s"; supported ones are "tag", "index_by" and "default_index_method".', $value->getTag(), implode('"", "', $diff)));
}
$argument = new TaggedIteratorArgument($argument['tag'], $argument['index_by'], $argument['default_index_method'] ?? null, $forLocator);
$argument = new TaggedIteratorArgument($argument['tag'], $argument['index_by'] ?? null, $argument['default_index_method'] ?? null, $forLocator);
if ($forLocator) {
$argument = new ServiceLocatorArgument($argument);

View File

@ -0,0 +1,4 @@
services:
iterator_service:
class: FooClass
arguments: [!tagged_iterator {tag: test.tag}]

View File

@ -858,4 +858,18 @@ class YamlFileLoaderTest extends TestCase
$this->assertSame('overridden', $container->get('bar')->quz);
}
/**
* When creating a tagged iterator using the array syntax, all optional parameters should be properly handled.
*/
public function testDefaultValueOfTagged()
{
$container = new ContainerBuilder();
$loader = new YamlFileLoader($container, new FileLocator(self::$fixturesPath.'/yaml'));
$loader->load('tagged_iterator_optional.yml');
$iteratorArgument = $container->getDefinition('iterator_service')->getArgument(0);
$this->assertInstanceOf(TaggedIteratorArgument::class, $iteratorArgument);
$this->assertNull($iteratorArgument->getIndexAttribute());
}
}

View File

@ -84,7 +84,7 @@ class MandrillTransport extends AbstractApiTransport
}
$headersToBypass = ['from', 'to', 'cc', 'bcc', 'subject', 'content-type'];
foreach ($email->getHeaders()->getAll() as $name => $header) {
foreach ($email->getHeaders()->all() as $name => $header) {
if (\in_array($name, $headersToBypass, true)) {
continue;
}

View File

@ -45,7 +45,7 @@ class MailgunTransport extends AbstractApiTransport
{
$body = new FormDataPart($this->getPayload($email, $envelope));
$headers = [];
foreach ($body->getPreparedHeaders()->getAll() as $header) {
foreach ($body->getPreparedHeaders()->all() as $header) {
$headers[] = $header->toString();
}
@ -98,7 +98,7 @@ class MailgunTransport extends AbstractApiTransport
}
$headersToBypass = ['from', 'to', 'cc', 'bcc', 'subject', 'content-type'];
foreach ($headers->getAll() as $name => $header) {
foreach ($headers->all() as $name => $header) {
if (\in_array($name, $headersToBypass, true)) {
continue;
}

View File

@ -47,7 +47,7 @@ class MailgunTransport extends AbstractHttpTransport
'message' => new DataPart($message->toString(), 'message.mime'),
]);
$headers = [];
foreach ($body->getPreparedHeaders()->getAll() as $header) {
foreach ($body->getPreparedHeaders()->all() as $header) {
$headers[] = $header->toString();
}
$endpoint = str_replace(['%domain%', '%region_dot%'], [urlencode($this->domain), 'us' !== ($this->region ?: 'us') ? $this->region.'.' : ''], self::ENDPOINT);

View File

@ -69,7 +69,7 @@ class PostmarkTransport extends AbstractApiTransport
];
$headersToBypass = ['from', 'to', 'cc', 'bcc', 'subject', 'content-type', 'sender'];
foreach ($email->getHeaders()->getAll() as $name => $header) {
foreach ($email->getHeaders()->all() as $name => $header) {
if (\in_array($name, $headersToBypass, true)) {
continue;
}

View File

@ -83,7 +83,7 @@ class SendgridTransport extends AbstractApiTransport
// these headers can't be overwritten according to Sendgrid docs
// see https://developers.pepipost.com/migration-api/new-subpage/email-send
$headersToBypass = ['x-sg-id', 'x-sg-eid', 'received', 'dkim-signature', 'content-transfer-encoding', 'from', 'to', 'cc', 'bcc', 'subject', 'content-type', 'reply-to'];
foreach ($email->getHeaders()->getAll() as $name => $header) {
foreach ($email->getHeaders()->all() as $name => $header) {
if (\in_array($name, $headersToBypass, true)) {
continue;
}

View File

@ -71,7 +71,7 @@ final class DelayedSmtpEnvelope extends SmtpEnvelope
{
$recipients = [];
foreach (['to', 'cc', 'bcc'] as $name) {
foreach ($headers->getAll($name) as $header) {
foreach ($headers->all($name) as $header) {
foreach ($header->getAddresses() as $address) {
$recipients[] = new Address($address->getAddress());
}

View File

@ -51,7 +51,7 @@ class MessageListener implements EventSubscriberInterface
}
$headers = $message->getHeaders();
foreach ($this->headers->getAll() as $name => $header) {
foreach ($this->headers->all() as $name => $header) {
if (!$headers->has($name)) {
$headers->add($header);
} else {

View File

@ -101,7 +101,7 @@ class Email extends Message
}
/**
* @param Address|NamedAddress|string $addresses
* @param Address|NamedAddress|string ...$addresses
*
* @return $this
*/
@ -111,7 +111,7 @@ class Email extends Message
}
/**
* @param Address|NamedAddress|string $addresses
* @param Address|NamedAddress|string ...$addresses
*
* @return $this
*/
@ -129,7 +129,7 @@ class Email extends Message
}
/**
* @param Address|string $addresses
* @param Address|string ...$addresses
*
* @return $this
*/
@ -139,7 +139,7 @@ class Email extends Message
}
/**
* @param Address|string $addresses
* @param Address|string ...$addresses
*
* @return $this
*/
@ -157,7 +157,7 @@ class Email extends Message
}
/**
* @param Address|NamedAddress|string $addresses
* @param Address|NamedAddress|string ...$addresses
*
* @return $this
*/
@ -167,7 +167,7 @@ class Email extends Message
}
/**
* @param Address|NamedAddress|string $addresses
* @param Address|NamedAddress|string ...$addresses
*
* @return $this
*/
@ -185,7 +185,7 @@ class Email extends Message
}
/**
* @param Address|NamedAddress|string $addresses
* @param Address|NamedAddress|string ...$addresses
*
* @return $this
*/
@ -195,7 +195,7 @@ class Email extends Message
}
/**
* @param Address|string $addresses
* @param Address|string ...$addresses
*
* @return $this
*/
@ -213,7 +213,7 @@ class Email extends Message
}
/**
* @param Address|NamedAddress|string $addresses
* @param Address|NamedAddress|string ...$addresses
*
* @return $this
*/
@ -223,7 +223,7 @@ class Email extends Message
}
/**
* @param Address|string $addresses
* @param Address|string ...$addresses
*
* @return $this
*/

View File

@ -49,7 +49,7 @@ final class Headers
public function setMaxLineLength(int $lineLength)
{
$this->lineLength = $lineLength;
foreach ($this->getAll() as $header) {
foreach ($this->all() as $header) {
$header->setMaxLineLength($lineLength);
}
}
@ -175,7 +175,7 @@ final class Headers
return array_shift($values);
}
public function getAll(string $name = null): iterable
public function all(string $name = null): iterable
{
if (null === $name) {
foreach ($this->headers as $name => $collection) {
@ -218,7 +218,7 @@ final class Headers
public function toArray(): array
{
$arr = [];
foreach ($this->getAll() as $header) {
foreach ($this->all() as $header) {
if ('' !== $header->getBodyAsString()) {
$arr[] = $header->toString();
}

View File

@ -141,7 +141,7 @@ class HeadersTest extends TestCase
$this->assertNull($headers->get('Message-ID'));
}
public function testGetAllReturnsAllHeadersMatchingName()
public function testAllReturnsAllHeadersMatchingName()
{
$header0 = new UnstructuredHeader('X-Test', 'some@id');
$header1 = new UnstructuredHeader('X-Test', 'other@id');
@ -150,10 +150,10 @@ class HeadersTest extends TestCase
$headers->addTextHeader('X-Test', 'some@id');
$headers->addTextHeader('X-Test', 'other@id');
$headers->addTextHeader('X-Test', 'more@id');
$this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->getAll('X-Test')));
$this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->all('X-Test')));
}
public function testGetAllReturnsAllHeadersIfNoArguments()
public function testAllReturnsAllHeadersIfNoArguments()
{
$header0 = new IdentificationHeader('Message-ID', 'some@id');
$header1 = new UnstructuredHeader('Subject', 'thing');
@ -162,13 +162,13 @@ class HeadersTest extends TestCase
$headers->addIdHeader('Message-ID', 'some@id');
$headers->addTextHeader('Subject', 'thing');
$headers->addMailboxListHeader('To', [new Address('person@example.org')]);
$this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->getAll()));
$this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->all()));
}
public function testGetAllReturnsEmptyArrayIfNoneSet()
public function testAllReturnsEmptyArrayIfNoneSet()
{
$headers = new Headers();
$this->assertEquals([], iterator_to_array($headers->getAll('Received')));
$this->assertEquals([], iterator_to_array($headers->all('Received')));
}
public function testRemoveRemovesAllHeadersWithName()
@ -199,12 +199,12 @@ class HeadersTest extends TestCase
$this->assertEquals($header, $headers->get('message-id'));
}
public function testGetAllIsNotCaseSensitive()
public function testAllIsNotCaseSensitive()
{
$header = new IdentificationHeader('Message-ID', 'some@id');
$headers = new Headers();
$headers->addIdHeader('Message-ID', 'some@id');
$this->assertEquals([$header], iterator_to_array($headers->getAll('message-id')));
$this->assertEquals([$header], iterator_to_array($headers->all('message-id')));
}
public function testRemoveIsNotCaseSensitive()

View File

@ -68,7 +68,7 @@ class MessageTest extends TestCase
$message = new Message();
$message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']);
$h = $message->getPreparedHeaders();
$this->assertCount(4, iterator_to_array($h->getAll()));
$this->assertCount(4, iterator_to_array($h->all()));
$this->assertEquals(new MailboxListHeader('From', [new Address('fabien@symfony.com')]), $h->get('From'));
$this->assertEquals(new UnstructuredHeader('MIME-Version', '1.0'), $h->get('mime-version'));
$this->assertTrue($h->has('Message-Id'));