cvs diff: Diffing modules/update
Index: modules/update/update.info
===================================================================
RCS file: /Users/wright/drupal/local_repo/drupal/modules/update/update.info,v
retrieving revision 1.5
diff -u -p -r1.5 update.info
--- modules/update/update.info	11 Oct 2008 02:33:12 -0000	1.5
+++ modules/update/update.info	26 Sep 2009 02:28:24 -0000
@@ -4,9 +4,10 @@ description = Checks the status of avail
 version = VERSION
 package = Core
 core = 7.x
-files[] = update.module
 files[] = update.compare.inc
 files[] = update.fetch.inc
+files[] = update.install
+files[] = update.module
 files[] = update.report.inc
 files[] = update.settings.inc
-files[] = update.install
+files[] = update.test
Index: modules/update/update.test
===================================================================
RCS file: modules/update/update.test
diff -N modules/update/update.test
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/update/update.test	26 Sep 2009 02:28:24 -0000
@@ -0,0 +1,88 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * This file contains tests for the update module.
+ */
+
+class UpdateTestCase extends DrupalWebTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Update functionality',
+      'description' => 'Tests the update module through a series of functional tests using mock XML data.',
+      'group' => 'Update',
+    );
+  }
+
+  function setUp() {
+    parent::setUp('update_test', 'update');
+    $admin_user = $this->drupalCreateUser(array('administer site configuration'));
+    $this->drupalLogin($admin_user);
+    variable_set('update_fetch_url', url('update-test', array('absolute' => TRUE)));
+  }
+
+  /**
+   * Tests the update module when no updates are available.
+   */
+  function testNoUpdatesAvailable() {
+    $this->refreshUpdateData('no-updates.xml');
+    $this->drupalGet('admin/reports/updates');
+    $this->standardTests();
+    $this->assertText(t('Up to date'));
+    $this->assertNoText(t('Update available'));
+    $this->assertNoText(t('Security update required!'));
+  }
+
+  /**
+   * Tests the update module when one normal update ("7.1") is available.
+   */
+  function testNormalUpdateAvailable() {
+    $this->refreshUpdateData('normal-update.xml');
+    $this->drupalGet('admin/reports/updates');
+    $this->standardTests();
+    $this->assertNoText(t('Up to date'));
+    $this->assertText(t('Update available'));
+    $this->assertNoText(t('Security update required!'));
+    $this->assertRaw(l('7.1', 'http://example.com/drupal-7-1-release'), t('Link to release appears.'));
+    $this->assertRaw(l(t('Download'), 'http://example.com/drupal-7-1.tar.gz'), t('Link to download appears.'));
+    $this->assertRaw(l(t('Release notes'), 'http://example.com/drupal-7-1-release'), t('Link to release notes appears.'));
+  }
+
+  /**
+   * Tests the update module when a security update ("7.2") is available.
+   */
+  function testSecurityUpdateAvailable() {
+    $this->refreshUpdateData('security-update.xml');
+    $this->drupalGet('admin/reports/updates');
+    $this->standardTests();
+    $this->assertNoText(t('Up to date'));
+    $this->assertNoText(t('Update available'));
+    $this->assertText(t('Security update required!'));
+    $this->assertRaw(l('7.2', 'http://example.com/drupal-7-2-release'), t('Link to release appears.'));
+    $this->assertRaw(l(t('Download'), 'http://example.com/drupal-7-2.tar.gz'), t('Link to download appears.'));
+    $this->assertRaw(l(t('Release notes'), 'http://example.com/drupal-7-2-release'), t('Link to release notes appears.'));
+  }
+
+  /**
+   * Helper function: force te update cache to refresh based on the contents of
+   * the specified XML file.
+   *
+   * @param $xml
+   *   The file name of the XML file to use for mock update data.
+   */
+  protected function refreshUpdateData($xml) {
+    variable_set('update_test_xml', $xml);
+    $this->drupalGet('admin/reports/updates/check');
+  }
+
+  /**
+   * Helper function: run a series of assertions that are applicable for all
+   * update statuses.
+   */
+  protected function standardTests() {
+    $this->assertRaw(l(t('Check manually'), 'admin/reports/updates/check'), t('Link to check available updates manually appears.'));
+    $this->assertRaw(l(t('Drupal'), 'http://example.com/project/drupal'), t('Link to the Drupal project appears.'));
+  }
+}
cvs diff: Diffing modules/update/tests
Index: modules/update/tests/no-updates.xml
===================================================================
RCS file: modules/update/tests/no-updates.xml
diff -N modules/update/tests/no-updates.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/update/tests/no-updates.xml	26 Sep 2009 02:28:24 -0000
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project xmlns:dc="http://purl.org/dc/elements/1.1/">
+<title>Drupal</title>
+<short_name>drupal</short_name>
+<dc:creator>Drupal</dc:creator>
+<api_version>7.x</api_version>
+<recommended_major>7</recommended_major>
+<supported_majors>7</supported_majors>
+<default_major>7</default_major>
+<project_status>published</project_status>
+<link>http://example.com/project/drupal</link>
+  <terms>
+   <term><name>Projects</name><value>Drupal project</value></term>
+  </terms>
+<releases>
+ <release>
+  <name>Drupal 7.0</name>
+  <version>7.0</version>
+  <tag>DRUPAL-7-0</tag>
+  <version_major>7</version_major>
+  <version_patch>0</version_patch>
+  <status>published</status>
+  <release_link>http://example.com/drupal-7-0-release</release_link>
+  <download_link>http://example.com/drupal-7-0.tar.gz</download_link>
+  <date>1250424521</date>
+  <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash>
+  <filesize>1073741824</filesize>
+  <terms>
+   <term><name>Release type</name><value>New features</value></term>
+   <term><name>Release type</name><value>Bug fixes</value></term>
+  </terms>
+ </release>
+</releases>
+</project>
Index: modules/update/tests/normal-update.xml
===================================================================
RCS file: modules/update/tests/normal-update.xml
diff -N modules/update/tests/normal-update.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/update/tests/normal-update.xml	26 Sep 2009 02:28:24 -0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project xmlns:dc="http://purl.org/dc/elements/1.1/">
+<title>Drupal</title>
+<short_name>drupal</short_name>
+<dc:creator>Drupal</dc:creator>
+<api_version>7.x</api_version>
+<recommended_major>7</recommended_major>
+<supported_majors>7</supported_majors>
+<default_major>7</default_major>
+<project_status>published</project_status>
+<link>http://example.com/project/drupal</link>
+  <terms>
+   <term><name>Projects</name><value>Drupal project</value></term>
+  </terms>
+<releases>
+ <release>
+  <name>Drupal 7.1</name>
+  <version>7.1</version>
+  <tag>DRUPAL-7-1</tag>
+  <version_major>7</version_major>
+  <version_patch>1</version_patch>
+  <status>published</status>
+  <release_link>http://example.com/drupal-7-1-release</release_link>
+  <download_link>http://example.com/drupal-7-1.tar.gz</download_link>
+  <date>1250424581</date>
+  <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash>
+  <filesize>2147483648</filesize>
+  <terms>
+   <term><name>Release type</name><value>New features</value></term>
+   <term><name>Release type</name><value>Bug fixes</value></term>
+  </terms>
+ </release>
+ <release>
+  <name>Drupal 7.0</name>
+  <version>7.0</version>
+  <tag>DRUPAL-7-0</tag>
+  <version_major>7</version_major>
+  <version_patch>0</version_patch>
+  <status>published</status>
+  <release_link>http://example.com/drupal-7-0-release</release_link>
+  <download_link>http://example.com/drupal-7-0.tar.gz</download_link>
+  <date>1250424521</date>
+  <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash>
+  <filesize>1073741824</filesize>
+  <terms>
+   <term><name>Release type</name><value>New features</value></term>
+   <term><name>Release type</name><value>Bug fixes</value></term>
+  </terms>
+ </release>
+</releases>
+</project>
Index: modules/update/tests/security-update.xml
===================================================================
RCS file: modules/update/tests/security-update.xml
diff -N modules/update/tests/security-update.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/update/tests/security-update.xml	26 Sep 2009 02:28:24 -0000
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project xmlns:dc="http://purl.org/dc/elements/1.1/">
+<title>Drupal</title>
+<short_name>drupal</short_name>
+<dc:creator>Drupal</dc:creator>
+<api_version>7.x</api_version>
+<recommended_major>7</recommended_major>
+<supported_majors>7</supported_majors>
+<default_major>7</default_major>
+<project_status>published</project_status>
+<link>http://example.com/project/drupal</link>
+  <terms>
+   <term><name>Projects</name><value>Drupal project</value></term>
+  </terms>
+<releases>
+ <release>
+  <name>Drupal 7.2</name>
+  <version>7.2</version>
+  <tag>DRUPAL-7-2</tag>
+  <version_major>7</version_major>
+  <version_patch>2</version_patch>
+  <status>published</status>
+  <release_link>http://example.com/drupal-7-2-release</release_link>
+  <download_link>http://example.com/drupal-7-2.tar.gz</download_link>
+  <date>1250424641</date>
+  <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash>
+  <filesize>4294967296</filesize>
+  <terms>
+   <term><name>Release type</name><value>New features</value></term>
+   <term><name>Release type</name><value>Bug fixes</value></term>
+   <term><name>Release type</name><value>Security update</value></term>
+  </terms>
+ </release>
+ <release>
+  <name>Drupal 7.1</name>
+  <version>7.1</version>
+  <tag>DRUPAL-7-1</tag>
+  <version_major>7</version_major>
+  <version_patch>1</version_patch>
+  <status>published</status>
+  <release_link>http://example.com/drupal-7-1-release</release_link>
+  <download_link>http://example.com/drupal-7-1.tar.gz</download_link>
+  <date>1250424581</date>
+  <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash>
+  <filesize>2147483648</filesize>
+  <terms>
+   <term><name>Release type</name><value>New features</value></term>
+   <term><name>Release type</name><value>Bug fixes</value></term>
+  </terms>
+ </release>
+ <release>
+  <name>Drupal 7.0</name>
+  <version>7.0</version>
+  <tag>DRUPAL-7-0</tag>
+  <version_major>7</version_major>
+  <version_patch>0</version_patch>
+  <status>published</status>
+  <release_link>http://example.com/drupal-7-0-release</release_link>
+  <download_link>http://example.com/drupal-7-0.tar.gz</download_link>
+  <date>1250424521</date>
+  <mdhash>b966255555d9c9b86d480ca08cfaa98e</mdhash>
+  <filesize>1073741824</filesize>
+  <terms>
+   <term><name>Release type</name><value>New features</value></term>
+   <term><name>Release type</name><value>Bug fixes</value></term>
+  </terms>
+ </release>
+</releases>
+</project>
Index: modules/update/tests/update_test.info
===================================================================
RCS file: modules/update/tests/update_test.info
diff -N modules/update/tests/update_test.info
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/update/tests/update_test.info	26 Sep 2009 02:28:24 -0000
@@ -0,0 +1,8 @@
+; $Id$
+name = Update test
+description = Support module for update module testing.
+package = Testing
+version = VERSION
+core = 7.x
+files[] = update_test.module
+hidden = TRUE
Index: modules/update/tests/update_test.module
===================================================================
RCS file: modules/update/tests/update_test.module
diff -N modules/update/tests/update_test.module
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/update/tests/update_test.module	26 Sep 2009 02:28:54 -0000
@@ -0,0 +1,36 @@
+<?php
+// $Id$
+
+/**
+ * Implement hook_menu().
+ */
+function update_test_menu() {
+  $items = array();
+
+  $items['update-test'] = array(
+    'title' => t('Update test'),
+    'page callback' => 'update_test_mock_page',
+    'access callback' => TRUE,
+    'type' => MENU_CALLBACK,
+  );
+
+  return $items;
+}
+
+/**
+ * Implement hook_system_info_alter().
+ */
+function update_test_system_info_alter(&$info, $file) {
+  // Make all modules and themes' versions 7.0 for testing.
+  $info['version'] = '7.0';
+}
+
+/**
+ * Page callback, prints mock XML for the update module.
+ */
+function update_test_mock_page() {
+  $xml = variable_get('update_test_xml', FALSE);
+  // Note: this will cause an exception to occur if no variable was set and
+  // $file is FALSE.
+  readfile(drupal_get_path('module', 'update_test') . "/$xml");
+}
