Collection of assertions about filesystem objects

1.1.1 2023-08-05 04:16 UTC

This package is auto-updated.

Last update: 2023-09-10 02:03:05 UTC


This is a small collection PHPUnit assertions for testing filesystem entries. It is meant to compliment the assertions already built into PHPunit.

Latest Stable Version Required PHP Version License Acceptance Test Status Code Coverage

Table of Contents


Use Composer to install the current version of PHPUnit Filesystem Asserts from Packagist.

composer require --dev bebat/filesystem-assertions

The easiest way to add these assertions to your test case(s) is using a trait:


use BeBat\FilesystemAssertions\FilesystemAssertionsTrait;
use PHPUnit\Framework\TestCase;

class SomeTest extends TestCase
    use FilesystemAssertionsTrait;

    // ...

Available Assertions

// Assert that $directory contains one or more files.
assertDirectoryContainsFiles(string $directory, array $files, string $message = '');
assertDirectoryDoesNotContainFiles(string $directory, array $files, string $message = '')

// Assert that $file is owned by a user ID or name.
assertFileHasUserId(string $file, int $uid, string $message = '')
assertFileHasUser(string $file, string $user, string $message = '')
assertFileDoesNotHaveUserId(string $file, int $uid, string $message = '')
assertFileDoesNotHaveUser(string $file, string $user, string $message = '')

// Assert that $file has a group ID or name.
assertFileHasGroupId(string $file, int $gid, string $message = '')
assertFileHasGroup(string $file, string $group, string $message = '')
assertFileDoesNotHaveGroupId(string $file, int $gid, string $message = '')
assertFileDoesNotHaveGroup(string $file, string $group, string $message = '')

// Assert that $path is a regular file.
assertIsFile(string $path, string $message = '')
assertIsNotFile(string $path, string $message = '')

// Assert that $file is a symbolic link.
assertFileIsLink(string $file, string $message = '')
assertFileIsNotLink(string $file, string $message = '')

// Assert that $file is executable.
assertFileIsExecutable(string $file, string $message = '')
assertFileIsNotExecutable(string $file, string $message = '')

// Assert that $file is a symbolic link and points to $target.
assertSymbolicLinkPointsTo(string $file, string $target, string $message = '')
assertSymbolicLinkDoesNotPointTo(string $file, string $target, string $message = '')

// Assert that $file's permissions are exactly an octal string (or integer).
assertFilePermissionsEqual(string $file, $perms, string $message = '')
assertFilePermissionsDoNotEqual(string $file, $perms, string $message = '')

// Assert that $file's permissions MATCH an octal string (or integer).
// For example, if a file has permissions 755, 644 would match but 422 would NOT.
assertFilePermissionsMatch(string $file, $perms, string $message = '')
assertFilePermissionsDoNotMatch(string $file, $perms, string $message = '')