Index: tests/phpunit/tests/user/capabilities.php
===================================================================
--- tests/phpunit/tests/user/capabilities.php	(revision 43382)
+++ tests/phpunit/tests/user/capabilities.php	(working copy)
@@ -215,6 +215,18 @@
 
 	}
 
+	final private function _getSingleSiteDynamicPrimitiveCaps() {
+		return array(
+			'install_languages' => array( 'administrator' ),
+		);
+	}
+
+	final private function _getMultiSiteDynamicPrimitiveCaps() {
+		return array(
+			'install_languages' => array(),
+		);
+	}
+
 	final private function _getSingleSiteMetaCaps() {
 		return array(
 			'create_sites'                => array(),
@@ -292,7 +304,7 @@
 	}
 
 	protected function getAllCapsAndRoles() {
-		return $this->getPrimitiveCapsAndRoles() + $this->getMetaCapsAndRoles();
+		return $this->getPrimitiveCapsAndRoles() + $this->getDynamicPrimitiveCapsAndRoles() + $this->getMetaCapsAndRoles();
 	}
 
 	protected function getPrimitiveCapsAndRoles() {
@@ -303,6 +315,14 @@
 		}
 	}
 
+	protected function getDynamicPrimitiveCapsAndRoles() {
+		if ( is_multisite() ) {
+			return $this->_getMultiSiteDynamicPrimitiveCaps();
+		} else {
+			return $this->_getSingleSiteDynamicPrimitiveCaps();
+		}
+	}
+
 	protected function getMetaCapsAndRoles() {
 		if ( is_multisite() ) {
 			return $this->_getMultiSiteMetaCaps();
@@ -319,6 +339,13 @@
 		sort( $multi_primitive );
 		$this->assertEquals( $single_primitive, $multi_primitive );
 
+
+		$single_dynamic_primitive = array_keys( $this->_getSingleSiteDynamicPrimitiveCaps() );
+		$multi_dynamic_primitive  = array_keys( $this->_getMultiSiteDynamicPrimitiveCaps() );
+		sort( $single_dynamic_primitive );
+		sort( $multi_dynamic_primitive );
+		$this->assertEquals( $single_dynamic_primitive, $multi_dynamic_primitive );
+
 		$single_meta = array_keys( $this->_getSingleSiteMetaCaps() );
 		$multi_meta  = array_keys( $this->_getMultiSiteMetaCaps() );
 		sort( $single_meta );
@@ -396,6 +423,53 @@
 	}
 
 	/**
+	 * Test the tests. All dynamic primitive capabilities are checked twice against the user,
+	 * once with the 'user_has_cap' filters applied and once without. An administrator user
+	 * is used for the test. Note that super admin capabilities in multisite are skipped since
+	 * they cannot be tested with this method.
+	 *
+	 * @group capTestTests
+	 */
+	public function testDynamicPrimitiveCapsTestsAreCorrect() {
+		$user = self::$users['administrator'];
+
+		$caps = $this->getDynamicPrimitiveCapsAndRoles();
+
+		$filtered = array();
+		foreach ( $caps as $cap => $roles ) {
+			if ( empty( $roles ) ) {
+				continue;
+			}
+
+			if ( $user->has_cap( $cap ) ) {
+				$filtered[] = $cap;
+			}
+		}
+
+		remove_all_filters( 'user_has_cap' );
+
+		$unfiltered_granted = array();
+		$unfiltered_revoked = array();
+		foreach ( $caps as $cap => $roles ) {
+			if ( empty( $roles ) ) {
+				continue;
+			}
+
+			if ( $user->has_cap( $cap ) ) {
+				$unfiltered_granted[] = $cap;
+			} else {
+				$unfiltered_revoked[] = $cap;
+			}
+		}
+
+		$missing_dynamic_primitive_cap_checks = array_diff( $unfiltered_revoked, $filtered );
+		$this->assertSame( array(), $missing_dynamic_primitive_cap_checks, 'These dynamic primitive capabilities are not correctly granted' );
+
+		$incorrect_dynamic_primitive_cap_checks = array_intersect( $filtered, $unfiltered_granted );
+		$this->assertSame( array(), $incorrect_dynamic_primitive_cap_checks, 'These capabilities are not dynamic primitive' );
+	}
+
+	/**
 	 * Test the tests. All meta capabilities should have a condition in the `map_meta_cap()`
 	 * function that handles the capability.
 	 *
