_rmdir(LIMB_VAR_DIR); //we need unique temporary dir since test modules are included once $this->var_dir = LIMB_VAR_DIR . '/' . mt_rand(); mkdir(LIMB_VAR_DIR); mkdir($this->var_dir); } function tearDown() { $this->_rmdir(LIMB_VAR_DIR); } function testGetChildren() { mkdir($this->var_dir . '/a'); mkdir($this->var_dir . '/a/b'); touch($this->var_dir . '/a/b/bar_test.php'); touch($this->var_dir . '/a/b/foo_test.php'); $node = new lmbTestTreeDirNode($this->var_dir); $child_nodes = $node->getChildren(); $this->assertEqual(sizeof($child_nodes), 1); $this->assertEqual($child_nodes[0]->getDir(), $this->var_dir . '/a'); $this->assertFalse($child_nodes[0]->isTerminal()); $sub_child_nodes = $child_nodes[0]->getChildren(); $this->assertEqual(sizeof($sub_child_nodes), 1); $this->assertEqual($sub_child_nodes[0]->getDir(), $this->var_dir . '/a/b'); $this->assertFalse($sub_child_nodes[0]->isTerminal()); $terminal_nodes = $sub_child_nodes[0]->getChildren(); $this->assertTrue($terminal_nodes[0]->getFile(), $this->var_dir . '/a/b/bar_test.php'); $this->assertTrue($terminal_nodes[0]->isTerminal()); $this->assertTrue($terminal_nodes[1]->getFile(), $this->var_dir . '/a/b/foo_test.php'); $this->assertTrue($terminal_nodes[1]->isTerminal()); } function testUseFileFilter() { touch($this->var_dir . '/bar_test.php'); touch($this->var_dir . '/bah.php'); touch($this->var_dir . '/junk.php'); touch($this->var_dir . '/FooYo.class.php'); $prev_filter = lmbTestTreeDirNode :: setFileFilter(array('*test.php', '*Yo.class.php')); $node = new lmbTestTreeDirNode($this->var_dir); $nodes = $node->getChildren(); $this->assertEqual(sizeof($nodes), 2); $this->assertEqual($nodes[0]->getFile(), $this->var_dir . '/FooYo.class.php'); $this->assertEqual($nodes[1]->getFile(), $this->var_dir . '/bar_test.php'); lmbTestTreeDirNode :: setFileFilter($prev_filter); } function testUseFileFilterAndClassFormat() { $foo = new GeneratedTestClass(); touch($this->var_dir . '/junk.php'); touch($this->var_dir . '/' . $foo->getFileName() . '.yo'); $prev_filter = lmbTestTreeDirNode :: setFileFilter('*.class.php.yo'); $prev_format = lmbTestTreeFileNode :: setClassFormat('%s.class.php.yo'); $node = new lmbTestTreeDirNode($this->var_dir); $nodes = $node->getChildren(); $this->assertEqual(sizeof($nodes), 1); $this->assertEqual($nodes[0]->getFile(), $this->var_dir . '/' . $foo->getFileName() . '.yo'); $this->assertEqual($nodes[0]->getClass(), $foo->getClass()); lmbTestTreeDirNode :: setFileFilter($prev_filter); lmbTestTreeFileNode :: setClassFormat($prev_format); } function testFindChildByPath() { mkdir($this->var_dir . '/a'); touch($this->var_dir . '/a/bar_test.php'); touch($this->var_dir . '/a/foo_test.php'); $node = new lmbTestTreeDirNode($this->var_dir); $child_node = $node->findChildByPath('/0/1'); $this->assertTrue($child_node->isTerminal()); $this->assertEqual($child_node->getFile(), $this->var_dir . '/a/foo_test.php'); } function testFindNonTerminalGroupByPath() { mkdir($this->var_dir . '/a'); mkdir($this->var_dir . '/a/b'); touch($this->var_dir . '/a/b/bar_test.php'); touch($this->var_dir . '/a/b/foo_test.php'); $node = new lmbTestTreeDirNode($this->var_dir); $child_node = $node->findChildByPath('/0/0'); $this->assertFalse($child_node->isTerminal()); $this->assertEqual($child_node->getDir(), $this->var_dir . '/a/b'); } function testFindChildByOnlySlashPath() { $node = new lmbTestTreeDirNode($this->var_dir); $child_node = $node->findChildByPath('/'); $this->assertEqual($child_node, $node); } function testCreateTestGroup() { mkdir($this->var_dir . '/a'); $test1 = new GeneratedTestClass(); $test2 = new GeneratedTestClass(); file_put_contents($this->var_dir . '/a/.setup.php', ''); file_put_contents($this->var_dir . '/a/.teardown.php', ''); file_put_contents($this->var_dir . '/a/bar_test.php', $test1->generate()); file_put_contents($this->var_dir . '/a/foo_test.php', $test2->generate()); $node = new lmbTestTreeDirNode($this->var_dir); //we check for any possible garbage during php includes ob_start(); $group = $node->createTestCase(); $group->run(new SimpleReporter()); $str = ob_get_contents(); ob_end_clean(); $this->assertEqual($str, "wow" . $test1->getOutput() . $test2->getOutput() . "hey"); } function testUseExternalTestLabel() { file_put_contents($this->var_dir . '/.description', 'Foo'); $node = new lmbTestTreeDirNode($this->var_dir); $this->assertEqual($node->getTestLabel(), 'Foo'); $group = $node->createTestCase(); $this->assertEqual($group->getLabel(), 'Foo'); } function testGetDefaultTestLabel() { $node = new lmbTestTreeDirNode($this->var_dir); $this->assertEqual($node->getTestLabel(), 'Group test in "' . $this->var_dir . '"'); $group = $node->createTestCase(); $this->assertEqual($group->getLabel(), 'Group test in "' . $this->var_dir . '"'); } function testInit() { file_put_contents($this->var_dir . '/.init.php', ''); $node = new lmbTestTreeDirNode($this->var_dir); ob_start(); $group = $node->init(); $str = ob_get_contents(); ob_end_clean(); $this->assertEqual($str, "hey!"); } function testSkipTestsDirectory() { mkdir($this->var_dir . '/a'); mkdir($this->var_dir . '/a/b'); $test1 = new GeneratedTestClass(); $test2 = new GeneratedTestClass(); file_put_contents($this->var_dir . '/a/bar_test.php', $test1->generate()); file_put_contents($this->var_dir . '/a/b/foo_test.php', $test2->generate()); file_put_contents($this->var_dir . '/a/b/.skipif.php', ''); $root_node = new lmbTestTreeDirNode($this->var_dir); $group = $root_node->createTestCase(); ob_start(); $group->run(new SimpleReporter()); $str = ob_get_contents(); ob_end_clean(); $this->assertEqual($str, $test1->getOutput()); } function testDontSkipTestsDirectory() { mkdir($this->var_dir . '/a'); mkdir($this->var_dir . '/a/b'); $test1 = new GeneratedTestClass(); $test2 = new GeneratedTestClass(); file_put_contents($this->var_dir . '/a/bar_test.php', $test1->generate()); file_put_contents($this->var_dir . '/a/b/foo_test.php', $test2->generate()); file_put_contents($this->var_dir . '/a/b/.skipif.php', ''); $root_node = new lmbTestTreeDirNode($this->var_dir); $group = $root_node->createTestCase(); ob_start(); $group->run(new SimpleReporter()); $str = ob_get_contents(); ob_end_clean(); $this->assertEqual($str, $test2->getOutput() . $test1->getOutput()); } function testInitDoesntHappenIfDirIsSkipped() { mkdir($this->var_dir . '/a'); mkdir($this->var_dir . '/a/b'); $test1 = new GeneratedTestClass(); $test2 = new GeneratedTestClass(); file_put_contents($this->var_dir . '/a/bar_test.php', $test1->generate()); file_put_contents($this->var_dir . '/a/b/foo_test.php', $test2->generate()); file_put_contents($this->var_dir . '/a/b/.init.php', ''); file_put_contents($this->var_dir . '/a/b/.skipif.php', ''); $root_node = new lmbTestTreeDirNode($this->var_dir); $group = $root_node->createTestCase(); ob_start(); $group->run(new SimpleReporter()); $str = ob_get_contents(); ob_end_clean(); $this->assertEqual($str, $test1->getOutput()); } function testSkippedDirFixtureSkippedToo() { mkdir($this->var_dir . '/a'); $test = new GeneratedTestClass(); file_put_contents($this->var_dir . '/a/.setup.php', ''); file_put_contents($this->var_dir . '/a/bar_test.php', $test->generate()); file_put_contents($this->var_dir . '/a/.skipif.php', ''); $root_node = new lmbTestTreeDirNode($this->var_dir); $group = $root_node->createTestCase(); ob_start(); $group->run(new SimpleReporter()); $str = ob_get_contents(); ob_end_clean(); $this->assertEqual($str, ''); } } ?>