X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Fphpunit%2Fphpunit%2Ftests%2FFramework%2FTestCaseTest.php;fp=vendor%2Fphpunit%2Fphpunit%2Ftests%2FFramework%2FTestCaseTest.php;h=913327865b1dcf71c649b8978a6cebcfd8525980;hp=0000000000000000000000000000000000000000;hb=eba34333e3c89f208d2f72fa91351ad019a71583;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae diff --git a/vendor/phpunit/phpunit/tests/Framework/TestCaseTest.php b/vendor/phpunit/phpunit/tests/Framework/TestCaseTest.php new file mode 100644 index 000000000..913327865 --- /dev/null +++ b/vendor/phpunit/phpunit/tests/Framework/TestCaseTest.php @@ -0,0 +1,550 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NoArgTestCaseTest.php'; +require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'Singleton.php'; + +$GLOBALS['a'] = 'a'; +$_ENV['b'] = 'b'; +$_POST['c'] = 'c'; +$_GET['d'] = 'd'; +$_COOKIE['e'] = 'e'; +$_SERVER['f'] = 'f'; +$_FILES['g'] = 'g'; +$_REQUEST['h'] = 'h'; +$GLOBALS['i'] = 'i'; + +/** + * @since Class available since Release 2.0.0 + * @covers PHPUnit_Framework_TestCase + */ +class Framework_TestCaseTest extends PHPUnit_Framework_TestCase +{ + protected $backupGlobalsBlacklist = array('i', 'singleton'); + + /** + * Used be testStaticAttributesBackupPre + */ + protected static $_testStatic = 0; + + public function testCaseToString() + { + $this->assertEquals( + 'Framework_TestCaseTest::testCaseToString', + $this->toString() + ); + } + + public function testSuccess() + { + $test = new Success; + $result = $test->run(); + + $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_PASSED, $test->getStatus()); + $this->assertEquals(0, $result->errorCount()); + $this->assertEquals(0, $result->failureCount()); + $this->assertEquals(0, $result->skippedCount()); + $this->assertEquals(1, count($result)); + } + + public function testFailure() + { + $test = new Failure; + $result = $test->run(); + + $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE, $test->getStatus()); + $this->assertEquals(0, $result->errorCount()); + $this->assertEquals(1, $result->failureCount()); + $this->assertEquals(0, $result->skippedCount()); + $this->assertEquals(1, count($result)); + } + + public function testError() + { + $test = new TestError; + $result = $test->run(); + + $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_ERROR, $test->getStatus()); + $this->assertEquals(1, $result->errorCount()); + $this->assertEquals(0, $result->failureCount()); + $this->assertEquals(0, $result->skippedCount()); + $this->assertEquals(1, count($result)); + } + + public function testSkipped() + { + $test = new TestSkipped(); + $result = $test->run(); + + $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED, $test->getStatus()); + $this->assertEquals('Skipped test', $test->getStatusMessage()); + $this->assertEquals(0, $result->errorCount()); + $this->assertEquals(0, $result->failureCount()); + $this->assertEquals(1, $result->skippedCount()); + $this->assertEquals(1, count($result)); + } + + public function testIncomplete() + { + $test = new TestIncomplete(); + $result = $test->run(); + + $this->assertEquals(PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE, $test->getStatus()); + $this->assertEquals('Incomplete test', $test->getStatusMessage()); + $this->assertEquals(0, $result->errorCount()); + $this->assertEquals(0, $result->failureCount()); + $this->assertEquals(0, $result->skippedCount()); + $this->assertEquals(1, count($result)); + } + + public function testExceptionInSetUp() + { + $test = new ExceptionInSetUpTest('testSomething'); + $result = $test->run(); + + $this->assertTrue($test->setUp); + $this->assertFalse($test->assertPreConditions); + $this->assertFalse($test->testSomething); + $this->assertFalse($test->assertPostConditions); + $this->assertTrue($test->tearDown); + } + + public function testExceptionInAssertPreConditions() + { + $test = new ExceptionInAssertPreConditionsTest('testSomething'); + $result = $test->run(); + + $this->assertTrue($test->setUp); + $this->assertTrue($test->assertPreConditions); + $this->assertFalse($test->testSomething); + $this->assertFalse($test->assertPostConditions); + $this->assertTrue($test->tearDown); + } + + public function testExceptionInTest() + { + $test = new ExceptionInTest('testSomething'); + $result = $test->run(); + + $this->assertTrue($test->setUp); + $this->assertTrue($test->assertPreConditions); + $this->assertTrue($test->testSomething); + $this->assertFalse($test->assertPostConditions); + $this->assertTrue($test->tearDown); + } + + public function testExceptionInAssertPostConditions() + { + $test = new ExceptionInAssertPostConditionsTest('testSomething'); + $result = $test->run(); + + $this->assertTrue($test->setUp); + $this->assertTrue($test->assertPreConditions); + $this->assertTrue($test->testSomething); + $this->assertTrue($test->assertPostConditions); + $this->assertTrue($test->tearDown); + } + + public function testExceptionInTearDown() + { + $test = new ExceptionInTearDownTest('testSomething'); + $result = $test->run(); + + $this->assertTrue($test->setUp); + $this->assertTrue($test->assertPreConditions); + $this->assertTrue($test->testSomething); + $this->assertTrue($test->assertPostConditions); + $this->assertTrue($test->tearDown); + } + + public function testNoArgTestCasePasses() + { + $result = new PHPUnit_Framework_TestResult; + $t = new PHPUnit_Framework_TestSuite('NoArgTestCaseTest'); + + $t->run($result); + + $this->assertEquals(1, count($result)); + $this->assertEquals(0, $result->failureCount()); + $this->assertEquals(0, $result->errorCount()); + } + + public function testWasRun() + { + $test = new WasRun; + $test->run(); + + $this->assertTrue($test->wasRun); + } + + public function testException() + { + $test = new ThrowExceptionTestCase('test'); + $test->setExpectedException('RuntimeException'); + + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertTrue($result->wasSuccessful()); + } + + public function testExceptionWithMessage() + { + $test = new ThrowExceptionTestCase('test'); + $test->setExpectedException('RuntimeException', 'A runtime error occurred'); + + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertTrue($result->wasSuccessful()); + } + + public function testExceptionWithWrongMessage() + { + $test = new ThrowExceptionTestCase('test'); + $test->setExpectedException('RuntimeException', 'A logic error occurred'); + + $result = $test->run(); + + $this->assertEquals(1, $result->failureCount()); + $this->assertEquals(1, count($result)); + $this->assertEquals( + "Failed asserting that exception message 'A runtime error occurred' contains 'A logic error occurred'.", + $test->getStatusMessage() + ); + } + + public function testExceptionWithRegexpMessage() + { + $test = new ThrowExceptionTestCase('test'); + $test->setExpectedExceptionRegExp('RuntimeException', '/runtime .*? occurred/'); + + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertTrue($result->wasSuccessful()); + } + + public function testExceptionWithWrongRegexpMessage() + { + $test = new ThrowExceptionTestCase('test'); + $test->setExpectedExceptionRegExp('RuntimeException', '/logic .*? occurred/'); + + $result = $test->run(); + + $this->assertEquals(1, $result->failureCount()); + $this->assertEquals(1, count($result)); + $this->assertEquals( + "Failed asserting that exception message 'A runtime error occurred' matches '/logic .*? occurred/'.", + $test->getStatusMessage() + ); + } + + /** + * @covers PHPUnit_Framework_Constraint_ExceptionMessageRegExp + */ + public function testExceptionWithInvalidRegexpMessage() + { + $test = new ThrowExceptionTestCase('test'); + $test->setExpectedExceptionRegExp('RuntimeException', '#runtime .*? occurred/'); // wrong delimiter + + $result = $test->run(); + + $this->assertEquals( + "Invalid expected exception message regex given: '#runtime .*? occurred/'", + $test->getStatusMessage() + ); + } + + public function testNoException() + { + $test = new ThrowNoExceptionTestCase('test'); + $test->setExpectedException('RuntimeException'); + + $result = $test->run(); + + $this->assertEquals(1, $result->failureCount()); + $this->assertEquals(1, count($result)); + } + + public function testWrongException() + { + $test = new ThrowExceptionTestCase('test'); + $test->setExpectedException('InvalidArgumentException'); + + $result = $test->run(); + + $this->assertEquals(1, $result->failureCount()); + $this->assertEquals(1, count($result)); + } + + /** + * @backupGlobals enabled + */ + public function testGlobalsBackupPre() + { + global $a; + global $i; + + $this->assertEquals('a', $a); + $this->assertEquals('a', $GLOBALS['a']); + $this->assertEquals('b', $_ENV['b']); + $this->assertEquals('c', $_POST['c']); + $this->assertEquals('d', $_GET['d']); + $this->assertEquals('e', $_COOKIE['e']); + $this->assertEquals('f', $_SERVER['f']); + $this->assertEquals('g', $_FILES['g']); + $this->assertEquals('h', $_REQUEST['h']); + $this->assertEquals('i', $i); + $this->assertEquals('i', $GLOBALS['i']); + + $GLOBALS['a'] = 'aa'; + $GLOBALS['foo'] = 'bar'; + $_ENV['b'] = 'bb'; + $_POST['c'] = 'cc'; + $_GET['d'] = 'dd'; + $_COOKIE['e'] = 'ee'; + $_SERVER['f'] = 'ff'; + $_FILES['g'] = 'gg'; + $_REQUEST['h'] = 'hh'; + $GLOBALS['i'] = 'ii'; + + $this->assertEquals('aa', $a); + $this->assertEquals('aa', $GLOBALS['a']); + $this->assertEquals('bar', $GLOBALS['foo']); + $this->assertEquals('bb', $_ENV['b']); + $this->assertEquals('cc', $_POST['c']); + $this->assertEquals('dd', $_GET['d']); + $this->assertEquals('ee', $_COOKIE['e']); + $this->assertEquals('ff', $_SERVER['f']); + $this->assertEquals('gg', $_FILES['g']); + $this->assertEquals('hh', $_REQUEST['h']); + $this->assertEquals('ii', $i); + $this->assertEquals('ii', $GLOBALS['i']); + } + + public function testGlobalsBackupPost() + { + global $a; + global $i; + + $this->assertEquals('a', $a); + $this->assertEquals('a', $GLOBALS['a']); + $this->assertEquals('b', $_ENV['b']); + $this->assertEquals('c', $_POST['c']); + $this->assertEquals('d', $_GET['d']); + $this->assertEquals('e', $_COOKIE['e']); + $this->assertEquals('f', $_SERVER['f']); + $this->assertEquals('g', $_FILES['g']); + $this->assertEquals('h', $_REQUEST['h']); + $this->assertEquals('ii', $i); + $this->assertEquals('ii', $GLOBALS['i']); + + $this->assertArrayNotHasKey('foo', $GLOBALS); + } + + /** + * @backupGlobals enabled + * @backupStaticAttributes enabled + */ + public function testStaticAttributesBackupPre() + { + $GLOBALS['singleton'] = Singleton::getInstance(); + self::$_testStatic = 123; + } + + /** + * @depends testStaticAttributesBackupPre + */ + public function testStaticAttributesBackupPost() + { + $this->assertNotSame($GLOBALS['singleton'], Singleton::getInstance()); + $this->assertSame(0, self::$_testStatic); + } + + public function testIsInIsolationReturnsFalse() + { + $test = new IsolationTest('testIsInIsolationReturnsFalse'); + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertTrue($result->wasSuccessful()); + } + + public function testIsInIsolationReturnsTrue() + { + $test = new IsolationTest('testIsInIsolationReturnsTrue'); + $test->setRunTestInSeparateProcess(true); + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertTrue($result->wasSuccessful()); + } + + public function testExpectOutputStringFooActualFoo() + { + $test = new OutputTestCase('testExpectOutputStringFooActualFoo'); + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertTrue($result->wasSuccessful()); + } + + public function testExpectOutputStringFooActualBar() + { + $test = new OutputTestCase('testExpectOutputStringFooActualBar'); + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertFalse($result->wasSuccessful()); + } + + public function testExpectOutputRegexFooActualFoo() + { + $test = new OutputTestCase('testExpectOutputRegexFooActualFoo'); + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertTrue($result->wasSuccessful()); + } + + public function testExpectOutputRegexFooActualBar() + { + $test = new OutputTestCase('testExpectOutputRegexFooActualBar'); + $result = $test->run(); + + $this->assertEquals(1, count($result)); + $this->assertFalse($result->wasSuccessful()); + } + + public function testSkipsIfRequiresHigherVersionOfPHPUnit() + { + $test = new RequirementsTest('testAlwaysSkip'); + $result = $test->run(); + + $this->assertEquals(1, $result->skippedCount()); + $this->assertEquals( + 'PHPUnit 1111111 (or later) is required.', + $test->getStatusMessage() + ); + } + + public function testSkipsIfRequiresHigherVersionOfPHP() + { + $test = new RequirementsTest('testAlwaysSkip2'); + $result = $test->run(); + + $this->assertEquals(1, $result->skippedCount()); + $this->assertEquals( + 'PHP 9999999 (or later) is required.', + $test->getStatusMessage() + ); + } + + public function testSkipsIfRequiresNonExistingOs() + { + $test = new RequirementsTest('testAlwaysSkip3'); + $result = $test->run(); + + $this->assertEquals(1, $result->skippedCount()); + $this->assertEquals( + 'Operating system matching /DOESNOTEXIST/i is required.', + $test->getStatusMessage() + ); + } + + public function testSkipsIfRequiresNonExistingFunction() + { + $test = new RequirementsTest('testNine'); + $result = $test->run(); + + $this->assertEquals(1, $result->skippedCount()); + $this->assertEquals( + 'Function testFunc is required.', + $test->getStatusMessage() + ); + } + + public function testSkipsIfRequiresNonExistingExtension() + { + $test = new RequirementsTest('testTen'); + $result = $test->run(); + + $this->assertEquals( + 'Extension testExt is required.', + $test->getStatusMessage() + ); + } + + public function testSkipsProvidesMessagesForAllSkippingReasons() + { + $test = new RequirementsTest('testAllPossibleRequirements'); + $result = $test->run(); + + $this->assertEquals( + 'PHP 99-dev (or later) is required.' . PHP_EOL . + 'PHPUnit 9-dev (or later) is required.' . PHP_EOL . + 'Operating system matching /DOESNOTEXIST/i is required.' . PHP_EOL . + 'Function testFuncOne is required.' . PHP_EOL . + 'Function testFuncTwo is required.' . PHP_EOL . + 'Extension testExtOne is required.' . PHP_EOL . + 'Extension testExtTwo is required.', + $test->getStatusMessage() + ); + } + + public function testRequiringAnExistingMethodDoesNotSkip() + { + $test = new RequirementsTest('testExistingMethod'); + $result = $test->run(); + $this->assertEquals(0, $result->skippedCount()); + } + + public function testRequiringAnExistingFunctionDoesNotSkip() + { + $test = new RequirementsTest('testExistingFunction'); + $result = $test->run(); + $this->assertEquals(0, $result->skippedCount()); + } + + public function testRequiringAnExistingExtensionDoesNotSkip() + { + $test = new RequirementsTest('testExistingExtension'); + $result = $test->run(); + $this->assertEquals(0, $result->skippedCount()); + } + + public function testRequiringAnExistingOsDoesNotSkip() + { + $test = new RequirementsTest('testExistingOs'); + $result = $test->run(); + $this->assertEquals(0, $result->skippedCount()); + } + + public function testCurrentWorkingDirectoryIsRestored() + { + $expectedCwd = getcwd(); + + $test = new ChangeCurrentWorkingDirectoryTest('testSomethingThatChangesTheCwd'); + $test->run(); + + $this->assertSame($expectedCwd, getcwd()); + } + + /** + * @requires PHP 7 + * @expectedException TypeError + */ + public function testTypeErrorCanBeExpected() + { + $o = new ClassWithScalarTypeDeclarations; + $o->foo(null, null); + } +}