From e448e1c6b36b43a19a335cea7b7d566d69e59f03 Mon Sep 17 00:00:00 2001 From: ogizanagi Date: Fri, 9 Oct 2015 18:38:36 +0200 Subject: [PATCH 1/5] [VarDumper] Fix wordwrap with Bootstrap --- src/Symfony/Component/VarDumper/Dumper/HtmlDumper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/VarDumper/Dumper/HtmlDumper.php b/src/Symfony/Component/VarDumper/Dumper/HtmlDumper.php index 48d5cffa40..02ae9ff9a6 100644 --- a/src/Symfony/Component/VarDumper/Dumper/HtmlDumper.php +++ b/src/Symfony/Component/VarDumper/Dumper/HtmlDumper.php @@ -31,7 +31,7 @@ class HtmlDumper extends CliDumper protected $headerIsDumped = false; protected $lastDepth = -1; protected $styles = array( - 'default' => 'background-color:#18171B; color:#FF8400; line-height:1.2em; font:12px Menlo, Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:100000', + 'default' => 'background-color:#18171B; color:#FF8400; line-height:1.2em; font:12px Menlo, Monaco, Consolas, monospace; word-wrap: break-word; white-space: pre-wrap; position:relative; z-index:100000; word-break: normal', 'num' => 'font-weight:bold; color:#1299DA', 'const' => 'font-weight:bold', 'str' => 'font-weight:bold; color:#56DB3A', From 23fc32f78fe5587850e4b0fdc84d59ae6f357db7 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 10 Oct 2015 18:01:13 +0200 Subject: [PATCH 2/5] [Process] Don't use @requires on abstract class --- .../Process/Tests/AbstractProcessTest.php | 33 +++++++++++-------- .../Process/Tests/SimpleProcessTest.php | 5 ++- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php index d46ebe2501..62616eed34 100644 --- a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php +++ b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php @@ -71,11 +71,12 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase $this->assertNull($p->getTimeout()); } - /** - * @requires extension pcntl - */ public function testStopWithTimeoutIsActuallyWorking() { + if (!extension_loaded('pcntl')) { + $this->markTestSkipped('Extension pcntl is required.'); + } + // exec is mandatory here since we send a signal to the process // see https://github.com/symfony/symfony/issues/5030 about prepending // command with exec @@ -624,11 +625,12 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase $this->assertEquals($termSignal, $process->getTermSignal()); } - /** - * @requires function posix_kill - */ public function testProcessThrowsExceptionWhenExternallySignaled() { + if (!function_exists('posix_kill')) { + $this->markTestSkipped('Function posix_kill is required.'); + } + $termSignal = defined('SIGKILL') ? SIGKILL : 9; $process = $this->getProcess('exec php -r "while (true) {}"'); @@ -764,11 +766,12 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase $this->assertNull($process->getPid()); } - /** - * @requires extension pcntl - */ public function testSignal() { + if (!extension_loaded('pcntl')) { + $this->markTestSkipped('Extension pcntl is required.'); + } + $process = $this->getProcess('exec php -f '.__DIR__.'/SignalListener.php'); $process->start(); usleep(500000); @@ -781,11 +784,12 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase $this->assertEquals('Caught SIGUSR1', $process->getOutput()); } - /** - * @requires extension pcntl - */ public function testExitCodeIsAvailableAfterSignal() { + if (!extension_loaded('pcntl')) { + $this->markTestSkipped('Extension pcntl is required.'); + } + $process = $this->getProcess('sleep 4'); $process->start(); $process->signal(SIGKILL); @@ -802,10 +806,13 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase /** * @expectedException \Symfony\Component\Process\Exception\LogicException - * @requires extension pcntl */ public function testSignalProcessNotRunning() { + if (!extension_loaded('pcntl')) { + $this->markTestSkipped('Extension pcntl is required.'); + } + $process = $this->getProcess(self::$phpBin.' -v'); $process->signal(SIGHUP); } diff --git a/src/Symfony/Component/Process/Tests/SimpleProcessTest.php b/src/Symfony/Component/Process/Tests/SimpleProcessTest.php index 8203d8da3e..a52cd437a8 100644 --- a/src/Symfony/Component/Process/Tests/SimpleProcessTest.php +++ b/src/Symfony/Component/Process/Tests/SimpleProcessTest.php @@ -121,9 +121,12 @@ class SimpleProcessTest extends AbstractProcessTest parent::testExitCodeIsAvailableAfterSignal(); } + /** + * @expectedException \Symfony\Component\Process\Exception\LogicException + * @expectedExceptionMessage Can not send signal on a non running process. + */ public function testSignalProcessNotRunning() { - $this->setExpectedException('Symfony\Component\Process\Exception\LogicException', 'Can not send signal on a non running process.'); parent::testSignalProcessNotRunning(); } From 93a06dffa129824f949bdabc8af7065c6d693848 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 10 Oct 2015 17:21:19 +0200 Subject: [PATCH 3/5] [HttpFoundation] Extend ClockMock to session storage tests --- .../HttpFoundation/Tests/ClockMock.php | 39 -------- .../Tests/ClockMockTestCase.php | 88 +++++++++++++++++++ .../HttpFoundation/Tests/CookieTest.php | 14 +-- .../Tests/ResponseHeaderBagTest.php | 14 +-- .../Handler/MemcacheSessionHandlerTest.php | 5 +- .../Handler/MemcachedSessionHandlerTest.php | 6 +- .../Handler/MongoDbSessionHandlerTest.php | 5 +- .../Storage/Handler/PdoSessionHandlerTest.php | 4 +- .../Tests/Session/Storage/MetadataBagTest.php | 5 +- 9 files changed, 110 insertions(+), 70 deletions(-) delete mode 100644 src/Symfony/Component/HttpFoundation/Tests/ClockMock.php create mode 100644 src/Symfony/Component/HttpFoundation/Tests/ClockMockTestCase.php diff --git a/src/Symfony/Component/HttpFoundation/Tests/ClockMock.php b/src/Symfony/Component/HttpFoundation/Tests/ClockMock.php deleted file mode 100644 index aa954db429..0000000000 --- a/src/Symfony/Component/HttpFoundation/Tests/ClockMock.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpFoundation; - -function time() -{ - return Tests\time(); -} - -namespace Symfony\Component\HttpFoundation\Tests; - -function with_clock_mock($enable = null) -{ - static $enabled; - - if (null === $enable) { - return $enabled; - } - - $enabled = $enable; -} - -function time() -{ - if (!with_clock_mock()) { - return \time(); - } - - return $_SERVER['REQUEST_TIME']; -} diff --git a/src/Symfony/Component/HttpFoundation/Tests/ClockMockTestCase.php b/src/Symfony/Component/HttpFoundation/Tests/ClockMockTestCase.php new file mode 100644 index 0000000000..ba009168f3 --- /dev/null +++ b/src/Symfony/Component/HttpFoundation/Tests/ClockMockTestCase.php @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\HttpFoundationSession\Tests\Storage\Handler; + +use Symfony\Component\HttpFoundation\Tests; + +function time() +{ + return Tests\time(); +} + +namespace Symfony\Component\HttpFoundationSession\Storage\Handler; + +use Symfony\Component\HttpFoundation\Tests; + +function time() +{ + return Tests\time(); +} + +namespace Symfony\Component\HttpFoundationSession\Tests\Storage; + +use Symfony\Component\HttpFoundation\Tests; + +function time() +{ + return Tests\time(); +} + +namespace Symfony\Component\HttpFoundationSession\Storage; + +use Symfony\Component\HttpFoundation\Tests; + +function time() +{ + return Tests\time(); +} + +namespace Symfony\Component\HttpFoundation; + +function time() +{ + return Tests\time(); +} + +namespace Symfony\Component\HttpFoundation\Tests; + +function with_clock_mock($enable = null) +{ + static $enabled; + + if (null === $enable) { + return $enabled; + } + + $enabled = $enable; +} + +function time() +{ + if (!with_clock_mock()) { + return \time(); + } + + return $_SERVER['REQUEST_TIME']; +} + +class ClockMockTestCase extends \PHPUnit_Framework_TestCase +{ + protected function setUp() + { + with_clock_mock(true); + } + + protected function tearDown() + { + with_clock_mock(false); + } +} diff --git a/src/Symfony/Component/HttpFoundation/Tests/CookieTest.php b/src/Symfony/Component/HttpFoundation/Tests/CookieTest.php index 378e1c5c57..831eef0c65 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/CookieTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/CookieTest.php @@ -13,26 +13,14 @@ namespace Symfony\Component\HttpFoundation\Tests; use Symfony\Component\HttpFoundation\Cookie; -require_once __DIR__.'/ClockMock.php'; - /** * CookieTest. * * @author John Kary * @author Hugo Hamon */ -class CookieTest extends \PHPUnit_Framework_TestCase +class CookieTest extends ClockMockTestCase { - protected function setUp() - { - with_clock_mock(true); - } - - protected function tearDown() - { - with_clock_mock(false); - } - public function invalidNames() { return array( diff --git a/src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php index 161937b31d..48e049f87b 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/ResponseHeaderBagTest.php @@ -14,20 +14,8 @@ namespace Symfony\Component\HttpFoundation\Tests; use Symfony\Component\HttpFoundation\ResponseHeaderBag; use Symfony\Component\HttpFoundation\Cookie; -require_once __DIR__.'/ClockMock.php'; - -class ResponseHeaderBagTest extends \PHPUnit_Framework_TestCase +class ResponseHeaderBagTest extends ClockMockTestCase { - protected function setUp() - { - with_clock_mock(true); - } - - protected function tearDown() - { - with_clock_mock(false); - } - /** * @covers Symfony\Component\HttpFoundation\ResponseHeaderBag::allPreserveCase * @dataProvider provideAllPreserveCase diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcacheSessionHandlerTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcacheSessionHandlerTest.php index e577fd07ae..3c5144d68e 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcacheSessionHandlerTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcacheSessionHandlerTest.php @@ -12,11 +12,12 @@ namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler; use Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcacheSessionHandler; +use Symfony\Component\HttpFoundation\Tests\ClockMockTestCase; /** * @requires extension memcache */ -class MemcacheSessionHandlerTest extends \PHPUnit_Framework_TestCase +class MemcacheSessionHandlerTest extends ClockMockTestCase { const PREFIX = 'prefix_'; const TTL = 1000; @@ -29,6 +30,7 @@ class MemcacheSessionHandlerTest extends \PHPUnit_Framework_TestCase protected function setUp() { + parent::setUp(); $this->memcache = $this->getMock('Memcache'); $this->storage = new MemcacheSessionHandler( $this->memcache, @@ -40,6 +42,7 @@ class MemcacheSessionHandlerTest extends \PHPUnit_Framework_TestCase { $this->memcache = null; $this->storage = null; + parent::tearDown(); } public function testOpenSession() diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php index b273b66c72..d29ab4b00b 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MemcachedSessionHandlerTest.php @@ -12,11 +12,12 @@ namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler; use Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler; +use Symfony\Component\HttpFoundation\Tests\ClockMockTestCase; /** * @requires extension memcached */ -class MemcachedSessionHandlerTest extends \PHPUnit_Framework_TestCase +class MemcachedSessionHandlerTest extends ClockMockTestCase { const PREFIX = 'prefix_'; const TTL = 1000; @@ -30,6 +31,8 @@ class MemcachedSessionHandlerTest extends \PHPUnit_Framework_TestCase protected function setUp() { + parent::setUp(); + if (version_compare(phpversion('memcached'), '2.2.0', '>=')) { $this->markTestSkipped('Tests can only be run with memcached extension 2.1.0 or lower'); } @@ -45,6 +48,7 @@ class MemcachedSessionHandlerTest extends \PHPUnit_Framework_TestCase { $this->memcached = null; $this->storage = null; + parent::tearDown(); } public function testOpenSession() diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php index 21789129b4..7634fea49c 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/MongoDbSessionHandlerTest.php @@ -12,12 +12,13 @@ namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler; use Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler; +use Symfony\Component\HttpFoundation\Tests\ClockMockTestCase; /** * @author Markus Bachmann * @requires extension mongo */ -class MongoDbSessionHandlerTest extends \PHPUnit_Framework_TestCase +class MongoDbSessionHandlerTest extends ClockMockTestCase { /** * @var \PHPUnit_Framework_MockObject_MockObject @@ -28,6 +29,8 @@ class MongoDbSessionHandlerTest extends \PHPUnit_Framework_TestCase protected function setUp() { + parent::setUp(); + $mongoClass = version_compare(phpversion('mongo'), '1.3.0', '<') ? 'Mongo' : 'MongoClient'; $this->mongo = $this->getMockBuilder($mongoClass) diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php index c55d638d65..19de8ac731 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/PdoSessionHandlerTest.php @@ -12,16 +12,18 @@ namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler; use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler; +use Symfony\Component\HttpFoundation\Tests\ClockMockTestCase; /** * @requires extension pdo_sqlite */ -class PdoSessionHandlerTest extends \PHPUnit_Framework_TestCase +class PdoSessionHandlerTest extends ClockMockTestCase { private $pdo; protected function setUp() { + parent::setUp(); $this->pdo = new \PDO('sqlite::memory:'); $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $sql = 'CREATE TABLE sessions (sess_id VARCHAR(128) PRIMARY KEY, sess_data TEXT, sess_time INTEGER)'; diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/MetadataBagTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/MetadataBagTest.php index c2363bb31e..b7f4b3c8b4 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/MetadataBagTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/MetadataBagTest.php @@ -12,11 +12,12 @@ namespace Symfony\Component\HttpFoundation\Tests\Session\Storage; use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; +use Symfony\Component\HttpFoundation\Tests\ClockMockTestCase; /** * Test class for MetadataBag. */ -class MetadataBagTest extends \PHPUnit_Framework_TestCase +class MetadataBagTest extends ClockMockTestCase { /** * @var MetadataBag @@ -30,6 +31,7 @@ class MetadataBagTest extends \PHPUnit_Framework_TestCase protected function setUp() { + parent::setUp(); $this->bag = new MetadataBag(); $this->array = array(MetadataBag::CREATED => 1234567, MetadataBag::UPDATED => 12345678, MetadataBag::LIFETIME => 0); $this->bag->initialize($this->array); @@ -39,6 +41,7 @@ class MetadataBagTest extends \PHPUnit_Framework_TestCase { $this->array = array(); $this->bag = null; + parent::tearDown(); } public function testInitialize() From 0b59ba428dacead4d99d9bc11bd2f38cdfd5b8bf Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 10 Oct 2015 18:58:46 +0200 Subject: [PATCH 4/5] Fix merge --- .../Session/Storage/Handler/LegacyPdoSessionHandlerTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/LegacyPdoSessionHandlerTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/LegacyPdoSessionHandlerTest.php index a22db8a99c..4cedab0db9 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/LegacyPdoSessionHandlerTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/Session/Storage/Handler/LegacyPdoSessionHandlerTest.php @@ -12,6 +12,7 @@ namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler; use Symfony\Component\HttpFoundation\Session\Storage\Handler\LegacyPdoSessionHandler; +use Symfony\Component\HttpFoundation\Tests\ClockMockTestCase; /** * @group legacy From 57e253e92c5102bfa1dd30d22f6f3f1f182adb43 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Sat, 10 Oct 2015 19:05:26 +0200 Subject: [PATCH 5/5] [Filesystem] Fix test on Windows --- src/Symfony/Component/Filesystem/Tests/FilesystemTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php b/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php index ed5c1125e5..e0427e6ae8 100644 --- a/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php +++ b/src/Symfony/Component/Filesystem/Tests/FilesystemTest.php @@ -915,7 +915,7 @@ class FilesystemTest extends FilesystemTestCase $this->assertTrue(is_dir($targetPath)); $this->assertFileEquals($sourcePath.'/nested/file1.txt', $targetPath.DIRECTORY_SEPARATOR.'link1/file1.txt'); $this->assertTrue(is_link($targetPath.DIRECTORY_SEPARATOR.'link1')); - $this->assertEquals('nested', readlink($targetPath.DIRECTORY_SEPARATOR.'link1')); + $this->assertEquals('\\' === DIRECTORY_SEPARATOR ? realpath($sourcePath.'\nested') : 'nested', readlink($targetPath.DIRECTORY_SEPARATOR.'link1')); } /**