From: Joe Nahmias <jello@debian.org>
Date: Sun, 14 Sep 2025 21:03:32 -0400
Subject: fix mock callback closures

---
 tests/unit/Swift/Mime/SimpleHeaderSetTest.php | 163 +++++++++++++-------------
 1 file changed, 83 insertions(+), 80 deletions(-)

diff --git a/tests/unit/Swift/Mime/SimpleHeaderSetTest.php b/tests/unit/Swift/Mime/SimpleHeaderSetTest.php
index bbd3abf..01578b4 100644
--- a/tests/unit/Swift/Mime/SimpleHeaderSetTest.php
+++ b/tests/unit/Swift/Mime/SimpleHeaderSetTest.php
@@ -247,22 +247,25 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
         $factory = $this->createFactory();
         $matcher = $this->exactly(3);
         $factory->expects($matcher)
-                ->method('createIdHeader')->willReturnCallback(function (...$parameters) use ($matcher) {
-            if ($matcher->numberOfInvocations() === 1) {
-                $this->assertSame('Message-ID', $parameters[0]);
-                $this->assertSame('some@id', $parameters[1]);
-                return $header0;
-            }
-            if ($matcher->numberOfInvocations() === 2) {
-                $this->assertSame('Message-ID', $parameters[0]);
-                $this->assertSame('other@id', $parameters[1]);
-                return $header1;
-            }
-            if ($matcher->numberOfInvocations() === 3) {
-                $this->assertSame('Message-ID', $parameters[0]);
-                $this->assertSame('more@id', $parameters[1]);
-                return $header2;
-            }
+                ->method('createIdHeader')
+                ->willReturnCallback(
+                    function (...$parameters)
+                    use ($matcher, $header0, $header1, $header2) {
+                        if ($matcher->numberOfInvocations() === 1) {
+                            $this->assertSame('Message-ID', $parameters[0]);
+                            $this->assertSame('some@id', $parameters[1]);
+                            return $header0;
+                        }
+                        if ($matcher->numberOfInvocations() === 2) {
+                            $this->assertSame('Message-ID', $parameters[0]);
+                            $this->assertSame('other@id', $parameters[1]);
+                            return $header1;
+                        }
+                        if ($matcher->numberOfInvocations() === 3) {
+                            $this->assertSame('Message-ID', $parameters[0]);
+                            $this->assertSame('more@id', $parameters[1]);
+                            return $header2;
+                        }
         });
 
         $set = $this->createSet($factory);
@@ -286,22 +289,25 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
         $factory = $this->createFactory();
         $matcher = $this->exactly(3);
         $factory->expects($matcher)
-                ->method('createIdHeader')->willReturnCallback(function (...$parameters) use ($matcher) {
-            if ($matcher->numberOfInvocations() === 1) {
-                $this->assertSame('Message-ID', $parameters[0]);
-                $this->assertSame('some@id', $parameters[1]);
-                return $header0;
-            }
-            if ($matcher->numberOfInvocations() === 2) {
-                $this->assertSame('Message-ID', $parameters[0]);
-                $this->assertSame('other@id', $parameters[1]);
-                return $header1;
-            }
-            if ($matcher->numberOfInvocations() === 3) {
-                $this->assertSame('Message-ID', $parameters[0]);
-                $this->assertSame('more@id', $parameters[1]);
-                return $header2;
-            }
+                ->method('createIdHeader')
+                ->willReturnCallback(
+                    function (...$parameters)
+                    use ($matcher, $header0, $header1, $header2) {
+                        if ($matcher->numberOfInvocations() === 1) {
+                            $this->assertSame('Message-ID', $parameters[0]);
+                            $this->assertSame('some@id', $parameters[1]);
+                            return $header0;
+                        }
+                        if ($matcher->numberOfInvocations() === 2) {
+                            $this->assertSame('Message-ID', $parameters[0]);
+                            $this->assertSame('other@id', $parameters[1]);
+                            return $header1;
+                        }
+                        if ($matcher->numberOfInvocations() === 3) {
+                            $this->assertSame('Message-ID', $parameters[0]);
+                            $this->assertSame('more@id', $parameters[1]);
+                            return $header2;
+                        }
         });
 
         $set = $this->createSet($factory);
@@ -322,22 +328,25 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
         $factory = $this->createFactory();
         $matcher = $this->exactly(3);
         $factory->expects($matcher)
-                ->method('createIdHeader')->willReturnCallback(function (...$parameters) use ($matcher) {
-            if ($matcher->numberOfInvocations() === 1) {
-                $this->assertSame('Message-ID', $parameters[0]);
-                $this->assertSame('some@id', $parameters[1]);
-                return $header0;
-            }
-            if ($matcher->numberOfInvocations() === 2) {
-                $this->assertSame('Subject', $parameters[0]);
-                $this->assertSame('thing', $parameters[1]);
-                return $header1;
-            }
-            if ($matcher->numberOfInvocations() === 3) {
-                $this->assertSame('To', $parameters[0]);
-                $this->assertSame('person@example.org', $parameters[1]);
-                return $header2;
-            }
+                ->method('createIdHeader')
+                ->willReturnCallback(
+                    function (...$parameters)
+                    use ($matcher, $header0, $header1, $header2) {
+                        if ($matcher->numberOfInvocations() === 1) {
+                            $this->assertSame('Message-ID', $parameters[0]);
+                            $this->assertSame('some@id', $parameters[1]);
+                            return $header0;
+                        }
+                        if ($matcher->numberOfInvocations() === 2) {
+                            $this->assertSame('Subject', $parameters[0]);
+                            $this->assertSame('thing', $parameters[1]);
+                            return $header1;
+                        }
+                        if ($matcher->numberOfInvocations() === 3) {
+                            $this->assertSame('To', $parameters[0]);
+                            $this->assertSame('person@example.org', $parameters[1]);
+                            return $header2;
+                        }
         });
 
         $set = $this->createSet($factory);
@@ -373,8 +382,6 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
 
     public function testRemoveWithSpecifiedIndexRemovesHeader()
     {
-        $header0 = $this->createHeader('Message-ID');
-        $header1 = $this->createHeader('Message-ID');
         $factory = $this->createFactory();
         $matcher = $this->exactly(2);
         $factory->expects($matcher)
@@ -382,12 +389,12 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
             if ($matcher->numberOfInvocations() === 1) {
                 $this->assertSame('Message-ID', $parameters[0]);
                 $this->assertSame('some@id', $parameters[1]);
-                return $header0;
+                return $this->createHeader('Message-ID');
             }
             if ($matcher->numberOfInvocations() === 2) {
                 $this->assertSame('Message-ID', $parameters[0]);
                 $this->assertSame('other@id', $parameters[1]);
-                return $header1;
+                return $this->createHeader('Message-ID');
             }
         });
 
@@ -405,8 +412,6 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
 
     public function testRemoveWithSpecifiedIndexLeavesOtherHeaders()
     {
-        $header0 = $this->createHeader('Message-ID');
-        $header1 = $this->createHeader('Message-ID');
         $factory = $this->createFactory();
         $matcher = $this->exactly(2);
         $factory->expects($matcher)
@@ -414,12 +419,12 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
             if ($matcher->numberOfInvocations() === 1) {
                 $this->assertSame('Message-ID', $parameters[0]);
                 $this->assertSame('some@id', $parameters[1]);
-                return $header0;
+                return $this->createHeader('Message-ID');
             }
             if ($matcher->numberOfInvocations() === 2) {
                 $this->assertSame('Message-ID', $parameters[0]);
                 $this->assertSame('other@id', $parameters[1]);
-                return $header1;
+                return $this->createHeader('Message-ID');
             }
         });
 
@@ -447,8 +452,6 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
 
     public function testRemoveAllRemovesAllHeadersWithName()
     {
-        $header0 = $this->createHeader('Message-ID');
-        $header1 = $this->createHeader('Message-ID');
         $factory = $this->createFactory();
         $matcher = $this->exactly(2);
         $factory->expects($matcher)
@@ -456,12 +459,12 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
             if ($matcher->numberOfInvocations() === 1) {
                 $this->assertSame('Message-ID', $parameters[0]);
                 $this->assertSame('some@id', $parameters[1]);
-                return $header0;
+                return $this->createHeader(...$parameters);
             }
             if ($matcher->numberOfInvocations() === 2) {
                 $this->assertSame('Message-ID', $parameters[0]);
                 $this->assertSame('other@id', $parameters[1]);
-                return $header1;
+                return $this->createHeader(...$parameters);
             }
         });
 
@@ -721,8 +724,6 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
 
     public function testSettingCharsetNotifiesAlreadyExistingHeaders()
     {
-        $subject = $this->createHeader('Subject', 'some text');
-        $xHeader = $this->createHeader('X-Header', 'some text');
         $factory = $this->createFactory();
         $matcher = $this->exactly(2);
         $factory->expects($matcher)
@@ -730,20 +731,22 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
             if ($matcher->numberOfInvocations() === 1) {
                 $this->assertSame('Subject', $parameters[0]);
                 $this->assertSame('some text', $parameters[1]);
-                return $subject;
+                $h = $this->createHeader(...$parameters);
+                $h  ->expects($this->once())
+                    ->method('setCharset')
+                    ->with('utf-8');
+                return $h;
             }
             if ($matcher->numberOfInvocations() === 2) {
                 $this->assertSame('X-Header', $parameters[0]);
                 $this->assertSame('some text', $parameters[1]);
-                return $xHeader;
+                $h = $this->createHeader(...$parameters);
+                $h  ->expects($this->once())
+                    ->method('setCharset')
+                    ->with('utf-8');
+                return $h;
             }
         });
-        $subject->expects($this->once())
-                ->method('setCharset')
-                ->with('utf-8');
-        $xHeader->expects($this->once())
-                ->method('setCharset')
-                ->with('utf-8');
 
         $set = $this->createSet($factory);
         $set->addTextHeader('Subject', 'some text');
@@ -754,8 +757,6 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
 
     public function testCharsetChangeNotifiesAlreadyExistingHeaders()
     {
-        $subject = $this->createHeader('Subject', 'some text');
-        $xHeader = $this->createHeader('X-Header', 'some text');
         $factory = $this->createFactory();
         $matcher = $this->exactly(2);
         $factory->expects($matcher)
@@ -763,20 +764,22 @@ class Swift_Mime_SimpleHeaderSetTest extends \PHPUnit\Framework\TestCase
             if ($matcher->numberOfInvocations() === 1) {
                 $this->assertSame('Subject', $parameters[0]);
                 $this->assertSame('some text', $parameters[1]);
-                return $subject;
+                $h = $this->createHeader(...$parameters);
+                $h  ->expects($this->once())
+                    ->method('setCharset')
+                    ->with('utf-8');
+                return $h;
             }
             if ($matcher->numberOfInvocations() === 2) {
                 $this->assertSame('X-Header', $parameters[0]);
                 $this->assertSame('some text', $parameters[1]);
-                return $xHeader;
+                $h = $this->createHeader(...$parameters);
+                $h  ->expects($this->once())
+                    ->method('setCharset')
+                    ->with('utf-8');
+                return $h;
             }
         });
-        $subject->expects($this->once())
-                ->method('setCharset')
-                ->with('utf-8');
-        $xHeader->expects($this->once())
-                ->method('setCharset')
-                ->with('utf-8');
 
         $set = $this->createSet($factory);
         $set->addTextHeader('Subject', 'some text');
