สำหรับโครงการขนาดใหญ่เราจะใช้รหัสขับเคลื่อนเวิร์กโฟลว์การพัฒนา เรากำลังใช้โปรไฟล์การติดตั้งแบบกำหนดเองเพื่อติดตั้งและกำหนดค่า 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;
}
}