Index: tests/qunit/fixtures/quicktags.js
===================================================================
--- tests/qunit/fixtures/quicktags.js	(revision 0)
+++ tests/qunit/fixtures/quicktags.js	(working copy)
@@ -0,0 +1,5 @@
+var quicktagsCanvas = jQuery( '<div id="quicktags-test-parent"><div id="quicktags-test"></div></div>' );
+quicktagsCanvas.css( { position: 'absolute', top: -1000 } ); // remove from view
+jQuery( document.body ).append( quicktagsCanvas );
+
+window.quicktagsL10n = {"closeAllOpenTags":"Close all open tags","closeTags":"close tags","enterURL":"Enter the URL","enterImageURL":"Enter the URL of the image","enterImageDescription":"Enter a description of the image","fullscreen":"fullscreen","toggleFullscreen":"Toggle fullscreen mode","textdirection":"text direction","toggleTextdirection":"Toggle Editor Text Direction","dfw":"Distraction-free writing mode"};
Index: tests/qunit/index.html
===================================================================
--- tests/qunit/index.html	(revision 33848)
+++ tests/qunit/index.html	(working copy)
@@ -25,6 +25,7 @@
 			<script src="fixtures/customize-header.js"></script>
 			<script src="fixtures/customize-settings.js"></script>
 			<script src="fixtures/customize-menus.js"></script>
+			<script src="fixtures/quicktags.js"></script>
 		</div>
 		<p><a href="editor">TinyMCE tests</a></p>
 
@@ -45,6 +46,7 @@
 		<script src="../../src/wp-admin/js/nav-menu.js"></script>
 		<script src="../../src/wp-admin/js/customize-nav-menus.js"></script>
 		<script src="../../src/wp-admin/js/word-count.js"></script>
+		<script src="../../src/wp-includes/js/quicktags.js"></script>
 
 		<!-- Unit tests -->
 		<script src="wp-admin/js/password-strength-meter.js"></script>
@@ -55,6 +57,7 @@
 		<script src="wp-admin/js/customize-controls-utils.js"></script>
 		<script src="wp-admin/js/customize-nav-menus.js"></script>
 		<script src="wp-admin/js/word-count.js"></script>
+		<script src="wp-includes/js/quicktags.js"></script>
 
 		<!-- Customizer templates for sections -->
 		<script type="text/html" id="tmpl-customize-section-default">
Index: tests/qunit/wp-includes/js/quicktags.js
===================================================================
--- tests/qunit/wp-includes/js/quicktags.js	(revision 0)
+++ tests/qunit/wp-includes/js/quicktags.js	(working copy)
@@ -0,0 +1,59 @@
+/* global wp, jQuery, quicktagsL10n */
+jQuery( function() {
+	module( 'quicktags' );
+
+	test( 'settings.buttons zero', function() {
+		var settings = {
+			id: 'quicktags-test',
+			buttons: ''
+		};
+		var qinst = quicktags( settings );
+		var expected = {};
+
+		QTags._buttonsInit(); // Call manually to make sure theButtons exists (#26183).
+
+		deepEqual( qinst.theButtons, expected, 'buttons not blank on zero-length string' );
+	});
+
+	test( 'settings.buttons false', function() {
+		var settings = {
+			id: 'quicktags-test',
+			buttons: false
+		};
+		var qinst = quicktags( settings );
+		var expected = {};
+
+		QTags._buttonsInit(); // Call manually to make sure theButtons exists (#26183).
+
+		deepEqual( qinst.theButtons, expected, 'buttons not blank on false' );
+	});
+
+	test( 'settings.buttons one', function() {
+		var settings = {
+			id: 'quicktags-test',
+			buttons: 'em'
+		};
+		var qinst = quicktags( settings );
+		var expected = { 'em' : new QTags.TagButton('em','i','<em>','</em>', '', '', '', { ariaLabel: quicktagsL10n.em, ariaLabelClose: quicktagsL10n.emClose } ) };
+
+		QTags._buttonsInit(); // Call manually to make sure theButtons exists (#26183).
+
+		deepEqual( qinst.theButtons, expected, 'buttons not one' );
+	});
+
+	test( 'settings.buttons two', function() {
+		var settings = {
+			id: 'quicktags-test',
+			buttons: 'em,ul'
+		};
+		var qinst = quicktags( settings );
+		var expected = {
+			'em' : new QTags.TagButton('em','i','<em>','</em>', '', '', '', { ariaLabel: quicktagsL10n.em, ariaLabelClose: quicktagsL10n.emClose } ),
+			'ul' : new QTags.TagButton('ul', 'ul', '<ul>\n', '</ul>\n\n', '', '', '', { ariaLabel: quicktagsL10n.ul, ariaLabelClose: quicktagsL10n.ulClose } )
+		};
+
+		QTags._buttonsInit(); // Call manually to make sure theButtons exists (#26183).
+
+		deepEqual( qinst.theButtons, expected, 'buttons not two' );
+	});
+});
