From 6854d3359157e0486da24df107e80ced8d43e0b4 Mon Sep 17 00:00:00 2001 From: adlawson Date: Sat, 6 Sep 2014 14:24:45 +0100 Subject: [PATCH] Add `file_get_contents` acceptance tests Also includes tests for `file_put_contents`. --- phpunit.xml.dist | 4 +- .../FileGetContentsAcceptanceTest.php | 39 ++++++++++++++++ test/src/AcceptanceTestCase.php | 46 +++++++++++++++++++ 3 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 test/acceptance/Stream/StreamWrapper/FileGetContentsAcceptanceTest.php create mode 100644 test/src/AcceptanceTestCase.php diff --git a/phpunit.xml.dist b/phpunit.xml.dist index be5815a..de6065e 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -5,9 +5,9 @@ - + test/functional diff --git a/test/acceptance/Stream/StreamWrapper/FileGetContentsAcceptanceTest.php b/test/acceptance/Stream/StreamWrapper/FileGetContentsAcceptanceTest.php new file mode 100644 index 0000000..d4c565d --- /dev/null +++ b/test/acceptance/Stream/StreamWrapper/FileGetContentsAcceptanceTest.php @@ -0,0 +1,39 @@ + [ + 'bar' => 'baz' + ] + ]; + + public function testGetFile() + { + $this->assertEquals($this->tree['foo']['bar'], file_get_contents("$this->scheme://foo/bar")); + } + + public function testPutFile() + { + file_put_contents("$this->scheme://foo/bar", 'bar'); + + $this->assertEquals('bar', $this->fs->get('/foo/bar')->getContent()); + } + + public function testPutExistingFile() + { + file_put_contents("$this->scheme://foo/bar", '_updated'); + + $this->assertEquals('_updated', $this->fs->get('/foo/bar')->getContent()); + } + + public function testPutAppendExistingFile() + { + file_put_contents("$this->scheme://foo/bar", '_updated', FILE_APPEND); + + $this->assertEquals($this->tree['foo']['bar'] . '_updated', $this->fs->get('/foo/bar')->getContent()); + } +} diff --git a/test/src/AcceptanceTestCase.php b/test/src/AcceptanceTestCase.php new file mode 100644 index 0000000..387ade0 --- /dev/null +++ b/test/src/AcceptanceTestCase.php @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Vfs\Test; + +use PHPUnit_Framework_TestCase as TestCase; +use Vfs\FileSystemBuilder; +use Vfs\FileSystemInterface; + +class AcceptanceTestCase extends TestCase +{ + protected $fs; + protected $tree = []; + protected $scheme = 'vfs'; + protected $wrapperClass = 'Vfs\Stream\StreamWrapper'; + + public function setUp() + { + $this->fs = $this->buildFileSystem($this->wrapperClass); + } + + public function tearDown() + { + if (in_array($this->scheme, stream_get_wrappers())) { + $this->fs->unmount(); + } + } + + protected function buildFileSystem() + { + $builder = new FileSystemBuilder($this->scheme); + $builder->setStreamWrapper($this->wrapperClass); + $builder->setTree($this->tree); + + $fs = $builder->build(); + $fs->mount(); + + return $fs; + } +}