Example #1
0
 public function preload()
 {
     $this->scenario->setFeature($this->getSpecFromMethod());
     $code = $this->getSourceCode();
     $this->parser->parseFeature($code);
     $this->parser->attachMetadata(Annotation::forMethod($this->testClassInstance, $this->testMethod)->raw());
     $this->getMetadata()->getService('di')->injectDependencies($this->testClassInstance);
 }
Example #2
0
 public function preload()
 {
     $this->scenario->setFeature($this->getSpecFromMethod());
     $code = $this->getSourceCode();
     $this->parser->parseFeature($code);
     $this->parser->attachMetadata(Annotation::forMethod($this->testClassInstance, $this->testMethod)->raw());
     $this->getMetadata()->getService('di')->injectDependencies($this->testClassInstance);
     // add example params to feature
     if ($this->getMetadata()->getCurrent('example')) {
         $params = implode(', ', array_values($this->getMetadata()->getCurrent('example')));
         $this->getScenario()->setFeature($this->getScenario()->getFeature() . ' | ' . $params);
     }
 }
Example #3
0
 public function preload()
 {
     $this->scenario->setFeature($this->getSpecFromMethod());
     $code = $this->getSourceCode();
     $this->parser->parseFeature($code);
     $this->parser->attachMetadata(Annotation::forMethod($this->testClassInstance, $this->testMethod)->raw());
     $this->getMetadata()->getService('di')->injectDependencies($this->testClassInstance);
     // add example params to feature
     if ($this->getMetadata()->getCurrent('example')) {
         $step = new Comment('', $this->getMetadata()->getCurrent('example'));
         $this->getScenario()->setFeature($this->getScenario()->getFeature() . ' | ' . $step->getArgumentsAsString(100));
     }
 }
Example #4
0
 function loadTests($file)
 {
     Parser::validate($file);
     $name = basename($file, 'Cept.php');
     $cept = new CeptFormat($name, $file);
     $this->tests[] = $cept;
 }
Example #5
0
 public function loadTests($path)
 {
     Parser::load($path);
     $testClasses = Parser::getClassesFromFile($path);
     foreach ($testClasses as $testClass) {
         $reflected = new \ReflectionClass($testClass);
         if (!$reflected->isInstantiable()) {
             continue;
         }
         foreach ($reflected->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
             $test = $this->createTestFromPhpUnitMethod($reflected, $method);
             if (!$test) {
                 continue;
             }
             $this->tests[] = $test;
         }
     }
 }
Example #6
0
 public function loadTests($file)
 {
     Parser::load($file);
     $testClasses = Parser::getClassesFromFile($file);
     foreach ($testClasses as $testClass) {
         if (substr($testClass, -strlen('Cest')) !== 'Cest') {
             continue;
         }
         if (!(new \ReflectionClass($testClass))->isInstantiable()) {
             continue;
         }
         $unit = new $testClass();
         $methods = get_class_methods($testClass);
         foreach ($methods as $method) {
             $test = $this->createTestForMethod($unit, $method, $file);
             if ($test) {
                 $this->tests[] = $test;
             }
         }
     }
 }
Example #7
0
 public function loadTests($file)
 {
     Parser::load($file);
     $testClasses = Parser::getClassesFromFile($file);
     foreach ($testClasses as $testClass) {
         if (substr($testClass, -strlen('Cest')) !== 'Cest') {
             continue;
         }
         if (!(new \ReflectionClass($testClass))->isInstantiable()) {
             continue;
         }
         $unit = new $testClass();
         $methods = get_class_methods($testClass);
         foreach ($methods as $method) {
             if (strpos($method, '_') === 0) {
                 continue;
             }
             $rawExamples = Annotation::forMethod($unit, $method)->fetchAll('example');
             if (count($rawExamples)) {
                 $examples = array_map(function ($v) {
                     return Annotation::arrayValue($v);
                 }, $rawExamples);
                 $dataProvider = new \PHPUnit_Framework_TestSuite_DataProvider();
                 foreach ($examples as $k => $example) {
                     if ($example === null) {
                         throw new TestParseException($file, "Example for {$testClass}->{$method} contains invalid data:\n" . $rawExamples[$k] . "\n" . "Make sure this is a valid JSON (Hint: \"-char for strings) or a single-line annotation in Doctrine-style");
                     }
                     $test = new CestFormat($unit, $method, $file);
                     $test->getMetadata()->setCurrent(['example' => $example]);
                     $groups = Annotation::forMethod($unit, $method)->fetchAll('group');
                     $dataProvider->addTest($test, $groups);
                 }
                 $this->tests[] = $dataProvider;
                 continue;
             }
             $this->tests[] = new CestFormat($unit, $method, $file);
         }
     }
 }
Example #8
0
 public function testParseFileWithClass()
 {
     if (version_compare(PHP_VERSION, '5.5.0', '<')) {
         $this->markTestSkipped('only for php 5.5');
     }
     $classes = Parser::getClassesFromFile(codecept_data_dir('php55Test'));
     $this->assertEquals(['php55Test'], $classes);
 }
Example #9
0
 public function addCest($file)
 {
     $testClasses = Parser::getClassesFromFile($file);
     foreach ($testClasses as $testClass) {
         $reflected = new \ReflectionClass($testClass);
         if ($reflected->isAbstract()) {
             continue;
         }
         $unit = new $testClass();
         $methods = get_class_methods($testClass);
         foreach ($methods as $method) {
             $test = $this->createTestFromCestMethod($unit, $method, $file);
             if (!$test) {
                 continue;
             }
             $this->tests[] = $test;
         }
     }
 }
Example #10
0
 /**
  * @group core
  */
 public function testClassesFromFile()
 {
     $classes = Parser::getClassesFromFile(codecept_data_dir('DummyClass.php'));
     $this->assertContains('DummyClass', $classes);
     $classes = Parser::getClassesFromFile(codecept_data_dir('SimpleWithDependencyInjectionCest.php'));
     $this->assertContains('simpleDI\\LoadedTestWithDependencyInjectionCest', $classes);
     $this->assertContains('simpleDI\\AnotherCest', $classes);
 }
Example #11
0
 public function testParseFileWhichUnsetsFileVariable()
 {
     $classes = Parser::getClassesFromFile(codecept_data_dir('unsetFile.php'));
     $this->assertEquals([], $classes);
 }