Skip to content

proofek/vfsStreamHelper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

vfsStreamHelper

MANUAL

Integration with PHPUnit

<?php

require_once 'vfsStreamHelper/Wrapper.php';

class MyClassTest extends PHPUnit_Framework_TestCase
{
    /**
     * - It will skip the test if vfsStream is not installed
     * - It will register vfsStream in default root directory called 'root'
     * - creates 'tmp' directory in root directory
     */
    public function testCreateDirectoryInDefaultRootDirectory()
    {
        $vfsStreamWrapper = new vfsStreamHelper_Wrapper($this);
        $vfsStreamWrapper->createDirectory("tmp");

        $this->assertFileExists(vfsStream::url('root/tmp'));
    }

    /**
     * - It will skip the test if vfsStream is not installed
     * - It will register vfsStream in default root directory called 'root'
     * - creates empty 'myFile.txt' file in root directory
     */
    public function testCreateEmptyFileInDefaultRootDirectory()
    {
        $vfsStreamWrapper = new vfsStreamHelper_Wrapper($this);
        $vfsStreamWrapper->createFile("myFile.txt");

        $this->assertFileExists(vfsStream::url('root/myFile.txt'));
    }

    /**
     * - It will skip the test if vfsStream is not installed
     * - It will register vfsStream in root directory called 'myDir'
     * - creates 'home' directory in root directory
     */
    public function testCreateDirectoryInCustomRootDirectory()
    {
        $vfsStreamWrapper = new vfsStreamHelper_Wrapper($this, 'myDir');
        $vfsStreamWrapper->createDirectory("home");

        $this->assertFileExists(vfsStream::url('myDir/home'));
    }

    /**
     * - It will skip the test if vfsStream is not installed
     * - It will register vfsStream in default root directory called 'root'
     * - creates directory in different possible ways
     */
    public function testDifferentWaysOfCreatingDirectories()
    {
        $vfsStreamWrapper = new vfsStreamHelper_Wrapper($this);

        // create a single directory
        $vfsStreamWrapper->createDirectory("tmp");

        $this->assertFileExists(vfsStream::url('root/tmp'));

        // create nested directories
        $vfsStreamWrapper->createDirectory("home/proofek/downloads");

        $this->assertFileExists(vfsStream::url('root/home'));
        $this->assertFileExists(vfsStream::url('root/home/proofek'));
        $this->assertFileExists(vfsStream::url('root/home/proofek/downloads'));

        // create a directory using vfsStreamHelper_Directory in default root
        $vfsStreamWrapper->createDirectory(new vfsStreamHelper_Directory('etc'));

        $this->assertFileExists(vfsStream::url('root/etc'));

        // create a directory using vfsStreamHelper_Directory in a subdirectory
        $vfsStreamWrapper->createDirectory(
            new vfsStreamHelper_Directory('init.d', 'etc')
        );

        $this->assertFileExists(vfsStream::url('root/etc/init.d'));

        // create multiple directories
        $vfsStreamWrapper->createDirectory(
            array(
                new vfsStreamHelper_Directory('user1', 'home'),
                new vfsStreamHelper_Directory('user2', 'home'),
                new vfsStreamHelper_Directory('usr'),
            )
        );

        $this->assertFileExists(vfsStream::url('root/home/user1'));
        $this->assertFileExists(vfsStream::url('root/home/user2'));
        $this->assertFileExists(vfsStream::url('root/usr'));
    }

    /**
     * - It will skip the test if vfsStream is not installed
     * - It will register vfsStream in default root directory called 'root'
     * - creates files in different possible ways
     */
    public function testDifferentWaysOfCreatingFiles()
    {
        $vfsStreamWrapper = new vfsStreamHelper_Wrapper($this);

        // create a single empty file in default root directory
        $vfsStreamWrapper->createFile("myFile.txt");

        $this->assertFileExists(vfsStream::url('root/myFile.txt'));
        $this->assertEquals('', file_get_content(vfsStream::url('root/myFile.txt')));

        // create a single empty file using vfsStreamHelper_File in default root
        $vfsStreamWrapper->createFile(
            new vfsStreamHelper_File('anotherFile.txt')
        );
        $this->assertFileExists(vfsStream::url('root/anotherFile.txt'));
        $this->assertEquals('', file_get_content(vfsStream::url('root/anotherFile.txt')));

        // create a single file with contents using vfsStreamHelper_File in default root
        $fileContent = "First line in the file\nSecond line in the file\n";
        $vfsStreamWrapper->createFile(
            new vfsStreamHelper_File('thirdFile.txt', $fileContent)
        );
        $this->assertFileExists(vfsStream::url('root/thirdFile.txt'));
        $this->assertEquals($fileContent, file_get_contents(vfsStream::url('root/thirdFile.txt')));

        // create a single file with contents using vfsStreamHelper_File in
        // a subdirectory
        $fileContent = "First line in the file\nSecond line in the file\n";
        $vfsStreamWrapper->createDirectory("tmp");
        $vfsStreamWrapper->createFile(
            new vfsStreamHelper_File('file.txt', $fileContent, 'tmp')
        );
        $this->assertFileExists(vfsStream::url('root/tmp/file.txt'));
        $this->assertEquals(
            $fileContent,
            file_get_contents(vfsStream::url('root/tmp/file.txt'))
        );

        // create multiple files
        $vfsStreamWrapper->createDirectory("etc");
        $vfsStreamWrapper->createFile(
            array(
                new vfsStreamHelper_File('file1.txt', 'some content', 'etc'),
                new vfsStreamHelper_File('file2.txt', null, 'etc'),
                new vfsStreamHelper_File('file3.txt'),
            )
        );

        $this->assertFileExists(vfsStream::url('root/etc/file1.txt'));
        $this->assertEquals(
            'some content',
            file_get_contents(vfsStream::url('root/etc/file1.txt'))
        );
        $this->assertFileExists(vfsStream::url('root/etc/file2.txt'));
        $this->assertEquals(
            '',
            file_get_contents(vfsStream::url('root/etc/file2.txt'))
        );
        $this->assertFileExists(vfsStream::url('root/file3.txt'));
        $this->assertEquals(
            '',
            file_get_contents(vfsStream::url('root/file3.txt'))
        );
    }
}
?>

CHANGELOG

vfsStreamHelper v0.1

  • Integration with PHPUnit - marks a test as skipped if vfsStream is not available/not installed
  • more flexible wrappers to control vfsDirectory and vfsFile creation

TODO

  • support for permissions
  • support for modes

About

vfsStream helper integrating nicely vfsStream with PHPUnit

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages