Kiểm tra hồ sơ cài đặt với các tác vụ tùy chỉnh


9

Đối với một dự án lớn, chúng tôi đang sử dụng quy trình phát triển dựa trên mã . Chúng tôi đang sử dụng một hồ sơ cài đặt tùy chỉnh để cài đặt và cấu hình các mô-đun đóng góp và tùy chỉnh được sử dụng trong dự án. Đảm bảo tính chính xác của hồ sơ này, chúng tôi cần kiểm tra nó như bất kỳ mô-đun nào khác.

Hiện tại, chúng tôi sử dụng một trường hợp thử nghiệm SimpleTest trông giống như thế này hoạt động tốt cho đến nay.

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 ...
}

Trang web phải đa ngôn ngữ, vì vậy để cài đặt và kích hoạt tất cả ngôn ngữ cần thiết, tôi đã thêm một tác vụ hồ sơ tùy chỉnh bằng cách sử dụng hook_install_tasks. Tác vụ hoạt động tốt khi được thực thi từ trình duyệt. Nhưng nó không được thực thi khi DrupalWebTestCase :: setUp` được chạy. Vì vậy, chúng tôi không thể kiểm tra hiệu ứng của nó để đảm bảo chúng không bị mất bất cứ điều gì việc tái cấu trúc hồ sơ của chúng tôi sẽ trải qua trong tương lai.

Vì cài đặt ngôn ngữ yêu cầu tải bản dịch, bản thân tác vụ sử dụng xử lý hàng loạt.

Tôi đang tìm kiếm cả một cách để thực hiện nhiệm vụ cụ thể này FooTestCase:setUpvà nói chung là để tất cả (các nhiệm vụ không tương tác) trong hồ sơ của tôi được thực thi.

Để tham khảo, đây là mã cho nhiệm vụ

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;
  }
}

Câu trả lời:


6

Tôi thường thấy tốt nhất là để hồ sơ cài đặt của bạn ở mức trần nhất có thể và đặt các tác vụ như thế này vào hook_enable của một mô-đun cụ thể của trang web. Tương tự, bất kỳ cập nhật nào cần được thực hiện nên được đưa vào các hook_update_Nchức năng trong cùng một mô-đun, trong khi cập nhật hook_enablethực hiện.

Điều này làm cho việc kiểm tra đơn giản hơn nhiều và có thêm lợi ích là giữ tất cả các thiết lập và cập nhật của bạn ở một nơi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.