Пример #1
0
 /**
  * Test merge for code coverage library 3 version
  *
  * @requires function \PHP_CodeCoverage::merge
  */
 public function testSimpleMergeLegacy()
 {
     $firstFile = PARATEST_ROOT . '/src/ParaTest/Logging/LogInterpreter.php';
     $secondFile = PARATEST_ROOT . '/src/ParaTest/Logging/MetaProvider.php';
     $filter = new \PHP_CodeCoverage_Filter();
     $filter->addFilesToWhitelist([$firstFile, $secondFile]);
     $coverage1 = new \PHP_CodeCoverage(null, $filter);
     $coverage1->append(array($firstFile => array(35 => 1), $secondFile => array(34 => 1)), 'Test1');
     $coverage2 = new \PHP_CodeCoverage(null, $filter);
     $coverage2->append(array($firstFile => array(35 => 1, 36 => 1)), 'Test2');
     $merger = new CoverageMerger();
     $this->call($merger, 'addCoverage', $coverage1);
     $this->call($merger, 'addCoverage', $coverage2);
     /** @var \PHP_CodeCoverage $coverage */
     $coverage = $this->getObjectValue($merger, 'coverage');
     $this->assertInstanceOf('\\PHP_CodeCoverage', $coverage);
     $data = $coverage->getData();
     $this->assertCount(2, $data[$firstFile][35]);
     $this->assertEquals('Test1', $data[$firstFile][35][0]);
     $this->assertEquals('Test2', $data[$firstFile][35][1]);
     $this->assertCount(1, $data[$firstFile][36]);
     $this->assertEquals('Test2', $data[$firstFile][36][0]);
     $this->assertCount(1, $data[$secondFile][34]);
     $this->assertEquals('Test1', $data[$secondFile][34][0]);
 }
Пример #2
0
 /**
  * @covers PHP_CodeCoverage::performUnexecutedCoveredCodeCheck
  * @expectedException PHP_CodeCoverage_CoveredCodeNotExecutedException
  */
 public function testAppendThrowsExceptionIfUsedCodeWasNotExecuted()
 {
     $this->coverage->filter()->addDirectoryToWhitelist(TEST_FILES_PATH);
     $this->coverage->setCheckForUnexecutedCoveredCode(true);
     $data = [TEST_FILES_PATH . 'BankAccount.php' => [29 => -1, 31 => -1]];
     $linesToBeCovered = [TEST_FILES_PATH . 'BankAccount.php' => [29, 31]];
     $linesToBeUsed = [TEST_FILES_PATH . 'BankAccount.php' => [22, 24]];
     $this->coverage->append($data, 'File1.php', true, $linesToBeCovered, $linesToBeUsed);
 }
Пример #3
0
 public function testSimpleMerge()
 {
     $firstFile = PARATEST_ROOT . '/src/ParaTest/Logging/LogInterpreter.php';
     $secondFile = PARATEST_ROOT . '/src/ParaTest/Logging/MetaProvider.php';
     $coverage1 = new \PHP_CodeCoverage();
     $coverage1->append(array($firstFile => array(35 => 1), $secondFile => array(34 => 1)), 'Test1');
     $coverage2 = new \PHP_CodeCoverage();
     $coverage2->append(array($firstFile => array(35 => 1, 36 => 1)), 'Test2');
     $merger = new CoverageMerger();
     $merger->addCoverage($coverage1);
     $merger->addCoverage($coverage2);
     $coverage = $merger->getCoverage();
     $data = $coverage->getData();
     $this->assertEquals(2, count($data[$firstFile][35]));
     $this->assertEquals('Test1', $data[$firstFile][35][0]);
     $this->assertEquals('Test2', $data[$firstFile][35][1]);
     $this->assertEquals(1, count($data[$firstFile][36]));
     $this->assertEquals('Test2', $data[$firstFile][36][0]);
     $this->assertEquals(1, count($data[$secondFile][34]));
     $this->assertEquals('Test1', $data[$secondFile][34][0]);
 }
Пример #4
0
 /**
  * @covers            PHP_CodeCoverage::append
  * @expectedException PHP_CodeCoverage_Exception
  */
 public function testAppendThrowsExceptionForInvalidArgument()
 {
     $this->coverage->append(array(), null);
 }
Пример #5
0
 /**
  * @covers            PHP_CodeCoverage::append
  * @expectedException InvalidArgumentException
  */
 public function testAppendThrowsExceptionForInvalidArgument()
 {
     $coverage = new PHP_CodeCoverage();
     $coverage->append(array(), NULL);
 }
Пример #6
0
 /**
  * This method takes a coverage report and then rebuilds the raw coverage
  * data based on the report data and the change history of the covered files.
  *
  * @param PHP_ChangeCoverage_Report $report The coverage report data.
  *
  * @return PHP_CodeCoverage
  */
 protected function rebuildCoverageData(PHP_ChangeCoverage_Report $report)
 {
     $codeCoverage = new PHP_CodeCoverage();
     $factory = new PHP_ChangeCoverage_ChangeSet_Factory();
     vcsCache::initialize($this->tempDirectory);
     $this->writeLine();
     $this->writeLine('Collecting commits and meta data, this may take a moment.');
     $this->writeLine();
     $xdebug = new PHP_ChangeCoverage_Xdebug();
     if ($this->unmodifiedAsCovered) {
         $xdebug->setUnmodifiedAsCovered();
     }
     foreach ($report->getFiles() as $file) {
         $changeSet = $factory->create($file);
         $changeSet->setStartDate($this->modifiedSince);
         foreach ($xdebug->generateData($changeSet->calculate()) as $data) {
             $codeCoverage->append($data, md5(microtime()));
         }
     }
     return $codeCoverage;
 }
Пример #7
0
 /**
  * Collect code coverage after the suite has been run
  *
  * @AfterSuite
  */
 public static function tearDown(SuiteEvent $event)
 {
     $parameters = $event->getContextParameters();
     if ($parameters['enableCodeCoverage']) {
         $client = new Client($parameters['url']);
         $response = $client->get('/', array('X-Enable-Coverage' => 1, 'X-Test-Session-Id' => self::$testSessionId, 'X-Collect-Coverage' => 1))->send();
         $data = unserialize((string) $response->getBody());
         $filter = new PHP_CodeCoverage_Filter();
         foreach ($parameters['whitelist'] as $dir) {
             $filter->addDirectoryToWhitelist($dir);
         }
         $coverage = new PHP_CodeCoverage(null, $filter);
         $coverage->append($data, 'behat-suite');
         $report = new PHP_CodeCoverage_Report_HTML();
         $report->process($coverage, $parameters['coveragePath']);
     }
 }
 /**
  * @return \PHP_CodeCoverage
  */
 public function generateCoverageForFixture()
 {
     $coverage = new \PHP_CodeCoverage(null, null);
     $coverage->append(array(__DIR__ . '/../../fixture/NoNamespace/ExampleTest.php' => array(8 => 1, 9 => 1)), 'Nonamespace\\ExampleTest::testSomethingVerySpecial', true);
     return $coverage;
 }