[lang-ref] ( remove_directory ) ( php )
<?php
#[WithoutErrorHandler]
public function testRemoveDirectory(): void
{
// rmdir($path)
mkdir('dir1');
$this->assertTrue(is_dir('dir1'));
rmdir('dir1'); // ok when directory is empty
$this->assertFalse(is_dir('dir1'));
mkdir('dir2');
mkdir('dir2/sub1');
set_error_handler(
static function (int $errno, string $errstr) use (&$captured): bool {
$captured = [$errno, $errstr];
return true; // mark as handled (for test)
},
E_WARNING
);
try {
rmdir('dir2');
} finally {
restore_error_handler();
}
$this->assertTrue(is_dir('dir2/sub1')); // ensure not removed
$this->assertTrue(is_dir('dir2'));
$this->assertSame(E_WARNING, $captured[0]); // warning occurred
$this->assertStringContainsString('Directory not empty', $captured[1]); // warning message
}