-
-
Notifications
You must be signed in to change notification settings - Fork 64
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: ensure we can modify header loader, and mark all deprecations
- Adds `@deprecated` and `@todo` annotations to the `$pluginClassLoader` property and the `setPluginClassLoader()` and `getPluginClassLoader()` methods - Adds `getHeaderLoader()` and `setHeaderLoader()` methods to allow providing alternate implementations. - Adds tests to ensure that deprecation notices are emitted. Signed-off-by: Matthew Weier O'Phinney <[email protected]>
- Loading branch information
1 parent
b6fdc6e
commit ba55363
Showing
5 changed files
with
169 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,12 +8,13 @@ | |
|
||
namespace LaminasTest\Mail; | ||
|
||
use Laminas\Loader\PluginClassLocator; | ||
use Laminas\Mail; | ||
use Laminas\Mail\Header; | ||
use Laminas\Mail\Header\Exception; | ||
use Laminas\Mail\Header\GenericHeader; | ||
use Laminas\Mail\Header\GenericMultiHeader; | ||
use Laminas\Mail\Header\To; | ||
use PHPUnit\Framework\Error\Deprecated; | ||
use PHPUnit\Framework\TestCase; | ||
|
||
/** | ||
|
@@ -109,7 +110,9 @@ public function testHeadersFromStringFactoryCreatesMultipleObjects() | |
public function testHeadersFromStringMultiHeaderWillAggregateLazyLoadedHeaders() | ||
{ | ||
$headers = new Mail\Headers(); | ||
$headers->addHeaderLine('foo', ['[email protected]', '[email protected]', '[email protected]']); | ||
$loader = $headers->getHeaderLoader(); | ||
$loader->add('foo', GenericMultiHeader::class); | ||
$headers->addHeaderLine('foo: bar1,bar2,bar3'); | ||
$headers->forceLoading(); | ||
$this->assertEquals(3, $headers->count()); | ||
} | ||
|
@@ -558,4 +561,75 @@ public function testAddHeaderCallsSetEncoding() | |
// now UTF-8 via addHeader() call | ||
$this->assertSame('UTF-8', $subject->getEncoding()); | ||
} | ||
|
||
/** | ||
* @todo Remove for 3.0.0 | ||
*/ | ||
public function testGetPluginClassLoaderEmitsDeprecationNotice() | ||
{ | ||
if (! class_exists(Deprecated::class)) { | ||
$this->markTestSkipped('Requires a PHPUnit version that contains Error exceptions'); | ||
} | ||
|
||
$headers = new Mail\Headers(); | ||
|
||
$this->expectException(Deprecated::class); | ||
$this->expectExceptionMessage('getPluginClassLoader has been deprecated'); | ||
$headers->getPluginClassLoader(); | ||
} | ||
|
||
/** | ||
* @todo Remove for 3.0.0 | ||
*/ | ||
public function testSetPluginClassLoaderEmitsDeprecationNoticeWhenPluginClassLocatorUsed() | ||
{ | ||
if (! class_exists(Deprecated::class)) { | ||
$this->markTestSkipped('Requires a PHPUnit version that contains Error exceptions'); | ||
} | ||
|
||
$headers = new Mail\Headers(); | ||
$loader = $this->prophesize(PluginClassLocator::class)->reveal(); | ||
|
||
$this->expectException(Deprecated::class); | ||
$this->expectExceptionMessage('deprecated'); | ||
$headers->setPluginClassLoader($loader); | ||
} | ||
|
||
/** | ||
* @todo Remove for 3.0.0 | ||
*/ | ||
public function testGetPluginClassLoaderReturnsHeaderLoaderInstanceByDefault() | ||
{ | ||
$headers = new Mail\Headers(); | ||
$loader = @$headers->getPluginClassLoader(); | ||
$this->assertInstanceOf(Mail\Header\HeaderLoader::class, $loader); | ||
} | ||
|
||
/** | ||
* @todo Remove for 3.0.0 | ||
*/ | ||
public function testSetPluginClassLoaderAcceptsHeaderLoaderInstance() | ||
{ | ||
$headers = new Mail\Headers(); | ||
$loader = new Mail\Header\HeaderLoader(); | ||
|
||
@$headers->setPluginClassLoader($loader); | ||
$this->assertSame($loader, $headers->getHeaderLoader()); | ||
} | ||
|
||
public function testGetHeaderLoaderReturnsHeaderLoaderInstanceByDefault() | ||
{ | ||
$headers = new Mail\Headers(); | ||
$loader = $headers->getHeaderLoader(); | ||
$this->assertInstanceOf(Mail\Header\HeaderLoader::class, $loader); | ||
} | ||
|
||
public function testCanInjectAlternateHeaderLoaderInstance() | ||
{ | ||
$headers = new Mail\Headers(); | ||
$loader = new Mail\Header\HeaderLoader(); | ||
|
||
$headers->setHeaderLoader($loader); | ||
$this->assertSame($loader, $headers->getHeaderLoader()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<?php | ||
|
||
/** | ||
* @see https://github.com/laminas/laminas-mail for the canonical source repository | ||
* @copyright https://github.com/laminas/laminas-mail/blob/master/COPYRIGHT.md | ||
* @license https://github.com/laminas/laminas-mail/blob/master/LICENSE.md New BSD License | ||
*/ | ||
|
||
namespace Laminas\Loader; | ||
|
||
/** | ||
* @todo Remove this file for 3.0.0 | ||
*/ | ||
if (! class_exists(PluginClassLocator::class) | ||
&& ! interface_exists(PluginClassLocator::class) | ||
) { | ||
class PluginClassLocator | ||
{ | ||
} | ||
} |
I think you should do Symfony-style silent deprecation messages:
@trigger_error