You are here

RepeatedTest.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php

File

vendor/phpunit/phpunit/src/Extensions/RepeatedTest.php
View source
<?php

/*
 * This file is part of PHPUnit.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * A Decorator that runs a test repeatedly.
 *
 * @since Class available since Release 2.0.0
 */
class PHPUnit_Extensions_RepeatedTest extends PHPUnit_Extensions_TestDecorator {

  /**
   * @var bool
   */
  protected $processIsolation = false;

  /**
   * @var int
   */
  protected $timesRepeat = 1;

  /**
   * @param  PHPUnit_Framework_Test      $test
   * @param  int                         $timesRepeat
   * @param  bool                        $processIsolation
   * @throws PHPUnit_Framework_Exception
   */
  public function __construct(PHPUnit_Framework_Test $test, $timesRepeat = 1, $processIsolation = false) {
    parent::__construct($test);
    if (is_integer($timesRepeat) && $timesRepeat >= 0) {
      $this->timesRepeat = $timesRepeat;
    }
    else {
      throw PHPUnit_Util_InvalidArgumentHelper::factory(2, 'positive integer');
    }
    $this->processIsolation = $processIsolation;
  }

  /**
   * Counts the number of test cases that
   * will be run by this test.
   *
   * @return int
   */
  public function count() {
    return $this->timesRepeat * count($this->test);
  }

  /**
   * Runs the decorated test and collects the
   * result in a TestResult.
   *
   * @param  PHPUnit_Framework_TestResult $result
   * @return PHPUnit_Framework_TestResult
   * @throws PHPUnit_Framework_Exception
   */
  public function run(PHPUnit_Framework_TestResult $result = null) {
    if ($result === null) {
      $result = $this
        ->createResult();
    }

    //@codingStandardsIgnoreStart
    for ($i = 0; $i < $this->timesRepeat && !$result
      ->shouldStop(); $i++) {

      //@codingStandardsIgnoreEnd
      if ($this->test instanceof PHPUnit_Framework_TestSuite) {
        $this->test
          ->setRunTestInSeparateProcess($this->processIsolation);
      }
      $this->test
        ->run($result);
    }
    return $result;
  }

}

Classes

Namesort descending Description
PHPUnit_Extensions_RepeatedTest A Decorator that runs a test repeatedly.