protected function loadConfig($configFilename)
 {
     require $configFilename;
     if (isset($config['timezone'])) {
         date_default_timezone_set($config['timezone']);
     }
     if (isset($config['theme'])) {
         $theme = str_replace('@[^A-Za-z0-9-_]+@', '', $config['theme']);
         $themeFile = dirname(__FILE__) . '/../theme/' . $theme . '.php';
         if (file_exists($themeFile)) {
             $this->themeFilename = $themeFile;
         } else {
             $this->themeFilename = dirname(__FILE__) . '/../theme/' . self::DEFAULTTHEME . '.php';
         }
     } else {
         $this->themeFilename = dirname(__FILE__) . '/../theme/' . self::DEFAULTTHEME . '.php';
     }
     foreach ($config['groups'] as $groupConfig) {
         $TestGroup = new TestGroup($groupConfig['name'], $groupConfig['host']);
         // add tests to group
         foreach ($groupConfig['tests'] as $testConfig) {
             $TestGroup->addTest($TestGroup->createTest($testConfig));
         }
         $this->TestGroups[] = $TestGroup;
     }
     return true;
 }
 public function addGroup(TestGroup $group)
 {
     $group->setUser($this);
     $this->groups->add($group);
     return $this;
 }
    protected function configure()
    {
        $this->addIndex('child1', $this->one);
        $this->addIndex('child2', $this->two);
        $this->getServiceRegistry()->register($this->service);
    }
}
$one = new TestChildOne();
$two = new TestChildTwo();
$two->setServiceRegistry(new xfServiceRegistry());
$two->describe();
// forces ->setup()
$dispatcher = new sfEventDispatcher();
$logger = new xfLoggerEventDispatcher($dispatcher);
$service = new xfService(new xfMockIdentifier());
$group = new TestGroup();
$group->setLogger($logger);
$group->one = $one;
$group->two = $two;
$group->service = $service;
$t = new lime_test(11, new lime_output_color());
$t->ok($group->getIndex('child1') === $one, '->getIndex() returns the index');
try {
    $msg = '->getIndex() fails if index does not exist';
    $group->getIndex('foobar');
    $t->fail($msg);
} catch (Exception $e) {
    $t->pass($msg);
}
$t->ok($one->getLogger() === $logger, '->setup() configures the logger of the child');
$t->ok($one->getServiceRegistry() === $group->getServiceRegistry(), '->search() passes on the service registry');