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\FileCode
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.