From 3f03e8fcf9de4b90d204985fe14490467e4a275d Mon Sep 17 00:00:00 2001
From: jrfnl <github_nospam@adviesenzo.nl>
Date: Wed, 13 Jan 2016 14:18:02 +0100
Subject: [PATCH] Refresh of @nacin's patch and @MikeHansenMe's unit tests.

---
 src/wp-includes/l10n.php     | 11 ++++++++---
 tests/phpunit/tests/l10n.php | 12 ++++++++++++
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/wp-includes/l10n.php b/src/wp-includes/l10n.php
index a69a718..8f340fc 100644
--- a/src/wp-includes/l10n.php
+++ b/src/wp-includes/l10n.php
@@ -793,10 +793,15 @@ function load_child_theme_textdomain( $domain, $path = false ) {
  */
 function get_translations_for_domain( $domain ) {
 	global $l10n;
-	if ( !isset( $l10n[$domain] ) ) {
-		$l10n[$domain] = new NOOP_Translations;
+	if ( isset( $l10n[ $domain ] ) ) {
+		return $l10n[ $domain ];
 	}
-	return $l10n[$domain];
+
+	static $noop_translations;
+	if ( ! $noop_translations ) {
+		$noop_translations = new NOOP_Translations;
+	}
+	return $noop_translations;
 }
 
 /**
diff --git a/tests/phpunit/tests/l10n.php b/tests/phpunit/tests/l10n.php
index 62357f0..d6bc011 100644
--- a/tests/phpunit/tests/l10n.php
+++ b/tests/phpunit/tests/l10n.php
@@ -18,6 +18,18 @@ class Tests_L10n extends WP_UnitTestCase {
 	}
 
 	/**
+	 * @ticket 21319
+	 */
+	function test_is_textdomain_loaded_for_no_translations() {
+		$this->assertFalse( load_textdomain( 'wp-tests-domain', DIR_TESTDATA . '/non-existent-file' ) );
+		$this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
+		$this->assertInstanceOf( 'NOOP_Translations', get_translations_for_domain( 'wp-tests-domain' ) );
+		// Ensure that we don't confuse NOOP_Translations to be a loaded text domain.
+		$this->assertFalse( is_textdomain_loaded( 'wp-tests-domain' ) );
+		$this->assertFalse( unload_textdomain( 'wp-tests-domain' ) );
+	}
+
+	/**
 	 * @ticket 35073
 	 */
 	function test_before_last_bar() {
-- 
1.9.4.msysgit.2

