From d36b7bde4208dc08bb1a061ee45a090f69c82716 Mon Sep 17 00:00:00 2001 From: Angie Byron <webchick@24967.no-reply.drupal.org> Date: Mon, 15 Nov 2010 00:37:08 +0000 Subject: [PATCH] #895140 follow-up by David_Rothstein: Tests to ensure older versions of modules are not chosen over new ones. --- modules/simpletest/tests/common.test | 60 +++++++++++++++++++ ...drupal_system_listing_compatible_test.info | 8 +++ ...upal_system_listing_compatible_test.module | 2 + ...upal_system_listing_incompatible_test.info | 8 +++ ...al_system_listing_incompatible_test.module | 2 + ...drupal_system_listing_compatible_test.info | 8 +++ ...upal_system_listing_compatible_test.module | 2 + ...upal_system_listing_incompatible_test.info | 11 ++++ ...al_system_listing_incompatible_test.module | 2 + 9 files changed, 103 insertions(+) create mode 100644 modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info create mode 100644 modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module create mode 100644 modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info create mode 100644 modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module create mode 100644 profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info create mode 100644 profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module create mode 100644 profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info create mode 100644 profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module diff --git a/modules/simpletest/tests/common.test b/modules/simpletest/tests/common.test index 82f8b2e392a9..83f2e97343da 100644 --- a/modules/simpletest/tests/common.test +++ b/modules/simpletest/tests/common.test @@ -1976,6 +1976,66 @@ class ParseInfoFilesTestCase extends DrupalWebTestCase { } } +/** + * Tests for the drupal_system_listing() function. + */ +class DrupalSystemListingTestCase extends DrupalWebTestCase { + /** + * Use the testing profile; this is needed for testDirectoryPrecedence(). + */ + protected $profile = 'testing'; + + public static function getInfo() { + return array( + 'name' => 'Drupal system listing', + 'description' => 'Tests the mechanism for scanning system directories in drupal_system_listing().', + 'group' => 'System', + ); + } + + /** + * Test that files in different directories take precedence as expected. + */ + function testDirectoryPrecedence() { + // Define the module files we will search for, and the directory precedence + // we expect. + $expected_directories = array( + // When the copy of the module in the profile directory is incompatible + // with Drupal core, the copy in the core modules directory takes + // precedence. + 'drupal_system_listing_incompatible_test' => array( + 'modules/simpletest/tests', + 'profiles/testing/modules', + ), + // When both copies of the module are compatible with Drupal core, the + // copy in the profile directory takes precedence. + 'drupal_system_listing_compatible_test' => array( + 'profiles/testing/modules', + 'modules/simpletest/tests', + ), + ); + + // This test relies on two versions of the same module existing in + // different places in the filesystem. Without that, the test has no + // meaning, so assert their presence first. + foreach ($expected_directories as $module => $directories) { + foreach ($directories as $directory) { + $filename = "$directory/$module/$module.module"; + $this->assertTrue(file_exists(DRUPAL_ROOT . '/' . $filename), t('@filename exists.', array('@filename' => $filename))); + } + } + + // Now scan the directories and check that the files take precedence as + // expected. + $files = drupal_system_listing('/\.module$/', 'modules', 'name', 1); + foreach ($expected_directories as $module => $directories) { + $expected_directory = array_shift($directories); + $expected_filename = "$expected_directory/$module/$module.module"; + $this->assertEqual($files[$module]->uri, $expected_filename, t('Module @module was found at @filename.', array('@module' => $module, '@filename' => $expected_filename))); + } + } +} + /** * Tests for the format_date() function. */ diff --git a/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info new file mode 100644 index 000000000000..155de2ed7609 --- /dev/null +++ b/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info @@ -0,0 +1,8 @@ +; $Id$ +name = "Drupal system listing compatible test" +description = "Support module for testing the drupal_system_listing function." +package = Testing +version = VERSION +core = 7.x +files[] = drupal_system_listing_compatible_test.module +hidden = TRUE diff --git a/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module b/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module new file mode 100644 index 000000000000..13bb990c402e --- /dev/null +++ b/modules/simpletest/tests/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module @@ -0,0 +1,2 @@ +<?php +// $Id$ diff --git a/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info new file mode 100644 index 000000000000..491fbda2ffe9 --- /dev/null +++ b/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info @@ -0,0 +1,8 @@ +; $Id$ +name = "Drupal system listing incompatible test" +description = "Support module for testing the drupal_system_listing function." +package = Testing +version = VERSION +core = 7.x +files[] = drupal_system_listing_incompatible_test.module +hidden = TRUE diff --git a/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module b/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module new file mode 100644 index 000000000000..13bb990c402e --- /dev/null +++ b/modules/simpletest/tests/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module @@ -0,0 +1,2 @@ +<?php +// $Id$ diff --git a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info new file mode 100644 index 000000000000..155de2ed7609 --- /dev/null +++ b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info @@ -0,0 +1,8 @@ +; $Id$ +name = "Drupal system listing compatible test" +description = "Support module for testing the drupal_system_listing function." +package = Testing +version = VERSION +core = 7.x +files[] = drupal_system_listing_compatible_test.module +hidden = TRUE diff --git a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module new file mode 100644 index 000000000000..13bb990c402e --- /dev/null +++ b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.module @@ -0,0 +1,2 @@ +<?php +// $Id$ diff --git a/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info b/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info new file mode 100644 index 000000000000..37dbc986ea82 --- /dev/null +++ b/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.info @@ -0,0 +1,11 @@ +; $Id$ +name = "Drupal system listing incompatible test" +description = "Support module for testing the drupal_system_listing function." +package = Testing +version = VERSION +; This deliberately has the wrong core version, to test that it does not take +; precedence over the version of the same module that is in the +; modules/simpletest/tests directory. +core = 6.x +files[] = drupal_system_listing_incompatible_test.module +hidden = TRUE diff --git a/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module b/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module new file mode 100644 index 000000000000..13bb990c402e --- /dev/null +++ b/profiles/testing/modules/drupal_system_listing_incompatible_test/drupal_system_listing_incompatible_test.module @@ -0,0 +1,2 @@ +<?php +// $Id$ -- GitLab