summaryrefslogtreecommitdiff
path: root/buildscripts/PHPUnit2/Framework/TestSuite.php
diff options
context:
space:
mode:
authorctrlaltca <>2013-01-02 14:42:24 +0000
committerctrlaltca <>2013-01-02 14:42:24 +0000
commitedf2251aca60a970e822079d23933e5b70b26571 (patch)
tree366b6688efbb03f20f47268bea57859cea673c70 /buildscripts/PHPUnit2/Framework/TestSuite.php
parent8e5f2510bd577e15095e46afc7d0ba6808549bf8 (diff)
backported all related changes up to 3229 to branch/3.2
Diffstat (limited to 'buildscripts/PHPUnit2/Framework/TestSuite.php')
-rw-r--r--buildscripts/PHPUnit2/Framework/TestSuite.php554
1 files changed, 0 insertions, 554 deletions
diff --git a/buildscripts/PHPUnit2/Framework/TestSuite.php b/buildscripts/PHPUnit2/Framework/TestSuite.php
deleted file mode 100644
index 12c4ce5a..00000000
--- a/buildscripts/PHPUnit2/Framework/TestSuite.php
+++ /dev/null
@@ -1,554 +0,0 @@
-<?php
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * PHP Version 5
- *
- * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.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, STRIC
- * 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.
- *
- * @category Testing
- * @package PHPUnit2
- * @author Sebastian Bergmann <sb@sebastian-bergmann.de>
- * @copyright 2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version CVS: $Id: TestSuite.php,v 1.26.2.11 2005/12/17 16:04:56 sebastian Exp $
- * @link http://pear.php.net/package/PHPUnit2
- * @since File available since Release 2.0.0
- */
-
-require_once 'PHPUnit2/Framework/Test.php';
-require_once 'PHPUnit2/Framework/TestCase.php';
-require_once 'PHPUnit2/Framework/TestResult.php';
-require_once 'PHPUnit2/Runner/BaseTestRunner.php';
-require_once 'PHPUnit2/Util/Fileloader.php';
-
-/**
- * A TestSuite is a composite of Tests. It runs a collection of test cases.
- *
- * Here is an example using the dynamic test definition.
- *
- * <code>
- * <?php
- * $suite = new PHPUnit2_Framework_TestSuite;
- * $suite->addTest(new MathTest('testPass'));
- * ?>
- * </code>
- *
- * Alternatively, a TestSuite can extract the tests to be run automatically.
- * To do so you pass a ReflectionClass instance for your
- * PHPUnit2_Framework_TestCase class to the PHPUnit2_Framework_TestSuite
- * constructor.
- *
- * <code>
- * <?php
- * $suite = new PHPUnit2_Framework_TestSuite(
- * new ReflectionClass('MathTest')
- * );
- * ?>
- * </code>
- *
- * This constructor creates a suite with all the methods starting with
- * "test" that take no arguments.
- *
- * @category Testing
- * @package PHPUnit2
- * @author Sebastian Bergmann <sb@sebastian-bergmann.de>
- * @copyright 2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
- * @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version Release: @package_version@
- * @link http://pear.php.net/package/PHPUnit2
- * @since Class available since Release 2.0.0
- */
-class PHPUnit2_Framework_TestSuite implements PHPUnit2_Framework_Test {
- /**
- * The name of the test suite.
- *
- * @var string
- * @access private
- */
- private $name = '';
-
- /**
- * The tests in the test suite.
- *
- * @var array
- * @access private
- */
- private $tests = array();
-
- /**
- * Constructs a new TestSuite:
- *
- * - PHPUnit2_Framework_TestSuite() constructs an empty TestSuite.
- *
- * - PHPUnit2_Framework_TestSuite(ReflectionClass) constructs a
- * TestSuite from the given class.
- *
- * - PHPUnit2_Framework_TestSuite(ReflectionClass, String)
- * constructs a TestSuite from the given class with the given
- * name.
- *
- * - PHPUnit2_Framework_TestSuite(String) either constructs a
- * TestSuite from the given class (if the passed string is the
- * name of an existing class) or constructs an empty TestSuite
- * with the given name.
- *
- * @param mixed $theClass
- * @param string $name
- * @throws Exception
- * @access public
- */
- public function __construct($theClass = '', $name = '') {
- $argumentsValid = FALSE;
-
- if (is_object($theClass) &&
- $theClass instanceof ReflectionClass) {
- $argumentsValid = TRUE;
- }
-
- else if (is_string($theClass) && $theClass !== '' && class_exists($theClass)) {
- $argumentsValid = TRUE;
-
- if ($name == '') {
- $name = $theClass;
- }
-
- $theClass = new ReflectionClass($theClass);
- }
-
- else if (is_string($theClass)) {
- $this->setName($theClass);
- return;
- }
-
- if (!$argumentsValid) {
- throw new Exception;
- }
-
- if ($name != '') {
- $this->setName($name);
- } else {
- $this->setName($theClass->getName());
- }
-
- $constructor = $theClass->getConstructor();
-
- if ($constructor === NULL ||
- !$constructor->isPublic()) {
- $this->addTest(
- self::warning(
- sprintf(
- 'Class %s has no public constructor',
-
- $theClass->getName()
- )
- )
- );
-
- return;
- }
-
- $methods = $theClass->getMethods();
- $names = array();
-
- foreach ($methods as $method) {
- $this->addTestMethod($method, $names, $theClass);
- }
-
- if (empty($this->tests)) {
- $this->addTest(
- self::warning(
- sprintf(
- 'No tests found in %s',
-
- $theClass->getName()
- )
- )
- );
- }
- }
-
- /**
- * Returns a string representation of the test suite.
- *
- * @return string
- * @access public
- */
- public function toString() {
- return $this->getName();
- }
-
- /**
- * Adds a test to the suite.
- *
- * @param PHPUnit2_Framework_Test $test
- * @access public
- */
- public function addTest(PHPUnit2_Framework_Test $test) {
- $this->tests[] = $test;
- }
-
- /**
- * Adds the tests from the given class to the suite.
- *
- * @param mixed $testClass
- * @access public
- */
- public function addTestSuite($testClass) {
- if (is_string($testClass) &&
- class_exists($testClass)) {
- $testClass = new ReflectionClass($testClass);
- }
-
- if (is_object($testClass) &&
- $testClass instanceof ReflectionClass) {
- $this->addTest(new PHPUnit2_Framework_TestSuite($testClass));
- }
- }
-
- /**
- * Wraps both <code>addTest()</code> and <code>addTestSuite</code>
- * as well as the separate import statements for the user's convenience.
- *
- * If the named file cannot be read or there are no new tests that can be
- * added, a <code>PHPUnit2_Framework_Warning</code> will be created instead,
- * leaving the current test run untouched.
- *
- * @param string $filename
- * @throws Exception
- * @access public
- * @since Method available since Release 2.3.0
- * @author Stefano F. Rausch <stefano@rausch-e.net>
- */
- public function addTestFile($filename) {
- if (!is_string($filename) || !file_exists($filename)) {
- throw new Exception;
- }
-
- $declaredClasses = get_declared_classes();
-
- PHPUnit2_Util_Fileloader::checkAndLoad($filename);
-
- $newClasses = array_values(
- array_diff(get_declared_classes(), $declaredClasses)
- );
-
- $testsFound = 0;
-
- foreach ($newClasses as $class) {
- if (preg_match('"Tests?$"', $class)) {
- try {
- $suiteMethod = new ReflectionMethod(
- $class, PHPUnit2_Runner_BaseTestRunner::SUITE_METHODNAME
- );
-
- $this->addTest($suiteMethod->invoke(NULL));
- } catch (ReflectionException $e) {
- $this->addTestSuite(new ReflectionClass($class));
- }
-
- $testsFound++;
- }
- }
-
- if ($testsFound == 0) {
- $this->addTest(
- new PHPUnit2_Framework_Warning('No tests found in file ' . $filename)
- );
- }
- }
-
- /**
- * Wrapper for addTestFile() that adds multiple test files.
- *
- * @param Array $filenames
- * @throws Exception
- * @access public
- * @since Method available since Release 2.3.0
- */
- public function addTestFiles($filenames) {
- foreach ($filenames as $filename) {
- $this->addTestFile($filename);
- }
- }
-
- /**
- * Counts the number of test cases that will be run by this test.
- *
- * @return integer
- * @access public
- */
- public function countTestCases() {
- $count = 0;
-
- foreach ($this->tests as $test) {
- $count += $test->countTestCases();
- }
-
- return $count;
- }
-
- /**
- * @param ReflectionClass $theClass
- * @param string $name
- * @return PHPUnit2_Framework_Test
- * @access public
- * @static
- */
- public static function createTest(ReflectionClass $theClass, $name) {
- if (!$theClass->isInstantiable()) {
- return self::warning(
- sprintf(
- 'Cannot instantiate test case %s.',
- $theClass->getName()
- )
- );
- }
-
- $constructor = $theClass->getConstructor();
-
- if ($constructor !== NULL) {
- $parameters = $constructor->getParameters();
-
- if (sizeof($parameters) == 0) {
- $test = $theClass->newInstance();
-
- if ($test instanceof PHPUnit2_Framework_TestCase) {
- $test->setName($name);
- }
- }
-
- else if (sizeof($parameters) == 1 &&
- $parameters[0]->getClass() === NULL) {
- $test = $theClass->newInstance($name);
- }
-
- else {
- return self::warning(
- sprintf(
- 'Constructor of class %s is not TestCase($name) or TestCase().',
- $theClass->getName()
- )
- );
- }
- }
-
- return $test;
- }
-
- /**
- * Creates a default TestResult object.
- *
- * @return PHPUnit2_Framework_TestResult
- * @access protected
- */
- protected function createResult() {
- return new PHPUnit2_Framework_TestResult;
- }
-
- /**
- * Returns the name of the suite.
- *
- * @return string
- * @access public
- */
- public function getName() {
- return $this->name;
- }
-
- /**
- * Runs the tests and collects their result in a TestResult.
- *
- * @param PHPUnit2_Framework_TestResult $result
- * @return PHPUnit2_Framework_TestResult
- * @throws Exception
- * @access public
- */
- public function run($result = NULL) {
- if ($result === NULL) {
- $result = $this->createResult();
- }
-
- // XXX: Workaround for missing ability to declare type-hinted parameters as optional.
- else if (!($result instanceof PHPUnit2_Framework_TestResult)) {
- throw new Exception(
- 'Argument 1 must be an instance of PHPUnit2_Framework_TestResult.'
- );
- }
-
- $result->startTestSuite($this);
-
- foreach ($this->tests as $test) {
- if ($result->shouldStop()) {
- break;
- }
-
- $this->runTest($test, $result);
- }
-
- $result->endTestSuite($this);
-
- return $result;
- }
-
- /**
- * Runs a test.
- *
- * @param PHPUnit2_Framework_Test $test
- * @param PHPUnit2_Framework_TestResult $testResult
- * @access public
- */
- public function runTest(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_TestResult $result) {
- $test->run($result);
- }
-
- /**
- * Sets the name of the suite.
- *
- * @param string
- * @access public
- */
- public function setName($name) {
- $this->name = $name;
- }
-
- /**
- * Returns the test at the given index.
- *
- * @param integer
- * @return PHPUnit2_Framework_Test
- * @access public
- */
- public function testAt($index) {
- if (isset($this->tests[$index])) {
- return $this->tests[$index];
- } else {
- return FALSE;
- }
- }
-
- /**
- * Returns the number of tests in this suite.
- *
- * @return integer
- * @access public
- */
- public function testCount() {
- return sizeof($this->tests);
- }
-
- /**
- * Returns the tests as an enumeration.
- *
- * @return array
- * @access public
- */
- public function tests() {
- return $this->tests;
- }
-
- /**
- * @param ReflectionMethod $method
- * @param array $names
- * @param ReflectionClass $theClass
- * @access private
- */
- private function addTestMethod(ReflectionMethod $method, &$names, ReflectionClass $theClass) {
- $name = $method->getName();
-
- if (in_array($name, $names)) {
- return;
- }
-
- if ($this->isPublicTestMethod($method)) {
- $names[] = $name;
-
- $this->addTest(
- self::createTest(
- $theClass,
- $name
- )
- );
- }
-
- else if ($this->isTestMethod($method)) {
- $this->addTest(
- self::warning(
- sprintf(
- 'Test method is not public: %s',
-
- $name
- )
- )
- );
- }
- }
-
- /**
- * @param ReflectionMethod $method
- * @return boolean
- * @access private
- */
- private function isPublicTestMethod(ReflectionMethod $method) {
- return ($this->isTestMethod($method) &&
- $method->isPublic());
- }
-
- /**
- * @param ReflectionMethod $method
- * @return boolean
- * @access private
- */
- private function isTestMethod(ReflectionMethod $method) {
- return (substr($method->name, 0, 4) == 'test');
- }
-
- /**
- * @param string $message
- * @return PHPUnit2_Framework_Warning
- * @access private
- */
- private static function warning($message) {
- require_once 'PHPUnit2/Framework/Warning.php';
- return new PHPUnit2_Framework_Warning($message);
- }
-}
-
-/*
- * Local variables:
- * tab-width: 4
- * c-basic-offset: 4
- * c-hanging-comment-ender-p: nil
- * End:
- */
-?>