Index: src/wp-admin/includes/ms.php
===================================================================
--- src/wp-admin/includes/ms.php	(revision 33141)
+++ src/wp-admin/includes/ms.php	(working copy)
@@ -190,6 +190,13 @@
 
 	if ( !$user->exists() )
 		return false;
+
+	// Global super-administrators are protected, and cannot be deleted.
+	$_super_admins = get_super_admins();
+	if ( in_array( $user->user_login, $_super_admins, true ) ) {
+		return false;
+	}
+
 	/**
 	 * Fires before a user is deleted from the network.
 	 *
Index: tests/phpunit/tests/user/multisite.php
===================================================================
--- tests/phpunit/tests/user/multisite.php	(revision 33141)
+++ tests/phpunit/tests/user/multisite.php	(working copy)
@@ -12,6 +12,8 @@
 class Tests_Multisite_User extends WP_UnitTestCase {
 	protected $suppress = false;
 
+	protected $super_admins = array();
+
 	function setUp() {
 		global $wpdb;
 		parent::setUp();
@@ -229,16 +231,41 @@
 		$this->assertQueryTrue( 'is_author', 'is_archive' );
 	}
 
+	function test_super_admin_cannot_be_deleted() {
+		$user_id = $this->factory->user->create();
+		$this->unset_super_admin_global();
+		grant_super_admin( $user_id );
+		$this->assertFalse( wpmu_delete_user( $user_id ) );
+		$this->reset_super_admin_global();
+	}
+
+	function test_revoked_super_admin_can_be_deleted() {
+		$user_id = $this->factory->user->create();
+		$this->unset_super_admin_global();
+		grant_super_admin( $user_id );
+		revoke_super_admin( $user_id );
+		$this->assertTrue( wpmu_delete_user( $user_id ) );
+		$this->reset_super_admin_global();
+	}
+
+	function test_revoked_super_admin_is_deleted() {
+		$user_id = $this->factory->user->create();
+		$this->unset_super_admin_global();
+		grant_super_admin( $user_id );
+		revoke_super_admin( $user_id );
+		wpmu_delete_user( $user_id );
+		$user = new WP_User( $user_id );
+
+		$this->assertFalse( $user->exists(), 'WP_User->exists' );
+		$this->reset_super_admin_global();
+	}
+
 	/**
 	 * @ticket 27205
 	 */
 	function test_granting_super_admins() {
-		if ( isset( $GLOBALS['super_admins'] ) ) {
-			$old_global = $GLOBALS['super_admins'];
-			unset( $GLOBALS['super_admins'] );
-		}
-
 		$user_id = $this->factory->user->create();
+		$this->unset_super_admin_global();
 
 		$this->assertFalse( is_super_admin( $user_id ) );
 		$this->assertFalse( revoke_super_admin( $user_id ) );
@@ -258,12 +285,29 @@
 		$this->assertTrue( is_super_admin( $user_id ) );
 		$this->assertTrue( revoke_super_admin( $user_id ) );
 		$this->assertTrue( revoke_super_admin( $second_user ) );
+		$this->reset_super_admin_global();
+	}
 
-		if ( isset( $old_global ) ) {
-			$GLOBALS['super_admins'] = $old_global;
+	/**
+	 * Temporarily unset the super_admins global to ensure tests that rely on
+	 * revoke_super_admin and grand_super_admin will run properly.
+	 */
+	function unset_super_admin_global() {
+		if ( isset( $GLOBALS['super_admins'] ) ) {
+			$this->super_admins = $GLOBALS['super_admins'];
+			unset( $GLOBALS['super_admins'] );
 		}
 	}
 
+	/**
+	 * Reset the super_admins global to its previous value.
+	 */
+	function reset_super_admin_global() {
+		if ( isset( $this->super_admins ) ) {
+			$GLOBALS['super_admins'] = $this->super_admins;
+			$this->super_admins = null;
+		}
+	}
 }
 
 endif ;
