From f78048317eca220e4b79dcb19198da9a09d8700a Mon Sep 17 00:00:00 2001 From: "J. King" Date: Thu, 9 Feb 2017 16:56:30 -0500 Subject: [PATCH] Refactor language test boilerplate into trait --- locale/en.php | 2 ++ tests/TestLang.php | 40 +----------------------- tests/bootstrap.php | 43 +++++++++++++++++++++++++- tests/testLangComplex.php | 40 +----------------------- vendor/JKingWeb/NewsSync/Exception.php | 2 +- 5 files changed, 47 insertions(+), 80 deletions(-) diff --git a/locale/en.php b/locale/en.php index eef77dc4..163392f7 100644 --- a/locale/en.php +++ b/locale/en.php @@ -1,6 +1,8 @@ 'The specified exception symbol {0} has no code specified in Exception.php', + //this should not usually be encountered + 'Exception.JKingWeb/NewsSync/Exception.unknown' => 'An unknown error has occurred', 'Exception.JKingWeb/NewsSync/Lang/Exception.defaultFileMissing' => 'Default language file "{0}" missing', 'Exception.JKingWeb/NewsSync/Lang/Exception.fileMissing' => 'Language file "{0}" is not available', diff --git a/tests/TestLang.php b/tests/TestLang.php index afd48a86..d5ce7254 100644 --- a/tests/TestLang.php +++ b/tests/TestLang.php @@ -5,51 +5,13 @@ use \org\bovigo\vfs\vfsStream; class TestLang extends \PHPUnit\Framework\TestCase { - use TestingHelpers; + use TestingHelpers, LanguageTestingHelpers; static $vfs; static $path; static $files; static $defaultPath; - static function setUpBeforeClass() { - // this is required to keep from having exceptions in Lang::msg() in turn calling Lang::msg() and looping - Lang\Exception::$test = true; - // test files - self::$files = [ - 'en.php' => ' "and the Philosopher\'s Stone"];', - 'en_ca.php' => ' "{0} and {1}"];', - 'en_us.php' => ' "and the Sorcerer\'s Stone"];', - 'fr.php' => ' "à l\'école des sorciers"];', - 'ja.php' => ' "賢者の石"];', - 'de.php' => ' "und der Stein der Weisen"];', - // corrupt files - 'it.php' => ' ' 'DEAD BEEF', - 'fr_ca.php' => '', - // unreadable file - 'ru.php' => '', - ]; - self::$vfs = vfsStream::setup("langtest", 0777, self::$files); - self::$path = self::$vfs->url(); - // set up a file without read access - chmod(self::$path."/ru.php", 0000); - // make the Lang class use the vfs files - self::$defaultPath = Lang::$path; - Lang::$path = self::$path."/"; - } - - static function tearDownAfterClass() { - Lang\Exception::$test = false; - Lang::$path = self::$defaultPath; - self::$path = null; - self::$vfs = null; - self::$files = null; - Lang::set("", true); - Lang::set(Lang::DEFAULT, true); - } - function testList() { $this->assertCount(sizeof(self::$files), Lang::list("en")); } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index da51a19e..470d86a2 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -1,9 +1,10 @@ expectException($class); $this->expectExceptionCode($code); } +} + +trait LanguageTestingHelpers { + static function setUpBeforeClass() { + // this is required to keep from having exceptions in Lang::msg() in turn calling Lang::msg() and looping + Lang\Exception::$test = true; + // test files + self::$files = [ + 'en.php' => ' "and the Philosopher\'s Stone"];', + 'en_ca.php' => ' "{0} and {1}"];', + 'en_us.php' => ' "and the Sorcerer\'s Stone"];', + 'fr.php' => ' "à l\'école des sorciers"];', + 'ja.php' => ' "賢者の石"];', + 'de.php' => ' "und der Stein der Weisen"];', + // corrupt files + 'it.php' => ' ' 'DEAD BEEF', + 'fr_ca.php' => '', + // unreadable file + 'ru.php' => '', + ]; + self::$vfs = vfsStream::setup("langtest", 0777, self::$files); + self::$path = self::$vfs->url(); + // set up a file without read access + chmod(self::$path."/ru.php", 0000); + // make the Lang class use the vfs files + self::$defaultPath = Lang::$path; + Lang::$path = self::$path."/"; + } + + static function tearDownAfterClass() { + Lang\Exception::$test = false; + Lang::$path = self::$defaultPath; + self::$path = null; + self::$vfs = null; + self::$files = null; + Lang::set("", true); + Lang::set(Lang::DEFAULT, true); + } } \ No newline at end of file diff --git a/tests/testLangComplex.php b/tests/testLangComplex.php index 019c0506..d02ecdbb 100644 --- a/tests/testLangComplex.php +++ b/tests/testLangComplex.php @@ -5,51 +5,13 @@ use \org\bovigo\vfs\vfsStream; class TestLangComplex extends \PHPUnit\Framework\TestCase { - use TestingHelpers; + use TestingHelpers, LanguageTestingHelpers; static $vfs; static $path; static $files; static $defaultPath; - static function setUpBeforeClass() { - // this is required to keep from having exceptions in Lang::msg() in turn calling Lang::msg() and looping - Lang\Exception::$test = true; - // test files - self::$files = [ - 'en.php' => ' "and the Philosopher\'s Stone"];', - 'en_ca.php' => ' "{0} and {1}"];', - 'en_us.php' => ' "and the Sorcerer\'s Stone"];', - 'fr.php' => ' "à l\'école des sorciers"];', - 'ja.php' => ' "賢者の石"];', - 'de.php' => ' "und der Stein der Weisen"];', - // corrupt files - 'it.php' => ' ' 'DEAD BEEF', - 'fr_ca.php' => '', - // unreadable file - 'ru.php' => '', - ]; - self::$vfs = vfsStream::setup("langtest", 0777, self::$files); - self::$path = self::$vfs->url(); - // set up a file without read access - chmod(self::$path."/ru.php", 0000); - // make the Lang class use the vfs files - self::$defaultPath = Lang::$path; - Lang::$path = self::$path."/"; - } - - static function tearDownAfterClass() { - Lang\Exception::$test = false; - Lang::$path = self::$defaultPath; - self::$path = null; - self::$vfs = null; - self::$files = null; - Lang::set("", true); - Lang::set(Lang::DEFAULT, true); - } - function setUp() { Lang::set(Lang::DEFAULT, true); } diff --git a/vendor/JKingWeb/NewsSync/Exception.php b/vendor/JKingWeb/NewsSync/Exception.php index c85c32cd..93b869fb 100644 --- a/vendor/JKingWeb/NewsSync/Exception.php +++ b/vendor/JKingWeb/NewsSync/Exception.php @@ -6,7 +6,7 @@ class Exception extends \Exception { const CODES = [ "Exception.uncoded" => -1, - "Exception.misc" => 10000, + "Exception.unknown" => 10000, "Lang/Exception.defaultFileMissing" => 10101, "Lang/Exception.fileMissing" => 10102, "Lang/Exception.fileUnreadable" => 10103,