[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
}