LockHandlerTest.php (2475B)
1 <?php 2 3 namespace Symfony\Component\Filesystem\Tests; 4 5 use Symfony\Component\Filesystem\LockHandler; 6 7 class LockHandlerTest extends \PHPUnit_Framework_TestCase 8 { 9 /** 10 * @expectedException \Symfony\Component\Filesystem\Exception\IOException 11 * @expectedExceptionMessage Failed to create "/a/b/c/d/e": mkdir(): Permission denied. 12 */ 13 public function testConstructWhenRepositoryDoesNotExist() 14 { 15 if (!getenv('USER') || 'root' === getenv('USER')) { 16 $this->markTestSkipped('This test will fail if run under superuser'); 17 } 18 new LockHandler('lock', '/a/b/c/d/e'); 19 } 20 21 /** 22 * @expectedException \Symfony\Component\Filesystem\Exception\IOException 23 * @expectedExceptionMessage The directory "/" is not writable. 24 */ 25 public function testConstructWhenRepositoryIsNotWriteable() 26 { 27 if (!getenv('USER') || 'root' === getenv('USER')) { 28 $this->markTestSkipped('This test will fail if run under superuser'); 29 } 30 new LockHandler('lock', '/'); 31 } 32 33 public function testConstructSanitizeName() 34 { 35 $lock = new LockHandler('<?php echo "% hello word ! %" ?>'); 36 37 $file = sprintf('%s/sf.-php-echo-hello-word-.4b3d9d0d27ddef3a78a64685dda3a963e478659a9e5240feaf7b4173a8f28d5f.lock', sys_get_temp_dir()); 38 // ensure the file does not exist before the lock 39 @unlink($file); 40 41 $lock->lock(); 42 43 $this->assertFileExists($file); 44 45 $lock->release(); 46 } 47 48 public function testLockRelease() 49 { 50 $name = 'symfony-test-filesystem.lock'; 51 52 $l1 = new LockHandler($name); 53 $l2 = new LockHandler($name); 54 55 $this->assertTrue($l1->lock()); 56 $this->assertFalse($l2->lock()); 57 58 $l1->release(); 59 60 $this->assertTrue($l2->lock()); 61 $l2->release(); 62 } 63 64 public function testLockTwice() 65 { 66 $name = 'symfony-test-filesystem.lock'; 67 68 $lockHandler = new LockHandler($name); 69 70 $this->assertTrue($lockHandler->lock()); 71 $this->assertTrue($lockHandler->lock()); 72 73 $lockHandler->release(); 74 } 75 76 public function testLockIsReleased() 77 { 78 $name = 'symfony-test-filesystem.lock'; 79 80 $l1 = new LockHandler($name); 81 $l2 = new LockHandler($name); 82 83 $this->assertTrue($l1->lock()); 84 $this->assertFalse($l2->lock()); 85 86 $l1 = null; 87 88 $this->assertTrue($l2->lock()); 89 $l2->release(); 90 } 91 }