Index: includes/install.core.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/install.core.inc,v retrieving revision 1.49 diff -u -p -r1.49 install.core.inc --- includes/install.core.inc 3 Jan 2011 15:48:11 -0000 1.49 +++ includes/install.core.inc 26 Feb 2011 20:52:56 -0000 @@ -1002,7 +1002,19 @@ function install_select_profile(&$instal $install_state['profiles'] += install_find_profiles(); if (empty($install_state['parameters']['profile'])) { // Try to find a profile. - $profile = _install_select_profile($install_state['profiles']); + $profiles = $install_state['profiles']; + foreach ($profiles as $key => $profile) { + $details = install_profile_info($profile->name); + // Remove hidden profiles (such as the testing profile, which only exists + // to speed up test runs) from the list. This prevents them from being + // displayed in the user interface, and also means that if there is only + // one non-hidden profile, _install_select_profile() will choose it + // automatically. + if (!empty($details['hidden'])) { + unset($profiles[$key]); + } + } + $profile = _install_select_profile($profiles); if (empty($profile)) { // We still don't have a profile, so display a form for selecting one. // Only do this in the case of interactive installations, since this is @@ -1012,7 +1024,7 @@ function install_select_profile(&$instal if ($install_state['interactive']) { include_once DRUPAL_ROOT . '/includes/form.inc'; drupal_set_title(st('Select an installation profile')); - $form = drupal_get_form('install_select_profile_form', $install_state['profiles']); + $form = drupal_get_form('install_select_profile_form', $profiles); return drupal_render($form); } else { @@ -1068,6 +1080,8 @@ function install_select_profile_form($fo $details = install_profile_info($profile->name); // Don't show hidden profiles. This is used by to hide the testing profile, // which only exists to speed up test runs. + // @todo: This duplicates logic in install_select_profile() and is here + // only for backwards compatibility. Remove it in Drupal 8. if ($details['hidden'] === TRUE) { continue; }