public function testIsScenarioMatchFilter() { $feature = new FeatureNode(null, null, array('feature-tag'), null, array(), null, null, null, 1); $scenario = new ScenarioNode(null, array(), array(), null, 2); $filter = new TagFilter('@wip'); $this->assertFalse($filter->isScenarioMatch($feature, $scenario)); $filter = new TagFilter('~@done'); $this->assertTrue($filter->isScenarioMatch($feature, $scenario)); $scenario = new ScenarioNode(null, array('tag1', 'tag2', 'tag3'), array(), null, 2); $filter = new TagFilter('@tag5,@tag4,@tag6'); $this->assertFalse($filter->isScenarioMatch($feature, $scenario)); $scenario = new ScenarioNode(null, array('tag1', 'tag2', 'tag3', 'tag5'), array(), null, 2); $this->assertTrue($filter->isScenarioMatch($feature, $scenario)); $filter = new TagFilter('@wip&&@vip'); $scenario = new ScenarioNode(null, array('wip', 'not-done'), array(), null, 2); $this->assertFalse($filter->isScenarioMatch($feature, $scenario)); $scenario = new ScenarioNode(null, array('wip', 'not-done', 'vip'), array(), null, 2); $this->assertTrue($filter->isScenarioMatch($feature, $scenario)); $filter = new TagFilter('@wip,@vip&&@user'); $scenario = new ScenarioNode(null, array('wip'), array(), null, 2); $this->assertFalse($filter->isScenarioMatch($feature, $scenario)); $scenario = new ScenarioNode(null, array('vip'), array(), null, 2); $this->assertFalse($filter->isScenarioMatch($feature, $scenario)); $scenario = new ScenarioNode(null, array('wip', 'user'), array(), null, 2); $this->assertTrue($filter->isScenarioMatch($feature, $scenario)); $filter = new TagFilter('@feature-tag&&@user'); $scenario = new ScenarioNode(null, array('wip', 'user'), array(), null, 2); $this->assertTrue($filter->isScenarioMatch($feature, $scenario)); $filter = new TagFilter('@feature-tag&&@user'); $scenario = new ScenarioNode(null, array('wip'), array(), null, 2); $this->assertFalse($filter->isScenarioMatch($feature, $scenario)); }
/** * Checks if node match tag filter. * * @param FeatureNode $feature * @param ScenarioInterface $scenario * @param string $filterString * * @return Boolean */ protected function isMatchTagFilter(FeatureNode $feature, ScenarioInterface $scenario, $filterString) { $filter = new TagFilter($filterString); if ($filter->isFeatureMatch($feature)) { return true; } return $filter->isScenarioMatch($feature, $scenario); }
/** * {@inheritdoc} */ public function filterMatches(EventInterface $event) { if (null === ($filterString = $this->getFilter())) { return true; } $scenario = $event->getStep()->getParent(); if (false !== strpos($filterString, '@')) { $filter = new TagFilter($filterString); if ($filter->isScenarioMatch($scenario)) { return true; } } elseif (!empty($filterString)) { $filter = new NameFilter($filterString); if ($filter->isScenarioMatch($scenario)) { return true; } } return false; }
/** * {@inheritdoc} */ public function filterMatches(EventInterface $event) { if (null === ($filterString = $this->getFilter())) { return true; } $feature = $event->getFeature(); if (false !== strpos($filterString, '@')) { $filter = new TagFilter($filterString); if ($filter->isFeatureMatch($feature)) { return true; } } elseif (!empty($filterString)) { $filter = new NameFilter($filterString); if ($filter->isFeatureMatch($feature)) { return true; } } return false; }
/** * {@inheritdoc} */ public function filterMatches(EventInterface $event) { if (null === ($filterString = $this->getFilter())) { return true; } if ($event instanceof ScenarioEvent) { $scenario = $event->getScenario(); } else { $scenario = $event->getOutline(); } if (false !== strpos($filterString, '@')) { $filter = new TagFilter($filterString); if ($filter->isScenarioMatch($scenario)) { return true; } } elseif (!empty($filterString)) { $filter = new NameFilter($filterString); if ($filter->isScenarioMatch($scenario)) { return true; } } return false; }
/** * Runs step hooks with specified name. * * @param string $name hooks name * @param Behat\Behat\Event\StepEvent $event event to which hooks glued */ protected function fireStepHooks($name, StepEvent $event) { if (!count($this->hooks)) { $this->loadHooks(); } $scenario = $event->getStep()->getParent(); $hooks = isset($this->hooks[$name]) ? $this->hooks[$name] : array(); foreach ($hooks as $hook) { if (is_callable($hook)) { call_user_func($hook, $event); } elseif (!empty($hook[0]) && false !== strpos($hook[0], '@')) { $filter = new TagFilter($hook[0]); if ($filter->isScenarioMatch($scenario)) { call_user_func($hook[1], $event); } } elseif (!empty($hook[0])) { $filter = new NameFilter($hook[0]); if ($filter->isScenarioMatch($scenario)) { call_user_func($hook[1], $event); } } else { call_user_func($hook[1], $event); } } }
public function testIsScenarioMatchFilter() { $feature = new Node\FeatureNode(); $scenario = new Node\ScenarioNode(); $feature->addScenario($scenario); $filter = new TagFilter('@wip'); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->addTag('wip'); $this->assertTrue($filter->isScenarioMatch($scenario)); $filter = new TagFilter('~@done'); $this->assertTrue($filter->isScenarioMatch($scenario)); $feature->addTag('done'); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->setTags(array('tag1', 'tag2', 'tag3')); $filter = new TagFilter('@tag5,@tag4,@tag6'); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->addTag('tag5'); $this->assertTrue($filter->isScenarioMatch($scenario)); $filter = new TagFilter('@wip&&@vip'); $feature->setTags(array('wip', 'not-done')); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->addTag('vip'); $this->assertTrue($filter->isScenarioMatch($scenario)); $filter = new TagFilter('@wip,@vip&&@user'); $feature->setTags(array('wip')); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->setTags(array('vip')); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->setTags(array('wip', 'user')); $this->assertTrue($filter->isScenarioMatch($scenario)); $feature->setTags(array('vip', 'user')); $this->assertTrue($filter->isScenarioMatch($scenario)); $feature->setTags(array()); $filter = new TagFilter('@wip'); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->addTag('wip'); $this->assertTrue($filter->isScenarioMatch($scenario)); $filter = new TagFilter('~@done'); $this->assertTrue($filter->isScenarioMatch($scenario)); $feature->addTag('done'); $this->assertFalse($filter->isScenarioMatch($scenario)); $scenario->setTags(array('tag1', 'tag2', 'tag3')); $filter = new TagFilter('@tag5,@tag4,@tag6'); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->addTag('tag5'); $this->assertTrue($filter->isScenarioMatch($scenario)); $filter = new TagFilter('@wip&&@vip'); $scenario->setTags(array('wip', 'not-done')); $this->assertFalse($filter->isScenarioMatch($scenario)); $feature->addTag('vip'); $this->assertTrue($filter->isScenarioMatch($scenario)); $filter = new TagFilter('@wip,@vip&&@user'); $scenario->setTags(array('wip')); $this->assertFalse($filter->isScenarioMatch($scenario)); $scenario->setTags(array('vip')); $this->assertFalse($filter->isScenarioMatch($scenario)); $scenario->setTags(array('wip', 'user')); $this->assertTrue($filter->isScenarioMatch($scenario)); $scenario->setTags(array('vip', 'user')); $this->assertTrue($filter->isScenarioMatch($scenario)); $feature->setTags(array('wip')); $scenario->setTags(array('user')); $this->assertTrue($filter->isScenarioMatch($scenario)); $feature->setTags(array()); $this->assertFalse($filter->isScenarioMatch($scenario)); $filter = new TagFilter('@wip,@vip&&~@group'); $feature->setTags(array('vip')); $this->assertTrue($filter->isScenarioMatch($scenario)); $scenario->addTag('group'); $this->assertFalse($filter->isScenarioMatch($scenario)); }
/** * Checks if feature matches tag filter. * * @param FeatureNode $feature * @param string $filterString * * @return Boolean */ private function isMatchTagFilter(FeatureNode $feature, $filterString) { $filter = new TagFilter($filterString); return $filter->isFeatureMatch($feature); }