Index: modules/simpletest/tests/hook_menu.access.inc
===================================================================
RCS file: modules/simpletest/tests/hook_menu.access.inc
diff -N modules/simpletest/tests/hook_menu.access.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/hook_menu.access.inc	24 Nov 2008 15:14:15 -0000
@@ -0,0 +1,5 @@
+<?php
+
+function hook_menu_access() {
+  return TRUE;
+}
Index: modules/simpletest/tests/hook_menu.info
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/hook_menu.info,v
retrieving revision 1.1
diff -u -p -r1.1 hook_menu.info
--- modules/simpletest/tests/hook_menu.info	2 Sep 2008 19:23:02 -0000	1.1
+++ modules/simpletest/tests/hook_menu.info	24 Nov 2008 15:14:15 -0000
@@ -5,4 +5,6 @@ package = Testing
 version = VERSION
 core = 7.x
 files[] = hook_menu.module
+files[] = hook_menu.page.inc
+files[] = hook_menu.access.inc
 hidden = TRUE
Index: modules/simpletest/tests/hook_menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/hook_menu.module,v
retrieving revision 1.1
diff -u -p -r1.1 hook_menu.module
--- modules/simpletest/tests/hook_menu.module	2 Sep 2008 19:23:02 -0000	1.1
+++ modules/simpletest/tests/hook_menu.module	24 Nov 2008 15:14:15 -0000
@@ -16,5 +16,22 @@ function hook_menu_menu() {
     'page callback' => 'node_save',
     'menu_name' => isset($_GET["hook_menu_name"]) ? $_GET["hook_menu_name"] : 'original',
   );
+  
+  $items['menu_page_callback'] = array(
+    'title' => t('Page callback in separate file'),
+    'access arguments' => array('administer site configuration'),
+    'page callback' => 'hook_menu_page',
+    'page arguments' => array('page'),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['menu_access_callback'] = array(
+    'title' => t('Access callback in separate file'),
+    'access callback' => 'hook_menu_access',
+    'page callback' => 'hook_menu_page',
+    'page arguments' => array('access'),
+    'type' => MENU_CALLBACK,    
+  );
+
   return $items;
 }
\ No newline at end of file
Index: modules/simpletest/tests/hook_menu.page.inc
===================================================================
RCS file: modules/simpletest/tests/hook_menu.page.inc
diff -N modules/simpletest/tests/hook_menu.page.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/hook_menu.page.inc	24 Nov 2008 15:14:15 -0000
@@ -0,0 +1,5 @@
+<?php
+
+function hook_menu_page($type) {
+  return '<div id="hook_menu_outcome">' . $type . ' called.</div>';
+}
Index: modules/simpletest/tests/menu.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/menu.test,v
retrieving revision 1.3
diff -u -p -r1.3 menu.test
--- modules/simpletest/tests/menu.test	20 Nov 2008 07:18:59 -0000	1.3
+++ modules/simpletest/tests/menu.test	24 Nov 2008 15:14:15 -0000
@@ -18,15 +18,16 @@ class MenuIncTestCase extends DrupalWebT
   function setUp() {
     // Enable dummy module that implements hook_menu.
     parent::setUp('hook_menu');
+    
+    // Log in as administrator.
+    $admin_user = $this->drupalCreateUser(array('administer site configuration'));
+    $this->drupalLogin($admin_user);
   }
 
   /**
    * Tests for menu_name parameter for hook_menu().
    */
   function testMenuName() {
-    $admin_user = $this->drupalCreateUser(array('administer site configuration'));
-    $this->drupalLogin($admin_user);
-
     $sql = "SELECT menu_name FROM {menu_links} WHERE router_path = 'menu_name_test'";
     $name = db_result(db_query($sql));
     $this->assertEqual($name, 'original', t('Menu name is "original".'));
@@ -38,6 +39,14 @@ class MenuIncTestCase extends DrupalWebT
     $name = db_result(db_query($sql));
     $this->assertEqual($name, 'changed', t('Menu name was successfully changed after rebuild.'));
   }
+  
+  function testMenuPage() {
+    $this->drupalGet('menu_page_callback');
+    $this->assertRaw('<div id="hook_menu_outcome">page called.</div>', t('Loaded a menu item whose page callback was in a separate file.'));
+    
+    $this->drupalGet('menu_access_callback');
+    $this->assertRaw('<div id="hook_menu_outcome">access called.</div>', t('Loaded a menu item whose access callback was in a separate file.'));
+  }
 }
 
 /**
