대규모 프로젝트의 경우 코드 기반 개발 워크 플로를 사용하고 있습니다 . 우리는 사용자 정의 설치 프로파일을 사용하여 프로젝트에 사용 된 contrib 및 사용자 정의 모듈을 설치하고 구성합니다. 이 프로파일의 정확성을 보장하기 위해 다른 모듈과 마찬가지로 테스트해야합니다.
현재 우리는 지금까지 잘 작동하는 SimpleTest 테스트 사례를 사용합니다.
class FooTestCase extends DrupalWebTestCase {
protected $admin_user = null;
public function getInfo() {
return array(
'name' => 'Foo Profile',
'description' => 'Ensure that the Foo profile configure the site.',
'group' => 'Foo',
);
}
public function setUp() {
$this->profile = 'foo';
parent::setUp();
}
//Test methods ...
}
이 사이트는 다국어 여야하므로 필요한 모든 언어를 설치하고 활성화하려면을 사용하여 사용자 지정 프로필 작업을 추가했습니다 hook_install_tasks
. 브라우저에서 실행할 때 작업이 제대로 작동합니다. 그러나 DrupalWebTestCase :: setUp`이 실행될 때는 실행되지 않습니다. 따라서 향후 프로파일이 리팩토링 될 때마다 손실되지 않도록 그 효과를 테스트 할 수 없습니다.
언어 설치에는 번역로드가 필요하므로 작업 자체는 일괄 처리를 사용합니다.
이 특정 작업을 실행 FooTestCase:setUp
하고 더 일반적으로 내 프로필의 모든 (대화식이 아닌 작업)을 실행하는 방법을 찾고 있습니다.
참고로 다음은 작업 코드입니다.
function foo_install_tasks($install_state) {
return array(on
'foo_install_import_locales' => array(
'display_name' => 'Install additional languages',
'display' => TRUE,
'type' => 'batch',
'run' => INSTALL_TASK_RUN_IF_NOT_COMPLETED,
)
);
}
function foo_install_import_locales(&$install_state) {
include_once DRUPAL_ROOT . '/includes/locale.inc';
include_once DRUPAL_ROOT . '/includes/iso.inc';
$batch = array();
$predefined = _locale_get_predefined_list();
foreach (array('nl', 'de') as $install_locale) {
if (!isset($predefined[$install_locale])) {
// Drupal does not know about this language, so we prefill its values with
// our best guess. The user will be able to edit afterwards.
locale_add_language($install_locale, $install_locale, $install_locale, LANGUAGE_LTR, '', '', TRUE, FALSE);
}
else {
// A known predefined language, details will be filled in properly.
locale_add_language($install_locale, NULL, NULL, NULL, '', '', TRUE, FALSE);
}
// Collect files to import for this language.
$batch = array_merge($batch, locale_batch_by_language($install_locale, NULL));
}
if (!empty($batch)) {
// Remember components we cover in this batch set.
variable_set('foo_install_import_locales', $batch['#components']);
return $batch;
}
}