function FileDeleteRecursiveTest::testSymlinksInDirectoryViaStreamWrappers

Tests symlinks in directories do not result in unexpected deletions.

File

core/tests/Drupal/KernelTests/Core/File/FileDeleteRecursiveTest.php, line 104

Class

FileDeleteRecursiveTest
Tests the unmanaged file delete recursive function.

Namespace

Drupal\KernelTests\Core\File

Code

public function testSymlinksInDirectoryViaStreamWrappers() : void {
    // Create files to link to.
    mkdir($this->siteDirectory . '/files/dir1');
    touch($this->siteDirectory . '/files/dir1/test1.txt');
    touch($this->siteDirectory . '/files/test2.txt');
    // Create directory to be deleted.
    mkdir($this->siteDirectory . '/files/dir2');
    // Symlink to a directory outside dir2.
    symlink(realpath($this->siteDirectory . '/files/dir1'), $this->siteDirectory . '/files/dir2/subdir');
    // Symlink to a file outside dir2.
    symlink(realpath($this->siteDirectory . '/files/test2.txt'), $this->siteDirectory . '/files/dir2/test2.text');
    $this->assertFileExists($this->siteDirectory . '/files/dir2/subdir/test1.txt');
    $this->assertFileExists($this->siteDirectory . '/files/dir2/test2.text');
    // Use the stream wrapper to delete.
    $this->container
        ->get('file_system')
        ->deleteRecursive('public://dir2');
    $this->assertFileExists($this->siteDirectory . '/files/dir1/test1.txt');
    $this->assertFileExists($this->siteDirectory . '/files/test2.txt');
    $this->assertDirectoryDoesNotExist($this->siteDirectory . '/files/dir2');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.