123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- namespace Gaufrette\Functional\Adapter;
- use Gaufrette\Filesystem;
- use Gaufrette\Adapter\Local;
- use Gaufrette\Functional\LocalDirectoryDeletor;
- class LocalTest extends FunctionalTestCase
- {
- private $directory;
- public function setUp()
- {
- $this->directory = sprintf('%s/filesystem', str_replace('\\', '/', __DIR__));
- if (!file_exists($this->directory)) {
- mkdir($this->directory);
- }
- $this->filesystem = new Filesystem(new Local($this->directory));
- }
- public function tearDown()
- {
- $this->filesystem = null;
- LocalDirectoryDeletor::deleteDirectory($this->directory);
- }
- /**
- * @test
- * @group functional
- */
- public function shouldWorkWithSyslink()
- {
- if (strtolower(substr(PHP_OS, 0, 3)) === 'win') {
- $this->markTestSkipped('Symlinks are not supported on Windows.');
- }
- $dirname = sprintf(
- '%s/adapters/aaa',
- dirname(__DIR__)
- );
- $linkname = sprintf(
- '%s/adapters/../../../../link',
- dirname(__DIR__)
- );
- @mkdir($dirname);
- @unlink($linkname);
- symlink($dirname, $linkname);
- $this->filesystem = new Filesystem(new Local($linkname));
- $this->filesystem->write('test.txt', 'abc 123');
- $this->assertSame('abc 123', $this->filesystem->read('test.txt'));
- $this->filesystem->delete('test.txt');
- @unlink($linkname);
- @rmdir($dirname);
- }
- /**
- * @test
- * @covers Gaufrette\Adapter\Local
- * @group functional
- */
- public function shouldListingOnlyGivenDirectory()
- {
- $dirname = sprintf(
- '%s/localDir',
- $this->directory
- );
- @mkdir($dirname);
- $this->filesystem = new Filesystem(new Local($this->directory));
- $this->filesystem->write('aaa.txt', 'some content');
- $this->filesystem->write('localDir/test.txt', 'some content');
- $dirs = $this->filesystem->listKeys('localDir/test');
- $this->assertEmpty($dirs['dirs']);
- $this->assertCount(1, $dirs['keys']);
- $this->assertEquals('localDir/test.txt', $dirs['keys'][0]);
- $dirs = $this->filesystem->listKeys();
- $this->assertCount(1, $dirs['dirs']);
- $this->assertEquals('localDir', $dirs['dirs'][0]);
- $this->assertCount(2, $dirs['keys']);
- $this->assertEquals('aaa.txt', $dirs['keys'][0]);
- $this->assertEquals('localDir/test.txt', $dirs['keys'][1]);
- @unlink($dirname.DIRECTORY_SEPARATOR.'test.txt');
- @unlink($this->directory.DIRECTORY_SEPARATOR.'aaa.txt');
- @rmdir($dirname);
- }
- /**
- * @test
- * @covers Gaufrette\Adapter\Local
- * @group functional
- */
- public function shouldListingAllKeys()
- {
- $dirname = sprintf(
- '%s/localDir',
- $this->directory
- );
- @mkdir($dirname);
- $this->filesystem = new Filesystem(new Local($this->directory));
- $this->filesystem->write('aaa.txt', 'some content');
- $this->filesystem->write('localDir/dir1/dir2/dir3/test.txt', 'some content');
- $keys = $this->filesystem->keys();
- $dirs = $this->filesystem->listKeys();
- $this->assertCount(6, $keys);
- $this->assertCount(4, $dirs['dirs']);
- $this->assertEquals('localDir/dir1/dir2/dir3/test.txt', $dirs['keys'][1]);
- foreach ($dirs['keys'] as $item) {
- @unlink($item);
- }
- $reversed = array_reverse($dirs['dirs']);
- foreach ($reversed as $item) {
- @rmdir($item);
- }
- }
- /**
- * @test
- * @group functional
- */
- public function shouldBeAbleToClearCache()
- {
- $dirname = sprintf(
- '%s/adapters/bbb',
- dirname(__DIR__)
- );
- @mkdir($dirname);
- $this->filesystem = new Filesystem(new Local($dirname));
- $this->filesystem->get('test.txt', true);
- $this->filesystem->write('test.txt', '123', true);
- $this->filesystem->get('test2.txt', true);
- $this->filesystem->write('test2.txt', '123', true);
- $fsReflection = new \ReflectionClass($this->filesystem);
- $fsIsFileInRegister = $fsReflection->getMethod('isFileInRegister');
- $fsIsFileInRegister->setAccessible(true);
- $this->assertTrue($fsIsFileInRegister->invoke($this->filesystem, 'test.txt'));
- $this->filesystem->removeFromRegister('test.txt');
- $this->assertFalse($fsIsFileInRegister->invoke($this->filesystem, 'test.txt'));
- $this->filesystem->clearFileRegister();
- $fsRegister = $fsReflection->getProperty('fileRegister');
- $fsRegister->setAccessible(true);
- $this->assertCount(0, $fsRegister->getValue($this->filesystem));
- $this->filesystem->delete('test.txt');
- $this->filesystem->delete('test2.txt');
- @rmdir($dirname);
- }
- }
|