Ejemplo n.º 1
0
 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));
 }
Ejemplo n.º 2
0
 /**
  * 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);
 }
Ejemplo n.º 3
0
 /**
  * {@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;
 }
Ejemplo n.º 4
0
 /**
  * {@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;
 }
Ejemplo n.º 5
0
 /**
  * {@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;
 }
Ejemplo n.º 6
0
 /**
  * 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);
         }
     }
 }
Ejemplo n.º 7
0
 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));
 }
Ejemplo n.º 8
0
 /**
  * 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);
 }