From 4b6161892000cb2b8392dce92a9cf2cabdf2d20e Mon Sep 17 00:00:00 2001 From: Chih-Hsuan Yen Date: Sat, 2 Jul 2022 22:01:51 +0800 Subject: Update php-qrcode and php-settings-container for PHP 8.1 By running the following command after updating composer.json ``` composer update chillerlan/php-qrcode chillerlan/php-settings-container ``` This change fixes a deprecation warning from Preferences -> Personal data / Authentication -> Authenticator (OTP). ``` Return type of chillerlan\Settings\SettingsContainerAbstract::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice 1. vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php(19): ttrss_error_handler(Return type of chillerlan\Settings\SettingsContainerAbstract::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice, vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php) 2. vendor/composer/ClassLoader.php(571): include(/usr/share/webapps/tt-rss/vendor/chillerlan/php-settings-container/src/SettingsContainerAbstract.php) 3. vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile(/usr/share/webapps/tt-rss/vendor/composer/../chillerlan/php-settings-container/src/SettingsContainerAbstract.php) 4. vendor/chillerlan/php-qrcode/src/QROptions.php(59): loadClass(chillerlan\Settings\SettingsContainerAbstract) 5. vendor/composer/ClassLoader.php(571): include(/usr/share/webapps/tt-rss/vendor/chillerlan/php-qrcode/src/QROptions.php) 6. vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile(/usr/share/webapps/tt-rss/vendor/composer/../chillerlan/php-qrcode/src/QROptions.php) 7. vendor/chillerlan/php-qrcode/src/QRCode.php(113): loadClass(chillerlan\QRCode\QROptions) 8. classes/pref/prefs.php(958): __construct() 9. classes/pref/prefs.php(469): _get_otp_qrcode_img() 10. classes/pref/prefs.php(541): index_auth_2fa() 11. backend.php(136): index_auth() ``` The issue is fixed in php-settings-container 2.1.1 [1] Here I use the latest php-qrcode version for another PHP 8.1 fix [2]. [1] https://github.com/chillerlan/php-settings-container/commit/68bc5019c8b38956c83906431ef879668366b036#diff-359c7f7a6d32d9935951e1b0742eb116fb654f4a932c8d40328bb5dcab2fa111L162 [2] https://github.com/chillerlan/php-qrcode/issues/97 --- .../php-qrcode/tests/Output/QRStringTest.php | 58 +++++++++++++++------- 1 file changed, 39 insertions(+), 19 deletions(-) (limited to 'vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php') diff --git a/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php b/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php index 5dbd34010..c41d109be 100644 --- a/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php +++ b/vendor/chillerlan/php-qrcode/tests/Output/QRStringTest.php @@ -12,13 +12,28 @@ namespace chillerlan\QRCodeTest\Output; -use chillerlan\QRCode\{QRCode, Output\QRString}; +use chillerlan\QRCodeExamples\MyCustomOutput; +use chillerlan\QRCode\{QRCode, QROptions}; +use chillerlan\QRCode\Output\{QROutputInterface, QRString}; +/** + * Tests the QRString output module + */ class QRStringTest extends QROutputTestAbstract{ - protected $FQCN = QRString::class; + /** + * @inheritDoc + * @internal + */ + protected function getOutputInterface(QROptions $options):QROutputInterface{ + return new QRString($options, $this->matrix); + } - public function types(){ + /** + * @inheritDoc + * @internal + */ + public function types():array{ return [ 'json' => [QRCode::OUTPUT_STRING_JSON], 'text' => [QRCode::OUTPUT_STRING_TEXT], @@ -26,19 +41,9 @@ class QRStringTest extends QROutputTestAbstract{ } /** - * @dataProvider types - * @param $type + * @inheritDoc */ - public function testStringOutput($type){ - $this->options->outputType = $type; - $this->options->cachefile = $this::cachefile.$type; - $this->setOutputInterface(); - $data = $this->outputInterface->dump(); - - $this->assertSame($data, file_get_contents($this->options->cachefile)); - } - - public function testSetModuleValues(){ + public function testSetModuleValues():void{ $this->options->moduleValues = [ // data @@ -46,11 +51,26 @@ class QRStringTest extends QROutputTestAbstract{ 4 => 'B', ]; - $this->setOutputInterface(); - $data = $this->outputInterface->dump(); + $this->outputInterface = $this->getOutputInterface($this->options); + $data = $this->outputInterface->dump(); + + $this::assertStringContainsString('A', $data); + $this::assertStringContainsString('B', $data); + } + + /** + * covers the custom output functionality via an example + */ + public function testCustomOutput():void{ + $this->options->version = 5; + $this->options->eccLevel = QRCode::ECC_L; + $this->options->outputType = QRCode::OUTPUT_CUSTOM; + $this->options->outputInterface = MyCustomOutput::class; - $this->assertStringContainsString('A', $data); - $this->assertStringContainsString('B', $data); + $this::assertSame( + file_get_contents(__DIR__.'/samples/custom'), + (new QRCode($this->options))->render('test') + ); } } -- cgit v1.2.3