Skip to content
This repository has been archived by the owner on Jan 30, 2020. It is now read-only.

Commit

Permalink
Merge branch 'feature/4515' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
weierophinney committed Jun 28, 2013
148 parents 75a2431 + 8649d44 + 3f353b0 + d340adb + 1e0e8f4 + 5c4289e + fb94cca + 2a3844c + 906bbcf + 3d9b8bb + 84844ae + 62fc651 + b0a3dd4 + 0dca0ef + 910bbbf + e574b9b + f30ec7d + 1fa84de + 41b8543 + 9e2c9d5 + 913f51c + 39924f3 + c2a11e1 + 61b9322 + 413a38b + e51b2b8 + 20e328b + 6437ec0 + e9b8476 + 95e54a0 + 7ea3aed + df6a706 + a82fc82 + 7c2a059 + 4fefb53 + 599ee3a + ea3fc65 + f6c04c2 + 6591e3d + a4f76e3 + 33c7531 + 2d59782 + 8152327 + e56ce9b + db9b18f + b88635a + a262823 + b79aef6 + c2284e4 + 70193eb + 96acf77 + 9675426 + 5f02411 + 0dafea7 + 15dc674 + 4a2447d + e6eb7f3 + e9499c5 + 272b15f + 11c7758 + 6f0e918 + 5f4980a + ecca95a + 88b5971 + ecb8d13 + 9de1c08 + 44aad17 + 13269e9 + 654cdb6 + dc708db + 380ffba + ff67e7f + fe2e025 + 95f0efa + 68cc4b3 + bf13b96 + 8870381 + 56480f4 + 1fa90d7 + 5c7fe1f + abe9bc1 + a33cacd + cdd7d9f + 6a261b1 + 5e594c4 + 01c1241 + 30d1dd2 + d4af079 + c9aa9b4 + 10f47ca + ef20fa1 + 2187ae2 + e7f3993 + db93d37 + aa57612 + 4af81d8 + 2f90998 + 3013404 + 69d83fe + f383ca9 + 1b26f48 + 054f09d + 0c86829 + f22d81a + e7ebffe + 72a7a54 + cc09223 + ab99f58 + 2c69e37 + b6ccfbc + b92a5da + 773a133 + 9ee28ff + 5865e20 + 63c7303 + 73371d0 + b96f402 + b36e36b + 60fa081 + a1d27a6 + 43e9240 + 9e59ae6 + be1ce44 + 5a6465d + 7e455b4 + 83d837e + 28bc01e + 215be48 + efcc8e0 + 5192ae6 + 7e1ba0f + dec8ccf + 94afc0f + 8c3ea5f + d680762 + 9092473 + 041fc63 + ea6499d + 1f59300 + a75142b + f592cc2 + f523aef + 2d12221 + 34ad758 + 23cc229 + 91a23e2 + 1fa15a0 + 56ae202 commit f0f8988
Show file tree
Hide file tree
Showing 7 changed files with 93 additions and 12 deletions.
8 changes: 5 additions & 3 deletions src/Translator/Loader/Gettext.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,19 @@ class Gettext implements FileLoaderInterface
*/
public function load($locale, $filename)
{
if (!is_file($filename) || !is_readable($filename)) {
$resolvedIncludePath = stream_resolve_include_path($filename);
$fromIncludePath = ($resolvedIncludePath !== false) ? $resolvedIncludePath : $filename;
if (!$fromIncludePath || !is_file($fromIncludePath) || !is_readable($fromIncludePath)) {
throw new Exception\InvalidArgumentException(sprintf(
'Could not open file %s for reading',
'Could not find or open file %s for reading',
$filename
));
}

$textDomain = new TextDomain();

ErrorHandler::start();
$this->file = fopen($filename, 'rb');
$this->file = fopen($fromIncludePath, 'rb');
$error = ErrorHandler::stop();
if (false === $this->file) {
throw new Exception\InvalidArgumentException(sprintf(
Expand Down
8 changes: 5 additions & 3 deletions src/Translator/Loader/Ini.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,18 @@ class Ini implements FileLoaderInterface
*/
public function load($locale, $filename)
{
if (!is_file($filename) || !is_readable($filename)) {
$resolvedIncludePath = stream_resolve_include_path($filename);
$fromIncludePath = ($resolvedIncludePath !== false) ? $resolvedIncludePath : $filename;
if (!$fromIncludePath || !is_file($fromIncludePath) || !is_readable($fromIncludePath)) {
throw new Exception\InvalidArgumentException(sprintf(
'Could not open file %s for reading',
'Could not find or open file %s for reading',
$filename
));
}

$messages = array();
$iniReader = new IniReader();
$messagesNamespaced = $iniReader->fromFile($filename);
$messagesNamespaced = $iniReader->fromFile($fromIncludePath);

$list = $messagesNamespaced;
if (isset($messagesNamespaced['translation'])) {
Expand Down
8 changes: 5 additions & 3 deletions src/Translator/Loader/PhpArray.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,16 @@ class PhpArray implements FileLoaderInterface
*/
public function load($locale, $filename)
{
if (!is_file($filename) || !is_readable($filename)) {
$resolvedIncludePath = stream_resolve_include_path($filename);
$fromIncludePath = ($resolvedIncludePath !== false) ? $resolvedIncludePath : $filename;
if (!$fromIncludePath || !is_file($fromIncludePath) || !is_readable($fromIncludePath)) {
throw new Exception\InvalidArgumentException(sprintf(
'Could not open file %s for reading',
'Could not find or open file %s for reading',
$filename
));
}

$messages = include $filename;
$messages = include $fromIncludePath;

if (!is_array($messages)) {
throw new Exception\InvalidArgumentException(sprintf(
Expand Down
26 changes: 25 additions & 1 deletion test/Translator/Loader/GettextTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,30 @@ class GettextTest extends TestCase
{
protected $testFilesDir;
protected $originalLocale;
protected $originalIncludePath;

public function setUp()
{
$this->originalLocale = Locale::getDefault();
Locale::setDefault('en_EN');

$this->testFilesDir = realpath(__DIR__ . '/../_files');

$this->originalIncludePath = get_include_path();
set_include_path($this->testFilesDir . PATH_SEPARATOR . $this->testFilesDir . '/translations.phar');
}

public function tearDown()
{
Locale::setDefault($this->originalLocale);

set_include_path($this->originalIncludePath);
}

public function testLoaderFailsToLoadMissingFile()
{
$loader = new GettextLoader();
$this->setExpectedException('Zend\I18n\Exception\InvalidArgumentException', 'Could not open file');
$this->setExpectedException('Zend\I18n\Exception\InvalidArgumentException', 'Could not find or open file');
$loader->load('en_EN', 'missing');
}

Expand Down Expand Up @@ -80,4 +86,22 @@ public function testLoaderLoadsPluralRules()
$this->assertEquals(1, $textDomain->getPluralRule()->evaluate(2));
$this->assertEquals(2, $textDomain->getPluralRule()->evaluate(10));
}

public function testLoaderLoadsFromIncludePath()
{
$loader = new GettextLoader();
$textDomain = $loader->load('en_EN', 'translation_en.mo');

$this->assertEquals('Message 1 (en)', $textDomain['Message 1']);
$this->assertEquals('Message 4 (en)', $textDomain['Message 4']);
}

public function testLoaderLoadsFromPhar()
{
$loader = new GettextLoader();
$textDomain = $loader->load('en_EN', 'phar://' . $this->testFilesDir . '/translations.phar/translation_en.mo');

$this->assertEquals('Message 1 (en)', $textDomain['Message 1']);
$this->assertEquals('Message 4 (en)', $textDomain['Message 4']);
}
}
29 changes: 28 additions & 1 deletion test/Translator/Loader/IniTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,25 @@ class IniTest extends TestCase
{
protected $testFilesDir;
protected $originalLocale;
protected $originalIncludePath;

public function setUp()
{
$this->testFilesDir = realpath(__DIR__ . '/../_files');

$this->originalIncludePath = get_include_path();
set_include_path($this->testFilesDir . PATH_SEPARATOR . $this->testFilesDir . '/translations.phar');
}

public function tearDown()
{
set_include_path($this->originalIncludePath);
}

public function testLoaderFailsToLoadMissingFile()
{
$loader = new IniLoader();
$this->setExpectedException('Zend\I18n\Exception\InvalidArgumentException', 'Could not open file');
$this->setExpectedException('Zend\I18n\Exception\InvalidArgumentException', 'Could not find or open file');
$loader->load('en_EN', 'missing');
}

Expand Down Expand Up @@ -91,4 +100,22 @@ public function testLoaderLoadsPluralRules()
$this->assertEquals(1, $textDomain->getPluralRule()->evaluate(2));
$this->assertEquals(2, $textDomain->getPluralRule()->evaluate(10));
}

public function testLoaderLoadsFromIncludePath()
{
$loader = new IniLoader();
$textDomain = $loader->load('en_EN', 'translation_en.ini');

$this->assertEquals('Message 1 (en)', $textDomain['Message 1']);
$this->assertEquals('Message 4 (en)', $textDomain['Message 4']);
}

public function testLoaderLoadsFromPhar()
{
$loader = new IniLoader();
$textDomain = $loader->load('en_EN', 'phar://' . $this->testFilesDir . '/translations.phar/translation_en.ini');

$this->assertEquals('Message 1 (en)', $textDomain['Message 1']);
$this->assertEquals('Message 4 (en)', $textDomain['Message 4']);
}
}
26 changes: 25 additions & 1 deletion test/Translator/Loader/PhpArrayTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,24 +18,30 @@ class PhpArrayTest extends TestCase
{
protected $testFilesDir;
protected $originalLocale;
protected $originalIncludePath;

public function setUp()
{
$this->originalLocale = Locale::getDefault();
Locale::setDefault('en_EN');

$this->testFilesDir = realpath(__DIR__ . '/../_files');

$this->originalIncludePath = get_include_path();
set_include_path($this->testFilesDir . PATH_SEPARATOR . $this->testFilesDir . '/translations.phar');
}

public function tearDown()
{
Locale::setDefault($this->originalLocale);

set_include_path($this->originalIncludePath);
}

public function testLoaderFailsToLoadMissingFile()
{
$loader = new PhpArrayLoader();
$this->setExpectedException('Zend\I18n\Exception\InvalidArgumentException', 'Could not open file');
$this->setExpectedException('Zend\I18n\Exception\InvalidArgumentException', 'Could not find or open file');
$loader->load('en_EN', 'missing');
}

Expand Down Expand Up @@ -73,4 +79,22 @@ public function testLoaderLoadsPluralRules()
$this->assertEquals(1, $textDomain->getPluralRule()->evaluate(2));
$this->assertEquals(2, $textDomain->getPluralRule()->evaluate(10));
}

public function testLoaderLoadsFromIncludePath()
{
$loader = new PhpArrayLoader();
$textDomain = $loader->load('en_EN', 'translation_en.php');

$this->assertEquals('Message 1 (en)', $textDomain['Message 1']);
$this->assertEquals('Message 4 (en)', $textDomain['Message 4']);
}

public function testLoaderLoadsFromPhar()
{
$loader = new PhpArrayLoader();
$textDomain = $loader->load('en_EN', 'phar://' . $this->testFilesDir . '/translations.phar/translation_en.php');

$this->assertEquals('Message 1 (en)', $textDomain['Message 1']);
$this->assertEquals('Message 4 (en)', $textDomain['Message 4']);
}
}
Binary file added test/Translator/_files/translations.phar
Binary file not shown.

0 comments on commit f0f8988

Please sign in to comment.