function FileTestBase::assertDirectoryPermissions
Same name in other branches
- 9 core/tests/Drupal/KernelTests/Core/File/FileTestBase.php \Drupal\KernelTests\Core\File\FileTestBase::assertDirectoryPermissions()
- 8.9.x core/tests/Drupal/KernelTests/Core/File/FileTestBase.php \Drupal\KernelTests\Core\File\FileTestBase::assertDirectoryPermissions()
- 11.x core/tests/Drupal/KernelTests/Core/File/FileTestBase.php \Drupal\KernelTests\Core\File\FileTestBase::assertDirectoryPermissions()
Helper function to test the permissions of a directory.
Parameters
$directory: String directory path.
$expected_mode: Octal integer like 0664 or 0777.
$message: Optional message.
2 calls to FileTestBase::assertDirectoryPermissions()
- DirectoryTest::testFileCheckDirectoryHandling in core/
tests/ Drupal/ KernelTests/ Core/ File/ DirectoryTest.php - Tests directory handling functions.
- DirectoryTest::testFileCheckLocalDirectoryHandling in core/
tests/ Drupal/ KernelTests/ Core/ File/ DirectoryTest.php - Tests local directory handling functions.
File
-
core/
tests/ Drupal/ KernelTests/ Core/ File/ FileTestBase.php, line 124
Class
- FileTestBase
- Provides file-specific assertions and helper functions.
Namespace
Drupal\KernelTests\Core\FileCode
public function assertDirectoryPermissions($directory, $expected_mode, $message = NULL) {
// Clear out PHP's file stat cache to be sure we see the current value.
clearstatcache(TRUE, $directory);
// Mask out all but the last three octets.
$actual_mode = fileperms($directory) & 0777;
$expected_mode = $expected_mode & 0777;
// PHP on Windows has limited support for file permissions. Usually each of
// "user", "group" and "other" use one octal digit (3 bits) to represent the
// read/write/execute bits. On Windows, chmod() ignores the "group" and
// "other" bits, and fileperms() returns the "user" bits in all three
// positions. $expected_mode is updated to reflect this.
if (str_starts_with(PHP_OS, 'WIN')) {
// Reset the "group" and "other" bits.
$expected_mode = $expected_mode & 0700;
// Shift the "user" bits to the "group" and "other" positions also.
$expected_mode = $expected_mode | $expected_mode >> 3 | $expected_mode >> 6;
}
if (!isset($message)) {
$message = sprintf('Expected directory permission to be %s, actually were %s.', decoct($expected_mode), decoct($actual_mode));
}
$this->assertEquals($expected_mode, $actual_mode, $message);
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.