From 6e86c83179327e20b828999823f303e14bfd3131 Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Fri, 7 Nov 2014 14:43:46 -0500 Subject: [PATCH] Adding test for language file consistency. - Resolves VUFIND-760. --- .../src/VuFind/I18n/ExtendedIniNormalizer.php | 14 +++- .../I18n/ExtendedIniNormalizerTest.php | 67 +++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 module/VuFind/tests/unit-tests/src/VuFindTest/I18n/ExtendedIniNormalizerTest.php diff --git a/module/VuFind/src/VuFind/I18n/ExtendedIniNormalizer.php b/module/VuFind/src/VuFind/I18n/ExtendedIniNormalizer.php index 50643faa9cd..fcde521fe2e 100644 --- a/module/VuFind/src/VuFind/I18n/ExtendedIniNormalizer.php +++ b/module/VuFind/src/VuFind/I18n/ExtendedIniNormalizer.php @@ -66,6 +66,18 @@ class ExtendedIniNormalizer * @return void */ public function normalizeFile($file) + { + file_put_contents($file, $this->normalizeFileToString($file)); + } + + /** + * Normalize a file from disk and returns the result as a string. + * + * @param string $file Filename. + * + * @return string + */ + public function normalizeFileToString($file) { $reader = new Translator\Loader\ExtendedIniReader(); @@ -79,7 +91,7 @@ class ExtendedIniNormalizer $comments = $this->extractComments($fileArray); $strings = $this->formatAsString($reader->getTextDomain($fileArray, false)); - file_put_contents($file, $comments . $strings); + return $comments . $strings; } /** diff --git a/module/VuFind/tests/unit-tests/src/VuFindTest/I18n/ExtendedIniNormalizerTest.php b/module/VuFind/tests/unit-tests/src/VuFindTest/I18n/ExtendedIniNormalizerTest.php new file mode 100644 index 00000000000..858edb5e9a9 --- /dev/null +++ b/module/VuFind/tests/unit-tests/src/VuFindTest/I18n/ExtendedIniNormalizerTest.php @@ -0,0 +1,67 @@ +<?php +/** + * ExtendedIniNormalizer Test Class + * + * PHP version 5 + * + * Copyright (C) Villanova University 2010. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * @category VuFind2 + * @package Tests + * @author Demian Katz <demian.katz@villanova.edu> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link http://vufind.org/wiki/vufind2:unit_tests Wiki + */ +namespace VuFindTest\I18n; +use VuFind\I18n\ExtendedIniNormalizer; + +/** + * ExtendedIniNormalizer Test Class + * + * @category VuFind2 + * @package Tests + * @author Demian Katz <demian.katz@villanova.edu> + * @author Chris Hallberg <challber@villanova.edu> + * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License + * @link http://vufind.org/wiki/vufind2:unit_tests Wiki + */ +class ExtendedIniNormalizerTest extends \VuFindTest\Unit\TestCase +{ + /** + * Test consistent normalization of translation files on disk. This tests not + * only the functionality of ExtendedIniNormalizer but also the integrity of + * the language files themselves. + * + * @return void + */ + public function testLanguageFileIntegrity() + { + $normalizer = new ExtendedIniNormalizer(); + $langDir = realpath(__DIR__ . '/../../../../../../../languages'); + $handle = opendir($langDir); + while ($file = readdir($handle)) { + if (substr($file, -4) == '.ini') { + $full = $langDir . '/' . $file; + $this->assertEquals( + file_get_contents($full), + $normalizer->normalizeFileToString($full), + $file + ); + } + } + closedir($handle); + } +} \ No newline at end of file -- GitLab