Path: blob/master/PHPMailer/test/PHPMailerLangTest.php
738 views
<?php1/**2* PHPMailer - language file tests.3*4* PHP version 5.5.5*6* @author Marcus Bointon <[email protected]>7* @author Andy Prevost8* @copyright 2010 - 2020 Marcus Bointon9* @copyright 2004 - 2009 Andy Prevost10* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License11*/1213namespace PHPMailer\Test;1415use PHPMailer\PHPMailer\PHPMailer;16use PHPUnit\Framework\TestCase;1718/**19* Check language files for missing or excess translations.20*/21final class PHPMailerLangTest extends TestCase22{23/**24* Holds a PHPMailer instance.25*26* @var PHPMailer27*/28private $Mail;2930/**31* Run before each test is started.32*/33protected function setUp()34{35$this->Mail = new PHPMailer();36}3738/**39* Test language files for missing and excess translations.40* All languages are compared with English.41*42* @group languages43*/44public function testTranslations()45{46$this->Mail->setLanguage('en');47$definedStrings = $this->Mail->getTranslations();48$err = '';49foreach (new \DirectoryIterator(__DIR__ . '/../language') as $fileInfo) {50if ($fileInfo->isDot()) {51continue;52}53$matches = [];54//Only look at language files, ignore anything else in there55if (preg_match('/^phpmailer\.lang-([a-z_]{2,})\.php$/', $fileInfo->getFilename(), $matches)) {56$lang = $matches[1]; //Extract language code57$PHPMAILER_LANG = []; //Language strings get put in here58include $fileInfo->getPathname(); //Get language strings59$missing = array_diff(array_keys($definedStrings), array_keys($PHPMAILER_LANG));60$extra = array_diff(array_keys($PHPMAILER_LANG), array_keys($definedStrings));61if (!empty($missing)) {62$err .= "\nMissing translations in $lang: " . implode(', ', $missing);63}64if (!empty($extra)) {65$err .= "\nExtra translations in $lang: " . implode(', ', $extra);66}67}68}69$this->assertEmpty($err, $err);70}71}727374