Index: src/wp-includes/class.wp-scripts.php
===================================================================
--- src/wp-includes/class.wp-scripts.php	(revision 37164)
+++ src/wp-includes/class.wp-scripts.php	(working copy)
@@ -55,13 +55,16 @@
 	public $in_footer = array();
 
 	/**
-	 * Holds a list of script handles which will be concatenated.
+	 * If concatenating, holds arrays of data batched in dependency order.
+	 * 'concat' holds the handles to concatenate (comma-separated),
+	 * 'print_code' the extra script (enclosed in '<script>' tags),
+	 * 'before' & 'after' the before and after inline code (not enclosed).
 	 *
-	 * @since 2.8.0
+	 * @since 4.5
 	 * @access public
-	 * @var string
+	 * @var array
 	 */
-	public $concat = '';
+	public $concats = array( array( 'concat' => '', 'print_code' => '', 'before' => '', 'after' => '' ) );
 
 	/**
 	 * Holds a string which contains script handles and their version.
@@ -83,34 +86,6 @@
 	public $do_concat = false;
 
 	/**
-	 * Holds HTML markup of scripts and additional data if concatenation
-	 * is enabled.
-	 *
-	 * @since 2.8.0
-	 * @access public
-	 * @var string
-	 */
-	public $print_html = '';
-
-	/**
-	 * HTML to print before the script handle.
-	 *
-	 * @since 4.5.0
-	 * @access public
-	 * @var string
-	 */
-	public $print_html_before = '';
-
-	/**
-	 * Holds inline code if concatenation is enabled.
-	 *
-	 * @since 2.8.0
-	 * @access public
-	 * @var string
-	 */
-	public $print_code = '';
-
-	/**
 	 * Holds a list of script handles which are not in the default directory
 	 * if concatenation is enabled.
 	 *
@@ -304,13 +279,14 @@
 			 */
 			$srce = apply_filters( 'script_loader_src', $src, $handle );
 
-			if ( $before_handle && ! $conditional ) {
-				$this->print_html_before .= $before_handle;
-			}
+			$in_default_dir = $this->in_default_dir( $srce );
 
-			if ( $this->in_default_dir( $srce ) && ! $conditional && ! $after_handle ) {
-				$this->print_code .= $this->print_extra_script( $handle, false );
-				$this->concat .= "$handle,";
+			if ( $in_default_dir && ! $conditional ) {
+				$concat_idx = count( $this->concats ) - 1;
+				$this->concats[$concat_idx]['print_code'] .= $this->print_extra_script( $handle, false );
+				$this->concats[$concat_idx]['concat'] .= "$handle,";
+				$this->concats[$concat_idx]['before'] .= $before_handle;
+				$this->concats[$concat_idx]['after'] .= $after_handle;
 				$this->concat_version .= "$handle$ver";
 				return true;
 			} else {
@@ -363,10 +339,11 @@
 		$tag = apply_filters( 'script_loader_tag', $tag, $handle, $src );
 
 		if ( $this->do_concat ) {
-			if ( $after_handle ) {
-				$this->print_html_before .= $tag;
-			} else {
-				$this->print_html .= $tag;
+			$concat_idx = count( $this->concats ) - 1;
+			$this->concats[$concat_idx]['after'] .= $tag;
+			// To maintain dependency order, need to bump batch to next level if wasn't concatenated above.
+			if ( ! $in_default_dir || $conditional ) {
+				$this->concats[] = array( 'concat' => '', 'print_code' => '', 'before' => '', 'after' => '' );
 			}
 		} else {
 			echo $tag;
@@ -588,11 +565,8 @@
 	 */
 	public function reset() {
 		$this->do_concat = false;
-		$this->print_code = '';
-		$this->concat = '';
+		$this->concats = array( array( 'concat' => '', 'print_code' => '', 'before' => '', 'after' => '' ) );
 		$this->concat_version = '';
-		$this->print_html = '';
-		$this->print_html_before = '';
 		$this->ext_version = '';
 		$this->ext_handles = '';
 	}
Index: src/wp-includes/script-loader.php
===================================================================
--- src/wp-includes/script-loader.php	(revision 37164)
+++ src/wp-includes/script-loader.php	(working copy)
@@ -988,29 +988,35 @@
 	if ( $zip && defined('ENFORCE_GZIP') && ENFORCE_GZIP )
 		$zip = 'gzip';
 
-	if ( $concat = trim( $wp_scripts->concat, ', ' ) ) {
+	foreach ( $wp_scripts->concats as $concat_entry ) {
 
-		if ( !empty($wp_scripts->print_code) ) {
+		if ( '' !== $concat_entry['print_code'] ) {
 			echo "\n<script type='text/javascript'>\n";
 			echo "/* <![CDATA[ */\n"; // not needed in HTML 5
-			echo $wp_scripts->print_code;
+			echo $concat_entry['print_code'];
 			echo "/* ]]> */\n";
 			echo "</script>\n";
 		}
 
-		if ( ! empty( $wp_scripts->print_html_before ) ) {
-			echo $wp_scripts->print_html_before;
+		if ( '' !== $concat_entry['before'] ) {
+			echo $concat_entry['before'];
 		}
 
-		$concat = str_split( $concat, 128 );
-		$concat = 'load%5B%5D=' . implode( '&load%5B%5D=', $concat );
+		$concat = trim( $concat_entry['concat'], ', ' );
 
-		$src = $wp_scripts->base_url . "/wp-admin/load-scripts.php?c={$zip}&" . $concat . '&ver=' . $wp_scripts->default_version;
-		echo "<script type='text/javascript' src='" . esc_attr($src) . "'></script>\n";
+		if ( '' !== $concat ) {
+
+			$concat = str_split( $concat, 128 );
+			$concat = 'load%5B%5D=' . implode( '&load%5B%5D=', $concat );
+
+			$src = $wp_scripts->base_url . "/wp-admin/load-scripts.php?c={$zip}&" . $concat . '&ver=' . $wp_scripts->default_version;
+			echo "<script type='text/javascript' src='" . esc_attr($src) . "'></script>\n";
+		}
+
+		if ( '' !== $concat_entry['after'] ) {
+			echo $concat_entry['after'];
+		}
 	}
-
-	if ( !empty($wp_scripts->print_html) )
-		echo $wp_scripts->print_html;
 }
 
 /**
Index: tests/phpunit/tests/dependencies/scripts.php
===================================================================
--- tests/phpunit/tests/dependencies/scripts.php	(revision 37164)
+++ tests/phpunit/tests/dependencies/scripts.php	(working copy)
@@ -463,6 +463,56 @@
 	/**
 	 * @ticket 14853
 	 */
+	public function test_wp_add_inline_script_before_with_concat_dependency() {
+		global $wp_scripts;
+
+		$wp_scripts->do_concat = true;
+		$wp_scripts->default_dirs = array( '/directory/' );
+
+		wp_enqueue_script( 'one', '/directory/one.js' );
+		wp_enqueue_script( 'two', '/directory/two.js' );
+		wp_enqueue_script( 'three', '/directory/three.js', array( 'one' ) );
+
+		wp_add_inline_script( 'one', 'console.log("before one");', 'before' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$ver = get_bloginfo( 'version' );
+		$expected  = "<script type='text/javascript'>\nconsole.log(\"before one\");\n</script>\n";
+		$expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=one,two,three&amp;ver={$ver}'></script>\n";
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 14853
+	 */
+	public function test_wp_add_inline_script_after_with_concat_dependency() {
+		global $wp_scripts;
+
+		$wp_scripts->do_concat = true;
+		$wp_scripts->default_dirs = array( '/directory/' );
+
+		wp_enqueue_script( 'one', '/directory/one.js', array( 'three' ) );
+		wp_enqueue_script( 'two', '/directory/two.js' );
+		wp_enqueue_script( 'three', '/directory/three.js' );
+
+		wp_add_inline_script( 'one', 'console.log("after one");', 'after' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$ver = get_bloginfo( 'version' );
+		$expected  = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=three,one,two&amp;ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after one\");\n</script>\n";
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 14853
+	 */
 	public function test_wp_add_inline_script_after_with_concat() {
 		global $wp_scripts;
 
@@ -472,7 +522,7 @@
 		wp_enqueue_script( 'one', '/directory/one.js' );
 		wp_enqueue_script( 'two', '/directory/two.js' );
 		wp_enqueue_script( 'three', '/directory/three.js' );
-		wp_enqueue_script( 'four', '/directory/four.js' );
+		wp_enqueue_script( 'four', '/directory/four.js', array( 'two' ) );
 
 		wp_add_inline_script( 'two', 'console.log("after two");' );
 		wp_add_inline_script( 'three', 'console.log("after three");' );
@@ -481,11 +531,9 @@
 		$print_scripts = get_echo( '_print_scripts' );
 
 		$ver = get_bloginfo( 'version' );
-		$expected  = "<script type='text/javascript' src='/directory/two.js?ver={$ver}'></script>\n";
+		$expected  = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=one,two,three,four&amp;ver={$ver}'></script>\n";
 		$expected .= "<script type='text/javascript'>\nconsole.log(\"after two\");\n</script>\n";
-		$expected .= "<script type='text/javascript' src='/directory/three.js?ver={$ver}'></script>\n";
 		$expected .= "<script type='text/javascript'>\nconsole.log(\"after three\");\n</script>\n";
-		$expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=one,four&amp;ver={$ver}'></script>\n";
 
 		$this->assertEquals( $expected, $print_scripts );
 	}
@@ -516,8 +564,337 @@
 		wp_script_add_data( 'test-example', 'conditional', 'gte IE 9' );
 
 		$this->assertEquals( $expected_localized, get_echo( 'wp_print_scripts' ) );
-		$this->assertEquals( $expected, $wp_scripts->print_html_before );
-		$this->assertEquals( '', $wp_scripts->print_html );
+		$this->assertEquals( $expected, implode( '', wp_list_pluck( $wp_scripts->concats, 'after' ) ) ); // Conditional stuff goes into 'after'.
 	}
 
+	/**
+	 * Original issue with concat.
+	 *
+	 * @ticket 36392
+	 */
+	public function test_wp_add_inline_script_customize_dependency_concat() {
+		global $wp_scripts;
+
+		wp_default_scripts( $wp_scripts );
+
+		$wp_scripts->base_url = '';
+		$wp_scripts->do_concat = true;
+
+		$ver = get_bloginfo( 'version' );
+
+		$expected_tail  = "/* ]]> */\n</script>\n";
+		$expected_tail .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=underscore,customize-base,wp-a11y,customize-controls&amp;ver={$ver}'></script>\n";
+		$expected_tail .= "<script type='text/javascript' src='/customize-dependency.js'></script>\n";
+		$expected_tail .= "<script type='text/javascript'>\n";
+		$expected_tail .= "tryCustomizeDependency()\n";
+		$expected_tail .= "</script>\n";
+
+		$handle = 'customize-dependency';
+		wp_enqueue_script( $handle, '/customize-dependency.js', array( 'customize-controls' ), null );
+		wp_add_inline_script( $handle, 'tryCustomizeDependency()' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$tail = substr( $print_scripts, strrpos( $print_scripts, "/* ]]> */" ) );
+		$this->assertEquals( $expected_tail, $tail );
+	}
+
+	/**
+	 * Original issue without concat.
+	 *
+	 * @ticket 36392
+	 */
+	public function test_wp_add_inline_script_customize_dependency_noconcat() {
+		global $wp_scripts;
+
+		wp_default_scripts( $wp_scripts );
+
+		$wp_scripts->base_url = '';
+		$wp_scripts->do_concat = false;
+
+		$ver = get_bloginfo( 'version' );
+
+		$expected_tail  = "/* ]]> */\n</script>\n";
+		$expected_tail .= "<script type='text/javascript' src='/wp-admin/js/customize-controls.js?ver={$ver}'></script>\n";
+		$expected_tail .= "<script type='text/javascript' src='/customize-dependency.js'></script>\n";
+		$expected_tail .= "<script type='text/javascript'>\n";
+		$expected_tail .= "tryCustomizeDependency()\n";
+		$expected_tail .= "</script>\n";
+
+		$handle = 'customize-dependency';
+		wp_enqueue_script( $handle, '/customize-dependency.js', array( 'customize-controls' ), null );
+		wp_add_inline_script( $handle, 'tryCustomizeDependency()' );
+
+		$print_scripts = get_echo( 'wp_print_scripts' );
+
+		$tail = substr( $print_scripts, strrpos( $print_scripts, "/* ]]> */" ) );
+		$this->assertEquals( $expected_tail, $tail );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_add_inline_script_concat_with_core_dependency() {
+		global $wp_scripts;
+
+		wp_default_scripts( $wp_scripts );
+
+		$wp_scripts->base_url = '';
+		$wp_scripts->do_concat = true;
+
+		$ver = get_bloginfo( 'version' );
+		$expected  = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=jquery-core,jquery-migrate&amp;ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
+
+		wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
+		wp_add_inline_script( 'test-example', 'console.log("after");' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_add_inline_script_noconcat_with_core_dependency() {
+		global $wp_scripts;
+
+		wp_default_scripts( $wp_scripts );
+
+		$wp_scripts->base_url = '';
+		$wp_scripts->do_concat = false;
+
+		$js_ver = $wp_scripts->registered['jquery']->ver;
+		$js_migrate_ver = $wp_scripts->registered['jquery-migrate']->ver;
+
+		$expected  = "<script type='text/javascript' src='/wp-includes/js/jquery/jquery.js?ver={$js_ver}'></script>\n";
+		$expected .= "<script type='text/javascript' src='/wp-includes/js/jquery/jquery-migrate.js?ver={$js_migrate_ver}'></script>\n";
+		$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
+
+		wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
+		wp_add_inline_script( 'test-example', 'console.log("after");' );
+
+		$print_scripts = get_echo( 'wp_print_scripts' );
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_add_inline_script_concat_with_conditional_and_core_dependency() {
+		global $wp_scripts;
+
+		wp_default_scripts( $wp_scripts );
+
+		$wp_scripts->base_url = '';
+		$wp_scripts->do_concat = true;
+
+		$ver = get_bloginfo( 'version' );
+		$expected  = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=jquery-core,jquery-migrate&amp;ver={$ver}'></script>\n";
+		$expected .= "<!--[if gte IE 9]>\n";
+		$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
+		$expected .= "<![endif]-->\n";
+
+		wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
+		wp_add_inline_script( 'test-example', 'console.log("after");' );
+		wp_script_add_data( 'test-example', 'conditional', 'gte IE 9' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_add_inline_script_before_concat_with_core_dependency() {
+		global $wp_scripts;
+
+		wp_default_scripts( $wp_scripts );
+
+		$wp_scripts->base_url = '';
+		$wp_scripts->do_concat = true;
+
+		$ver = get_bloginfo( 'version' );
+		$expected  = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=jquery-core,jquery-migrate&amp;ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
+		$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
+
+		wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
+		wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_add_inline_script_before_after_concat_with_core_dependency() {
+		global $wp_scripts;
+
+		wp_default_scripts( $wp_scripts );
+
+		$wp_scripts->base_url = '';
+		$wp_scripts->do_concat = true;
+
+		$ver = get_bloginfo( 'version' );
+		$expected  = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=jquery-core,jquery-migrate&amp;ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
+		$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
+		$expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=wp-a11y&amp;ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript' src='http://example2.com'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
+
+		wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
+		wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
+		wp_enqueue_script( 'test-example2', 'http://example2.com', array( 'wp-a11y' ), null );
+		wp_add_inline_script( 'test-example2', 'console.log("after");', 'after' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_add_inline_script_before_after_concat_with_core_dependency_default_dirs() {
+		global $wp_scripts;
+
+		wp_default_scripts( $wp_scripts );
+
+		$wp_scripts->base_url = '';
+		$wp_scripts->do_concat = true;
+		$wp_scripts->default_dirs = array('/wp-admin/js/', '/wp-includes/js/'); // Default dirs as in wp-includes/script-loader.php
+
+		$ver = get_bloginfo( 'version' );
+		$expected  = "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
+		$expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=jquery-core,jquery-migrate,test-example,wp-a11y,test-example2&amp;ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
+
+		wp_enqueue_script( 'test-example', '/wp-admin/js/example.js', array( 'jquery' ), null );
+		wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
+		wp_enqueue_script( 'test-example2', '/wp-includes/js/example2.js', array( 'wp-a11y' ), null );
+		wp_add_inline_script( 'test-example2', 'console.log("after");', 'after' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_script_conditional_concat_dependency() {
+		global $wp_scripts;
+
+		$wp_scripts->do_concat = true;
+		$wp_scripts->default_dirs = array( '/directory/' );
+
+		wp_enqueue_script( 'one', '/directory/one.js' );
+		wp_enqueue_script( 'two', '/directory/two.js' );
+		wp_enqueue_script( 'three', '/directory/three.js', array( 'one' ) );
+
+		wp_script_add_data( 'one', 'conditional', 'blah' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$ver = get_bloginfo( 'version' );
+
+		$expected  = "<!--[if blah]>\n";
+		$expected .= "<script type='text/javascript' src='/directory/one.js?ver={$ver}'></script>\n";
+		$expected .= "<![endif]-->\n";
+		$expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=two,three&amp;ver={$ver}'></script>\n";
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_script_conditional_noconcat_dependency() {
+		global $wp_scripts;
+
+		$wp_scripts->do_concat = false;
+		$wp_scripts->default_dirs = array( '/directory/' );
+
+		wp_enqueue_script( 'one', '/directory/one.js' );
+		wp_enqueue_script( 'two', '/directory/two.js' );
+		wp_enqueue_script( 'three', '/directory/three.js', array( 'one' ) );
+
+		wp_script_add_data( 'one', 'conditional', 'blah' );
+
+		$print_scripts = get_echo( 'wp_print_scripts' );
+
+		$ver = get_bloginfo( 'version' );
+
+		$expected  = "<!--[if blah]>\n";
+		$expected .= "<script type='text/javascript' src='/directory/one.js?ver={$ver}'></script>\n";
+		$expected .= "<![endif]-->\n";
+		$expected .= "<script type='text/javascript' src='/directory/two.js?ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript' src='/directory/three.js?ver={$ver}'></script>\n";
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
+
+	/**
+	 * @ticket 36392
+	 */
+	public function test_wp_script_conditional_before_after_concat_dependency_diff_include_dirs() {
+		global $wp_scripts;
+
+		$wp_scripts->do_concat = true;
+		$wp_scripts->default_dirs = array( '/directory/' );
+
+		wp_enqueue_script( 'one', '/directory/one.js' );
+		wp_enqueue_script( 'two', '/directory2/two.js' ); // Not in_default_dirs().
+		wp_enqueue_script( 'three', '/directory/three.js', array( 'one' ) );
+		wp_enqueue_script( 'four', '/directory/four.js' );
+
+		wp_script_add_data( 'one', 'conditional', 'blah' );
+		wp_add_inline_script( 'one', 'console.log("before1");', 'before' );
+
+		wp_add_inline_script( 'two', 'console.log("before2");', 'before' );
+		wp_add_inline_script( 'two', 'console.log("after2");', 'after' );
+
+		wp_add_inline_script( 'three', 'console.log("before3");', 'before' );
+		wp_add_inline_script( 'three', 'console.log("after3");', 'after' );
+
+		wp_add_inline_script( 'four', 'console.log("before4");', 'before' );
+		wp_add_inline_script( 'four', 'console.log("after4");', 'after' );
+
+		wp_print_scripts();
+		$print_scripts = get_echo( '_print_scripts' );
+
+		$ver = get_bloginfo( 'version' );
+
+		$expected  = "<!--[if blah]>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"before1\");\n</script>\n";
+		$expected .= "<script type='text/javascript' src='/directory/one.js?ver={$ver}'></script>\n";
+		$expected .= "<![endif]-->\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"before2\");\n</script>\n";
+		$expected .= "<script type='text/javascript' src='/directory2/two.js?ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after2\");\n</script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"before3\");\n</script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"before4\");\n</script>\n";
+		$expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&amp;load%5B%5D=three,four&amp;ver={$ver}'></script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after3\");\n</script>\n";
+		$expected .= "<script type='text/javascript'>\nconsole.log(\"after4\");\n</script>\n";
+
+		$this->assertEquals( $expected, $print_scripts );
+	}
 }
