কাস্টম টাস্ক সহ ইনস্টলেশন প্রোফাইল পরীক্ষা করা


9

একটি বৃহত প্রকল্পের জন্য, আমরা একটি কোড চালিত উন্নয়ন কর্মপ্রবাহ ব্যবহার করছি । আমরা প্রকল্পে ব্যবহৃত অবদান এবং কাস্টম মডিউলগুলি ইনস্টল এবং কনফিগার করতে একটি কাস্টম ইনস্টলেশন প্রোফাইল ব্যবহার করছি। এই প্রোফাইলের নির্ভুলতা নিশ্চিত করা, আমাদের অন্য মডিউলের মতো এটি পরীক্ষা করা দরকার।

বর্তমানে, আমরা একটি সিম্পেস্টেস্ট টেস্ট কেস ব্যবহার করি যা দেখতে দেখতে এটি এখনও ভাল কাজ করেছে।

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

উত্তর:


6

আমি সাধারণত আপনার ইনস্টলেশন প্রোফাইলটি যথাসম্ভব খালি হাড় হিসাবে ছেড়ে দেওয়া ভাল বলে মনে করি এবং সাইট নির্দিষ্ট মডিউলের হুক_এনেবলের মতো কাজগুলি রেখেছি। একইভাবে, বাস্তবায়ন hook_update_Nআপডেট করার সময় যে কোনও আপডেটগুলি করা দরকার একই মডিউলে ফাংশনগুলিতে রাখা উচিত hook_enable

এটি পরীক্ষা করা এটি আরও সহজ করে তোলে এবং আপনার সমস্ত সেটআপ এবং আপডেটগুলি এক জায়গায় রাখার যুক্ত সুবিধা রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.