/vendor/phpunit/phpunit/src/Framework/TestCase.php
PHP | 2004 lines | 1010 code | 240 blank | 754 comment | 120 complexity | 2f73c9f0f686ec6d9b5ef8abf3d8581c MD5 | raw file
Possible License(s): BSD-3-Clause
Large files files are truncated, but you can click here to view the full file
- <?php
- /**
- * PHPUnit
- *
- * Copyright (c) 2001-2014, Sebastian Bergmann <sebastian@phpunit.de>.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * * Neither the name of Sebastian Bergmann nor the names of his
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package PHPUnit
- * @subpackage Framework
- * @author Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright 2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
- * @link http://www.phpunit.de/
- * @since File available since Release 2.0.0
- */
- use SebastianBergmann\GlobalState\Snapshot;
- use SebastianBergmann\GlobalState\Restorer;
- use SebastianBergmann\GlobalState\Blacklist;
- use SebastianBergmann\Exporter\Context;
- use SebastianBergmann\Exporter\Exporter;
- /**
- * A TestCase defines the fixture to run multiple tests.
- *
- * To define a TestCase
- *
- * 1) Implement a subclass of PHPUnit_Framework_TestCase.
- * 2) Define instance variables that store the state of the fixture.
- * 3) Initialize the fixture state by overriding setUp().
- * 4) Clean-up after a test by overriding tearDown().
- *
- * Each test runs in its own fixture so there can be no side effects
- * among test runs.
- *
- * Here is an example:
- *
- * <code>
- * <?php
- * class MathTest extends PHPUnit_Framework_TestCase
- * {
- * public $value1;
- * public $value2;
- *
- * protected function setUp()
- * {
- * $this->value1 = 2;
- * $this->value2 = 3;
- * }
- * }
- * ?>
- * </code>
- *
- * For each test implement a method which interacts with the fixture.
- * Verify the expected results with assertions specified by calling
- * assert with a boolean.
- *
- * <code>
- * <?php
- * public function testPass()
- * {
- * $this->assertTrue($this->value1 + $this->value2 == 5);
- * }
- * ?>
- * </code>
- *
- * @package PHPUnit
- * @subpackage Framework
- * @author Sebastian Bergmann <sebastian@phpunit.de>
- * @copyright 2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
- * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
- * @link http://www.phpunit.de/
- * @since Class available since Release 2.0.0
- */
- abstract class PHPUnit_Framework_TestCase extends PHPUnit_Framework_Assert implements PHPUnit_Framework_Test, PHPUnit_Framework_SelfDescribing
- {
- /**
- * Enable or disable the backup and restoration of the $GLOBALS array.
- * Overwrite this attribute in a child class of TestCase.
- * Setting this attribute in setUp() has no effect!
- *
- * @var boolean
- */
- protected $backupGlobals = null;
- /**
- * @var array
- */
- protected $backupGlobalsBlacklist = array();
- /**
- * Enable or disable the backup and restoration of static attributes.
- * Overwrite this attribute in a child class of TestCase.
- * Setting this attribute in setUp() has no effect!
- *
- * @var boolean
- */
- protected $backupStaticAttributes = null;
- /**
- * @var array
- */
- protected $backupStaticAttributesBlacklist = array();
- /**
- * Whether or not this test is to be run in a separate PHP process.
- *
- * @var boolean
- */
- protected $runTestInSeparateProcess = null;
- /**
- * Whether or not this test should preserve the global state when
- * running in a separate PHP process.
- *
- * @var boolean
- */
- protected $preserveGlobalState = true;
- /**
- * Whether or not this test is running in a separate PHP process.
- *
- * @var boolean
- */
- private $inIsolation = false;
- /**
- * @var array
- */
- private $data = array();
- /**
- * @var string
- */
- private $dataName = '';
- /**
- * @var boolean
- */
- private $useErrorHandler = null;
- /**
- * The name of the expected Exception.
- *
- * @var mixed
- */
- private $expectedException = null;
- /**
- * The message of the expected Exception.
- *
- * @var string
- */
- private $expectedExceptionMessage = '';
- /**
- * The regex pattern to validate the expected Exception message.
- *
- * @var string
- */
- private $expectedExceptionMessageRegExp = '';
- /**
- * The code of the expected Exception.
- *
- * @var integer
- */
- private $expectedExceptionCode;
- /**
- * The name of the test case.
- *
- * @var string
- */
- private $name = null;
- /**
- * @var array
- */
- private $dependencies = array();
- /**
- * @var array
- */
- private $dependencyInput = array();
- /**
- * @var array
- */
- private $iniSettings = array();
- /**
- * @var array
- */
- private $locale = array();
- /**
- * @var array
- */
- private $mockObjects = array();
- /**
- * @var array
- */
- private $mockObjectGenerator = null;
- /**
- * @var integer
- */
- private $status;
- /**
- * @var string
- */
- private $statusMessage = '';
- /**
- * @var integer
- */
- private $numAssertions = 0;
- /**
- * @var PHPUnit_Framework_TestResult
- */
- private $result;
- /**
- * @var mixed
- */
- private $testResult;
- /**
- * @var string
- */
- private $output = '';
- /**
- * @var string
- */
- private $outputExpectedRegex = null;
- /**
- * @var string
- */
- private $outputExpectedString = null;
- /**
- * @var mixed
- */
- private $outputCallback = false;
- /**
- * @var boolean
- */
- private $outputBufferingActive = false;
- /**
- * @var integer
- */
- private $outputBufferingLevel;
- /**
- * @var SebastianBergmann\GlobalState\Snapshot
- */
- private $snapshot;
- /**
- * Constructs a test case with the given name.
- *
- * @param string $name
- * @param array $data
- * @param string $dataName
- */
- public function __construct($name = null, array $data = array(), $dataName = '')
- {
- if ($name !== null) {
- $this->setName($name);
- }
- $this->data = $data;
- $this->dataName = $dataName;
- }
- /**
- * Returns a string representation of the test case.
- *
- * @return string
- */
- public function toString()
- {
- $class = new ReflectionClass($this);
- $buffer = sprintf(
- '%s::%s',
- $class->name,
- $this->getName(false)
- );
- return $buffer . $this->getDataSetAsString();
- }
- /**
- * Counts the number of test cases executed by run(TestResult result).
- *
- * @return integer
- */
- public function count()
- {
- return 1;
- }
- /**
- * Returns the annotations for this test.
- *
- * @return array
- * @since Method available since Release 3.4.0
- */
- public function getAnnotations()
- {
- return PHPUnit_Util_Test::parseTestMethodAnnotations(
- get_class($this),
- $this->name
- );
- }
- /**
- * Gets the name of a TestCase.
- *
- * @param boolean $withDataSet
- * @return string
- */
- public function getName($withDataSet = true)
- {
- if ($withDataSet) {
- return $this->name . $this->getDataSetAsString(false);
- } else {
- return $this->name;
- }
- }
- /**
- * Returns the size of the test.
- *
- * @return integer
- * @since Method available since Release 3.6.0
- */
- public function getSize()
- {
- return PHPUnit_Util_Test::getSize(
- get_class($this),
- $this->getName(false)
- );
- }
- /**
- * @return string
- * @since Method available since Release 3.6.0
- */
- public function getActualOutput()
- {
- if (!$this->outputBufferingActive) {
- return $this->output;
- } else {
- return ob_get_contents();
- }
- }
- /**
- * @return boolean
- * @since Method available since Release 3.6.0
- */
- public function hasOutput()
- {
- if (strlen($this->output) === 0) {
- return false;
- }
- if ($this->hasExpectationOnOutput()) {
- return false;
- }
- return true;
- }
- /**
- * @param string $expectedRegex
- * @since Method available since Release 3.6.0
- * @throws PHPUnit_Framework_Exception
- */
- public function expectOutputRegex($expectedRegex)
- {
- if ($this->outputExpectedString !== null) {
- throw new PHPUnit_Framework_Exception;
- }
- if (is_string($expectedRegex) || is_null($expectedRegex)) {
- $this->outputExpectedRegex = $expectedRegex;
- }
- }
- /**
- * @param string $expectedString
- * @since Method available since Release 3.6.0
- */
- public function expectOutputString($expectedString)
- {
- if ($this->outputExpectedRegex !== null) {
- throw new PHPUnit_Framework_Exception;
- }
- if (is_string($expectedString) || is_null($expectedString)) {
- $this->outputExpectedString = $expectedString;
- }
- }
- /**
- * @return bool
- * @since Method available since Release 3.6.5
- * @deprecated
- */
- public function hasPerformedExpectationsOnOutput()
- {
- return $this->hasExpectationOnOutput();
- }
- /**
- * @return bool
- * @since Method available since Release 4.3.3
- */
- public function hasExpectationOnOutput()
- {
- return is_string($this->outputExpectedString) || is_string($this->outputExpectedRegex);
- }
- /**
- * @return string
- * @since Method available since Release 3.2.0
- */
- public function getExpectedException()
- {
- return $this->expectedException;
- }
- /**
- * @param mixed $exceptionName
- * @param string $exceptionMessage
- * @param integer $exceptionCode
- * @since Method available since Release 3.2.0
- */
- public function setExpectedException($exceptionName, $exceptionMessage = '', $exceptionCode = null)
- {
- $this->expectedException = $exceptionName;
- $this->expectedExceptionMessage = $exceptionMessage;
- $this->expectedExceptionCode = $exceptionCode;
- }
- /**
- * @param mixed $exceptionName
- * @param string $exceptionMessageRegExp
- * @param integer $exceptionCode
- * @since Method available since Release 4.3.0
- */
- public function setExpectedExceptionRegExp($exceptionName, $exceptionMessageRegExp = '', $exceptionCode = null)
- {
- $this->expectedException = $exceptionName;
- $this->expectedExceptionMessageRegExp = $exceptionMessageRegExp;
- $this->expectedExceptionCode = $exceptionCode;
- }
- /**
- * @since Method available since Release 3.4.0
- */
- protected function setExpectedExceptionFromAnnotation()
- {
- try {
- $expectedException = PHPUnit_Util_Test::getExpectedException(
- get_class($this),
- $this->name
- );
- if ($expectedException !== false) {
- $this->setExpectedException(
- $expectedException['class'],
- $expectedException['message'],
- $expectedException['code']
- );
- if (!empty($expectedException['message_regex'])) {
- $this->setExpectedExceptionRegExp(
- $expectedException['class'],
- $expectedException['message_regex'],
- $expectedException['code']
- );
- }
- }
- } catch (ReflectionException $e) {
- }
- }
- /**
- * @param boolean $useErrorHandler
- * @since Method available since Release 3.4.0
- */
- public function setUseErrorHandler($useErrorHandler)
- {
- $this->useErrorHandler = $useErrorHandler;
- }
- /**
- * @since Method available since Release 3.4.0
- */
- protected function setUseErrorHandlerFromAnnotation()
- {
- try {
- $useErrorHandler = PHPUnit_Util_Test::getErrorHandlerSettings(
- get_class($this),
- $this->name
- );
- if ($useErrorHandler !== null) {
- $this->setUseErrorHandler($useErrorHandler);
- }
- } catch (ReflectionException $e) {
- }
- }
- /**
- * @since Method available since Release 3.6.0
- */
- protected function checkRequirements()
- {
- if (!$this->name || !method_exists($this, $this->name)) {
- return;
- }
- $missingRequirements = PHPUnit_Util_Test::getMissingRequirements(
- get_class($this),
- $this->name
- );
- if ($missingRequirements) {
- $this->markTestSkipped(implode(PHP_EOL, $missingRequirements));
- }
- }
- /**
- * Returns the status of this test.
- *
- * @return integer
- * @since Method available since Release 3.1.0
- */
- public function getStatus()
- {
- return $this->status;
- }
- /**
- * Returns the status message of this test.
- *
- * @return string
- * @since Method available since Release 3.3.0
- */
- public function getStatusMessage()
- {
- return $this->statusMessage;
- }
- /**
- * Returns whether or not this test has failed.
- *
- * @return boolean
- * @since Method available since Release 3.0.0
- */
- public function hasFailed()
- {
- $status = $this->getStatus();
- return $status == PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE ||
- $status == PHPUnit_Runner_BaseTestRunner::STATUS_ERROR;
- }
- /**
- * Runs the test case and collects the results in a TestResult object.
- * If no TestResult object is passed a new one will be created.
- *
- * @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();
- }
- if (!$this instanceof PHPUnit_Framework_Warning) {
- $this->setTestResultObject($result);
- $this->setUseErrorHandlerFromAnnotation();
- }
- if ($this->useErrorHandler !== null) {
- $oldErrorHandlerSetting = $result->getConvertErrorsToExceptions();
- $result->convertErrorsToExceptions($this->useErrorHandler);
- }
- if (!$this instanceof PHPUnit_Framework_Warning && !$this->handleDependencies()) {
- return;
- }
- if ($this->runTestInSeparateProcess === true &&
- $this->inIsolation !== true &&
- !$this instanceof PHPUnit_Extensions_SeleniumTestCase &&
- !$this instanceof PHPUnit_Extensions_PhptTestCase) {
- $class = new ReflectionClass($this);
- $template = new Text_Template(
- __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl'
- );
- if ($this->preserveGlobalState) {
- $constants = PHPUnit_Util_GlobalState::getConstantsAsString();
- $globals = PHPUnit_Util_GlobalState::getGlobalsAsString();
- $includedFiles = PHPUnit_Util_GlobalState::getIncludedFilesAsString();
- $iniSettings = PHPUnit_Util_GlobalState::getIniSettingsAsString();
- } else {
- $constants = '';
- if (!empty($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
- $globals = '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = ' . var_export($GLOBALS['__PHPUNIT_BOOTSTRAP'], true) . ";\n";
- } else {
- $globals = '';
- }
- $includedFiles = '';
- $iniSettings = '';
- }
- $coverage = $result->getCollectCodeCoverageInformation() ? 'true' : 'false';
- $isStrictAboutTestsThatDoNotTestAnything = $result->isStrictAboutTestsThatDoNotTestAnything() ? 'true' : 'false';
- $isStrictAboutOutputDuringTests = $result->isStrictAboutOutputDuringTests() ? 'true' : 'false';
- $isStrictAboutTestSize = $result->isStrictAboutTestSize() ? 'true' : 'false';
- $isStrictAboutTodoAnnotatedTests = $result->isStrictAboutTodoAnnotatedTests() ? 'true' : 'false';
- if (defined('PHPUNIT_COMPOSER_INSTALL')) {
- $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true);
- } else {
- $composerAutoload = '\'\'';
- }
- if (defined('__PHPUNIT_PHAR__')) {
- $phar = var_export(__PHPUNIT_PHAR__, true);
- } else {
- $phar = '\'\'';
- }
- $data = var_export(serialize($this->data), true);
- $dataName = var_export($this->dataName, true);
- $dependencyInput = var_export(serialize($this->dependencyInput), true);
- $includePath = var_export(get_include_path(), true);
- // must do these fixes because TestCaseMethod.tpl has unserialize('{data}') in it, and we can't break BC
- // the lines above used to use addcslashes() rather than var_export(), which breaks null byte escape sequences
- $data = "'." . $data . ".'";
- $dataName = "'.(" . $dataName . ").'";
- $dependencyInput = "'." . $dependencyInput . ".'";
- $includePath = "'." . $includePath . ".'";
- $template->setVar(
- array(
- 'composerAutoload' => $composerAutoload,
- 'phar' => $phar,
- 'filename' => $class->getFileName(),
- 'className' => $class->getName(),
- 'methodName' => $this->name,
- 'collectCodeCoverageInformation' => $coverage,
- 'data' => $data,
- 'dataName' => $dataName,
- 'dependencyInput' => $dependencyInput,
- 'constants' => $constants,
- 'globals' => $globals,
- 'include_path' => $includePath,
- 'included_files' => $includedFiles,
- 'iniSettings' => $iniSettings,
- 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything,
- 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests,
- 'isStrictAboutTestSize' => $isStrictAboutTestSize,
- 'isStrictAboutTodoAnnotatedTests' => $isStrictAboutTodoAnnotatedTests
- )
- );
- $this->prepareTemplate($template);
- $php = PHPUnit_Util_PHP::factory();
- $php->runTestJob($template->render(), $this, $result);
- } else {
- $result->run($this);
- }
- if ($this->useErrorHandler !== null) {
- $result->convertErrorsToExceptions($oldErrorHandlerSetting);
- }
- $this->result = null;
- return $result;
- }
- /**
- * Runs the bare test sequence.
- */
- public function runBare()
- {
- $this->numAssertions = 0;
- $this->snapshotGlobalState();
- $this->startOutputBuffering();
- clearstatcache();
- $currentWorkingDirectory = getcwd();
- $hookMethods = PHPUnit_Util_Test::getHookMethods(get_class($this));
- try {
- $hasMetRequirements = false;
- $this->checkRequirements();
- $hasMetRequirements = true;
- if ($this->inIsolation) {
- foreach ($hookMethods['beforeClass'] as $method) {
- $this->$method();
- }
- }
- $this->setExpectedExceptionFromAnnotation();
- foreach ($hookMethods['before'] as $method) {
- $this->$method();
- }
- $this->assertPreConditions();
- $this->testResult = $this->runTest();
- $this->verifyMockObjects();
- $this->assertPostConditions();
- $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_PASSED;
- } catch (PHPUnit_Framework_IncompleteTest $e) {
- $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE;
- $this->statusMessage = $e->getMessage();
- } catch (PHPUnit_Framework_SkippedTest $e) {
- $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED;
- $this->statusMessage = $e->getMessage();
- } catch (PHPUnit_Framework_AssertionFailedError $e) {
- $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE;
- $this->statusMessage = $e->getMessage();
- } catch (Exception $e) {
- $this->status = PHPUnit_Runner_BaseTestRunner::STATUS_ERROR;
- $this->statusMessage = $e->getMessage();
- }
- // Clean up the mock objects.
- $this->mockObjects = array();
- // Tear down the fixture. An exception raised in tearDown() will be
- // caught and passed on when no exception was raised before.
- try {
- if ($hasMetRequirements) {
- foreach ($hookMethods['after'] as $method) {
- $this->$method();
- }
- if ($this->inIsolation) {
- foreach ($hookMethods['afterClass'] as $method) {
- $this->$method();
- }
- }
- }
- } catch (Exception $_e) {
- if (!isset($e)) {
- $e = $_e;
- }
- }
- try {
- $this->stopOutputBuffering();
- } catch (PHPUnit_Framework_RiskyTestError $_e) {
- if (!isset($e)) {
- $e = $_e;
- }
- }
- clearstatcache();
- if ($currentWorkingDirectory != getcwd()) {
- chdir($currentWorkingDirectory);
- }
- $this->restoreGlobalState();
- // Clean up INI settings.
- foreach ($this->iniSettings as $varName => $oldValue) {
- ini_set($varName, $oldValue);
- }
- $this->iniSettings = array();
- // Clean up locale settings.
- foreach ($this->locale as $category => $locale) {
- setlocale($category, $locale);
- }
- // Perform assertion on output.
- if (!isset($e)) {
- try {
- if ($this->outputExpectedRegex !== null) {
- $this->assertRegExp($this->outputExpectedRegex, $this->output);
- } elseif ($this->outputExpectedString !== null) {
- $this->assertEquals($this->outputExpectedString, $this->output);
- }
- } catch (Exception $_e) {
- $e = $_e;
- }
- }
- // Workaround for missing "finally".
- if (isset($e)) {
- $this->onNotSuccessfulTest($e);
- }
- }
- /**
- * Override to run the test and assert its state.
- *
- * @return mixed
- * @throws Exception|PHPUnit_Framework_Exception
- * @throws PHPUnit_Framework_Exception
- */
- protected function runTest()
- {
- if ($this->name === null) {
- throw new PHPUnit_Framework_Exception(
- 'PHPUnit_Framework_TestCase::$name must not be null.'
- );
- }
- try {
- $class = new ReflectionClass($this);
- $method = $class->getMethod($this->name);
- } catch (ReflectionException $e) {
- $this->fail($e->getMessage());
- }
- try {
- $testResult = $method->invokeArgs(
- $this,
- array_merge($this->data, $this->dependencyInput)
- );
- } catch (Exception $e) {
- $checkException = false;
- if (is_string($this->expectedException)) {
- $checkException = true;
- if ($e instanceof PHPUnit_Framework_Exception) {
- $checkException = false;
- }
- $reflector = new ReflectionClass($this->expectedException);
- if ($this->expectedException == 'PHPUnit_Framework_Exception' ||
- $reflector->isSubclassOf('PHPUnit_Framework_Exception')) {
- $checkException = true;
- }
- }
- if ($checkException) {
- $this->assertThat(
- $e,
- new PHPUnit_Framework_Constraint_Exception(
- $this->expectedException
- )
- );
- if (is_string($this->expectedExceptionMessage) &&
- !empty($this->expectedExceptionMessage)) {
- $this->assertThat(
- $e,
- new PHPUnit_Framework_Constraint_ExceptionMessage(
- $this->expectedExceptionMessage
- )
- );
- }
- if (is_string($this->expectedExceptionMessageRegExp) &&
- !empty($this->expectedExceptionMessageRegExp)) {
- $this->assertThat(
- $e,
- new PHPUnit_Framework_Constraint_ExceptionMessageRegExp(
- $this->expectedExceptionMessageRegExp
- )
- );
- }
- if ($this->expectedExceptionCode !== null) {
- $this->assertThat(
- $e,
- new PHPUnit_Framework_Constraint_ExceptionCode(
- $this->expectedExceptionCode
- )
- );
- }
- return;
- } else {
- throw $e;
- }
- }
- if ($this->expectedException !== null) {
- $this->assertThat(
- null,
- new PHPUnit_Framework_Constraint_Exception(
- $this->expectedException
- )
- );
- }
- return $testResult;
- }
- /**
- * Verifies the mock object expectations.
- *
- * @since Method available since Release 3.5.0
- */
- protected function verifyMockObjects()
- {
- foreach ($this->mockObjects as $mockObject) {
- if ($mockObject->__phpunit_hasMatchers()) {
- $this->numAssertions++;
- }
- $mockObject->__phpunit_verify();
- }
- }
- /**
- * Sets the name of a TestCase.
- *
- * @param string
- */
- public function setName($name)
- {
- $this->name = $name;
- }
- /**
- * Sets the dependencies of a TestCase.
- *
- * @param array $dependencies
- * @since Method available since Release 3.4.0
- */
- public function setDependencies(array $dependencies)
- {
- $this->dependencies = $dependencies;
- }
- /**
- * Returns true if the tests has dependencies
- *
- * @return boolean
- * @since Method available since Release 4.0.0
- */
- public function hasDependencies()
- {
- return count($this->dependencies) > 0;
- }
- /**
- * Sets
- *
- * @param array $dependencyInput
- * @since Method available since Release 3.4.0
- */
- public function setDependencyInput(array $dependencyInput)
- {
- $this->dependencyInput = $dependencyInput;
- }
- /**
- * Calling this method in setUp() has no effect!
- *
- * @param boolean $backupGlobals
- * @since Method available since Release 3.3.0
- */
- public function setBackupGlobals($backupGlobals)
- {
- if (is_null($this->backupGlobals) && is_bool($backupGlobals)) {
- $this->backupGlobals = $backupGlobals;
- }
- }
- /**
- * Calling this method in setUp() has no effect!
- *
- * @param boolean $backupStaticAttributes
- * @since Method available since Release 3.4.0
- */
- public function setBackupStaticAttributes($backupStaticAttributes)
- {
- if (is_null($this->backupStaticAttributes) &&
- is_bool($backupStaticAttributes)) {
- $this->backupStaticAttributes = $backupStaticAttributes;
- }
- }
- /**
- * @param boolean $runTestInSeparateProcess
- * @throws PHPUnit_Framework_Exception
- * @since Method available since Release 3.4.0
- */
- public function setRunTestInSeparateProcess($runTestInSeparateProcess)
- {
- if (is_bool($runTestInSeparateProcess)) {
- if ($this->runTestInSeparateProcess === null) {
- $this->runTestInSeparateProcess = $runTestInSeparateProcess;
- }
- } else {
- throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
- }
- }
- /**
- * @param boolean $preserveGlobalState
- * @throws PHPUnit_Framework_Exception
- * @since Method available since Release 3.4.0
- */
- public function setPreserveGlobalState($preserveGlobalState)
- {
- if (is_bool($preserveGlobalState)) {
- $this->preserveGlobalState = $preserveGlobalState;
- } else {
- throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
- }
- }
- /**
- * @param boolean $inIsolation
- * @throws PHPUnit_Framework_Exception
- * @since Method available since Release 3.4.0
- */
- public function setInIsolation($inIsolation)
- {
- if (is_bool($inIsolation)) {
- $this->inIsolation = $inIsolation;
- } else {
- throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'boolean');
- }
- }
- /**
- * @return boolean
- * @since Method available since Release 4.3.0
- */
- public function isInIsolation()
- {
- return $this->inIsolation;
- }
- /**
- * @return mixed
- * @since Method available since Release 3.4.0
- */
- public function getResult()
- {
- return $this->testResult;
- }
- /**
- * @param mixed $result
- * @since Method available since Release 3.4.0
- */
- public function setResult($result)
- {
- $this->testResult = $result;
- }
- /**
- * @param callable $callback
- * @throws PHPUnit_Framework_Exception
- * @since Method available since Release 3.6.0
- */
- public function setOutputCallback($callback)
- {
- if (!is_callable($callback)) {
- throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'callback');
- }
- $this->outputCallback = $callback;
- }
- /**
- * @return PHPUnit_Framework_TestResult
- * @since Method available since Release 3.5.7
- */
- public function getTestResultObject()
- {
- return $this->result;
- }
- /**
- * @param PHPUnit_Framework_TestResult $result
- * @since Method available since Release 3.6.0
- */
- public function setTestResultObject(PHPUnit_Framework_TestResult $result)
- {
- $this->result = $result;
- }
- /**
- * This method is a wrapper for the ini_set() function that automatically
- * resets the modified php.ini setting to its original value after the
- * test is run.
- *
- * @param string $varName
- * @param string $newValue
- * @throws PHPUnit_Framework_Exception
- * @since Method available since Release 3.0.0
- */
- protected function iniSet($varName, $newValue)
- {
- if (!is_string($varName)) {
- throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
- }
- $currentValue = ini_set($varName, $newValue);
- if ($currentValue !== false) {
- $this->iniSettings[$varName] = $currentValue;
- } else {
- throw new PHPUnit_Framework_Exception(
- sprintf(
- 'INI setting "%s" could not be set to "%s".',
- $varName,
- $newValue
- )
- );
- }
- }
- /**
- * This method is a wrapper for the setlocale() function that automatically
- * resets the locale to its original value after the test is run.
- *
- * @param integer $category
- * @param string $locale
- * @throws PHPUnit_Framework_Exception
- * @since Method available since Release 3.1.0
- */
- protected function setLocale()
- {
- $args = func_get_args();
- if (count($args) < 2) {
- throw new PHPUnit_Framework_Exception;
- }
- $category = $args[0];
- $locale = $args[1];
- $categories = array(
- LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME
- );
- if (defined('LC_MESSAGES')) {
- $categories[] = LC_MESSAGES;
- }
- if (!in_array($category, $categories)) {
- throw new PHPUnit_Framework_Exception;
- }
- if (!is_array($locale) && !is_string($locale)) {
- throw new PHPUnit_Framework_Exception;
- }
- $this->locale[$category] = setlocale($category, null);
- $result = call_user_func_array( 'setlocale', $args );
- if ($result === false) {
- throw new PHPUnit_Framework_Exception(
- 'The locale functionality is not implemented on your platform, ' .
- 'the specified locale does not exist or the category name is ' .
- 'invalid.'
- );
- }
- }
- /**
- * Returns a mock object for the specified class.
- *
- * @param string $originalClassName Name of the class to mock.
- * @param array|null $methods When provided, only methods whose names are in the array
- * are replaced with a configurable test double. The behavior
- * of the other methods is not changed.
- * Providing null means that no methods will be replaced.
- * @param array $arguments Parameters to pass to the original class' constructor.
- * @param string $mockClassName Class name for the generated test double class.
- * @param boolean $callOriginalConstructor Can be used to disable the call to the original class' constructor.
- * @param boolean $callOriginalClone Can be used to disable the call to the original class' clone constructor.
- * @param boolean $callAutoload Can be used to disable __autoload() during the generation of the test double class.
- * @param boolean $cloneArguments
- * @param boolean $callOriginalMethods
- * @return PHPUnit_Framework_MockObject_MockObject
- * @throws PHPUnit_Framework_Exception
- * @since Method available since Release 3.0.0
- */
- public function getMock($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false, $callOriginalMethods = false)
- {
- $mockObject = $this->getMockObjectGenerator()->getMock(
- $originalClassName,
- $methods,
- $arguments,
- $mockClassName,
- $callOriginalConstructor,
- $callOriginalClone,
- $callAutoload,
- $cloneArguments,
- $callOriginalMethods
- );
- $this->mockObjects[] = $mockObject;
- return $mockObject;
- }
- /**
- * Returns a builder object to create mock objects using a fluent interface.
- *
- * @param string $className
- * @return PHPUnit_Framework_MockObject_MockBuilder
- * @since Method available since Release 3.5.0
- */
- public function getMockBuilder($className)
- {
- return new PHPUnit_Framework_MockObject_MockBuilder($this, $className);
- }
- /**
- * Mocks the specified class and returns the name of the mocked class.
- *
- * @param string $originalClassName
- * @param array $methods
- * @param array $arguments
- * @param string $mockClassName
- * @param boolean $callOriginalConstructor
- * @param boolean $callOriginalClone
- * @param boolean $callAutoload
- * @param boolean $cloneArguments
- * @return string
- * @throws PHPUnit_Framework_Exception
- * @since Method available since Release 3.5.0
- */
- protected function getMockClass($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = false, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false)
- {
- $mock = $this->getMock(
- $originalClassName,
- $methods,
- $arguments,
- $mockClassName,
- $callOriginalConstructor,
- $callOriginalClone,
- $callAutoload,
- $cloneArguments
- );
- return get_class($mock);
- }
- /**
- * Returns a mock object for the specified abstract class with all abstract
- * methods of the class mocked. Concrete methods are not mocked by default.
- * To mock concrete methods, use the 7th parameter ($mockedMethods).
- *
- * @param string $originalClassName
- * @param array $arguments
- * @param string $mockClassName
- * @param boolean $callOriginalConstructor
- * @param boolean $callOriginalClone
- * @param boolean $callAutoload
- * @param array $mockedMethods
- * @param boolean $cloneArguments
- * @return PHPUnit_Framework_MockObject_MockObject
- * @since Method available since Release 3.4.0
- * @throws PHPUnit_Framework_Exception
- */
- public function getMockForAbstractClass($originalClassName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = array(), $cloneArguments = false)
- {
- $mockObject = $this->getMockObjectGenerator()->getMockForAbstractClass(
- $originalClassName,
- $arguments,
- $mockClassName,
- $callOriginalConstructor,
- $callOriginalClone,
- $callAutoload,
- $mockedMethods,
- $cloneArguments
- );
- $this->mockObjects[] = $mockObject;
- return $mockObject;
- }
- /**
- * Returns a mock object based on the given WSDL file.
- *
- * @param string $wsdlFile
- * @param string $originalClassName
- * @param string $mockClassName
- * @param array $methods
- * @param boolean $callOriginalConstructor
- * @param array $options An array of options passed to SOAPClient::_construct
- * @return PHPUnit_Framework_MockObject_MockObject
- * @since Method available since Release 3.4.0
- */
- protected function getMockFromWsdl($wsdlFile, $originalClassName = '', $mockClassName = '', array $methods = array(), $callOriginalConstructor = true, array $options = array())
- {
- if ($originalClassName === '') {
- $originalClassName = str_replace('.wsdl', '', basename($wsdlFile));
- }
- if (!class_exists($originalClassName)) {
- eval(
- $this->getMockObjectGenerator()->generateClassFromWsdl(
- $wsdlFile,
- $originalClassName,
- $methods,
- $options
- )
- );
- }
- return $this->getMock(
- $originalClassName,
- $methods,
- array('', $options),
- $mockClassName,
- $callOriginalConstructor,
- false,
- false
- );
- }
- /**
- * Returns a mock object for the specified trait with all abstract methods
- * of the trait mocked. Concrete methods to mock can be specified with the
- * `$mockedMethods` parameter.
- *
- * @param string $traitName
- * @param array $arguments
- * @param string $mockClassName
- * @param boolean $callOriginalConstructor
- * @param boolean $callOriginalClone
- * @param boolean $callAutoload
- * @param array $mockedMethods
- * @param boolean $cloneArguments
- * @return PHPUnit_Framework_MockObject_MockObject
- * @since Method available since Release 4.0.0
- * @throws PHPUnit_Framework_Exception
- */
- public function getMockForTrait($traitName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $mockedMethods = array(), $cloneArguments = false)
- {
- $mockObject = $this->getMockObjectGenerator()->getMockForTrait(
- $traitName,
- $arguments,
- $mockClassName,
- $callOriginalConstructor,
- $callOriginalClone,
- $callAutoload,
- $mockedMethods,
- $cloneArguments
- );
- $this->mockObjects[] = $mockObject;
- return $mockObject;
- }
- /**
- * Returns an object for the specified trait.
- *
- * @param string $traitName
- * @param array $arguments
- * @param string $traitClassName
- * @param boolean $callOriginalConstructor
- * @param boolean $callOriginalClone
- * @param boolean $callAutoload
- * @param boolean $cloneArguments
- * @return object
- * @since Method available since Release 3.6.0
- * @throws PHPUnit_Framework_Exception
- */
- protected function getObjectForTrait($traitName, array $arguments = array(), $traitClassName = '', $callOriginalConstructor = true, $callOriginalClone = true, $callAutoload = true, $cloneArguments = false)
- {
- return $this->getMockObjectGenerator()->getObjectForTrait(
- $traitName,
- $arguments,
- $traitClassName,
- $callOriginalConstructor,
- $callOriginalClone,
- $callAutoload,
- $cloneArguments
- );
- }
- /**
- * Adds a value to the assertion counter.
- *
- * @param integer $count
- * @since Method available since Release 3.3.3
- */
- public function addToAssertionCount($count)
- {
- $this->numAssertions += $count;
- }
- /**
- * Returns the number of assertions performed by this test.
- *
- * @return integer
- * @since Method available since Release 3.3.0
- */
- public function getNumAssertions()
- {
- return $this->numAssertions;
- }
- /**
- * Returns a matcher that matches when the method it is evaluated for
- * is executed zero or more times.
- *
- * @return PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount
- * @since Method available since Release 3.0.0
- */
- public static function any()
- {
- return new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
- }
- /**
- * Returns a matcher that matches when the method it is evaluated for
- * is never executed.
- *
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
- * @since Method available since Release 3.0.0
- */
- public static function never()
- {
- return new PHPUnit_Framework_MockObject_Matcher_InvokedCount(0);
- }
- /**
- * Returns a matcher that matches when the method it is evaluated for
- * is executed at least N times.
- *
- * @param integer $requiredInvocations
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount
- * @since Method available since Release 4.2.0
- */
- public static function atLeast($requiredInvocations)
- {
- return new PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount(
- $requiredInvocations
- );
- }
- /**
- * Returns a matcher that matches when the method it is evaluated for
- * is executed at least once.
- *
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce
- * @since Method available since Release 3.0.0
- */
- public static function atLeastOnce()
- {
- return new PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce;
- }
- /**
- * Returns a matcher that matches when the method it is evaluated for
- * is executed exactly once.
- *
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
- * @since Method available since Release 3.0.0
- */
- public static function once()
- {
- return new PHPUnit_Framework_MockObject_Matcher_InvokedCount(1);
- }
- /**
- * Returns a matcher that matches when the method it is evaluated for
- * is executed exactly $count times.
- *
- * @param integer $count
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedCount
- * @since Method available since Release 3.0.0
- */
- public static function exactly($count)
- {
- return new PHPUnit_Framework_MockObject_Matcher_InvokedCount($count);
- }
- /**
- * Returns a matcher that matches when the method it is evaluated for
- * is executed at most N times.
- *
- * @param integer $allowedInvocations
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount
- * @since Method available since Release 4.2.0
- */
- public static function atMost($allowedInvocations)
- {
- return new PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount(
- $allowedInvocations
- );
- }
- /**
- * Returns a matcher that matches when the method it is evaluated for
- * is invoked at the given $index.
- *
- * @param integer $index
- * @return PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex
- * @since Method available since Release 3.0.0
- */
- public static function at($index)
- {
- return new PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex($index);
- }
- /**
- *
- *
- * @param mixed $value
- * @return PHPUnit_Framework_MockObject_Stub_Return
- * @since Method available since Release 3.0.0
- */
- public static function returnValue($value)
- {
- return new PHPUnit_Framework_MockObject_Stub_Return($value);
- }
- /**
- *
- *
- * @param array $valueMap
- * @return PHPUnit_Framework_MockObject_Stub_ReturnValueMap
- * @since Method available since Release 3.6.0
- */
- public static function returnValueMap(array $valueMap)
- {
- return new PHPU…
Large files files are truncated, but you can click here to view the full file