function pmUpdateStatus::doTest

8.0.x pmUpdateStatusTest.php pmUpdateStatus::doTest($update_backend)
7.x pmUpdateStatusTest.php pmUpdateStatus::doTest($update_backend)
master pmUpdateStatusTest.php pmUpdateStatus::doTest($update_backend)
2 calls to pmUpdateStatus::doTest()
pmUpdateStatus::testUpdateStatusDrupal in tests/pmUpdateStatusTest.php
Test several update statuses via drupal backend.
pmUpdateStatus::testUpdateStatusDrush in tests/pmUpdateStatusTest.php
Test several update statuses via drush backend.

File

tests/pmUpdateStatusTest.php, line 78
Prepare a codebase with modules in several update status and test pm-updatestatus.

Namespace

Unish

Class

pmUpdateStatus
@group slow @group pm

Code

function doTest($update_backend) {

  // Test several projects with a variety of statuses.
  $options = array(
    'root' => $this->webroot(),
    'uri' => key($this->getSites()),
    'verbose' => NULL,
    'backend' => NULL,
    'update-backend' => $update_backend,
  );
  $this->drush('pm-updatestatus', array(), $options);
  $parsed = $this->parse_backend_output($this->getOutput());
  $data = $parsed['object'];

  $expected = array(
    'drupal' => 'SECURITY UPDATE available',
    'bad_judgement' => 'Update available',
    'ctools' => 'Up to date',
    'devel' => 'SECURITY UPDATE available',
    'cck' => 'Installed version not supported',
    'zen' => 'Project was not packaged by drupal.org but obtained from git. You need to enable git_deploy module',
  );
  foreach ($expected as $module => $status_msg) {
    $this->assertArrayHasKey($module, $data, "$module module present in pm-updatestatus output");
    $this->assertEquals($data[$module]['status_msg'], $status_msg, "$module status is '$status_msg'");
  }


  // Test statuses when asked for specific projects and versions.
  $args = array(
    'bad_judgement-1.0-rc38',
    'ctools-0.0',
    'devel-1.5',
    'foo',
  );
  $this->drush('pm-updatestatus', $args, $options);
  $parsed = $this->parse_backend_output($this->getOutput());
  $data = $parsed['object'];

  $expected = array(
    'bad_judgement' => 'Specified version already installed',
    'ctools' => 'Specified version not found',
    'devel' => 'Specified version available',
    'foo' => 'Specified project not found',
  );
  foreach ($expected as $module => $status_msg) {
    $this->assertArrayHasKey($module, $data, "$module module present in pm-updatestatus output");
    $this->assertEquals($data[$module]['status_msg'], $status_msg, "$module status is '$status_msg'");
  }
  // We don't expect any output for other projects than the provided ones.
  $not_expected = array(
    'drupal',
    'cck',
    'zen',
  );
  foreach ($not_expected as $module) {
    $this->assertArrayNotHasKey($module, $data, "$module module not present in pm-updatestatus output");
  }


  // Test --security-only.
  $this->drush('pm-updatestatus', array(), $options + array('security-only' => NULL));
  $parsed = $this->parse_backend_output($this->getOutput());
  $data = $parsed['object'];

  $expected = array(
    'drupal' => 'SECURITY UPDATE available',
    'devel' => 'SECURITY UPDATE available',
  );
  foreach ($expected as $module => $status_msg) {
    $this->assertArrayHasKey($module, $data, "$module module present in pm-updatestatus output");
    $this->assertEquals($data[$module]['status_msg'], $status_msg, "$module status is '$status_msg'");
  }
  // We don't expect any output for projects without security updates.
  $not_expected = array(
    'bad_judgement',
    'ctools',
    'cck',
    'zen',
  );
  foreach ($not_expected as $module) {
    $this->assertArrayNotHasKey($module, $data, "$module module not present in pm-updatestatus output");
  }


  // Test --check-disabled.
  $dis_options = array(
    'root' => $this->webroot(),
    'uri' => key($this->getSites()),
    'yes' => NULL,
  );
  $this->drush('pm-disable', array('devel'), $dis_options);

  $this->drush('pm-updatestatus', array(), $options + array('check-disabled' => 1));
  $parsed = $this->parse_backend_output($this->getOutput());
  $data = $parsed['object'];
  $this->assertArrayHasKey('devel', $data, "devel module present in pm-updatestatus output");

  $this->drush('pm-updatestatus', array(), $options + array('check-disabled' => 0));
  $parsed = $this->parse_backend_output($this->getOutput());
  $data = $parsed['object'];
  $this->assertArrayNotHasKey('devel', $data, "devel module not present in pm-updatestatus output");
}