Skip to content

Separate file/directory/exists assertions #291

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 1 commit into from
Oct 16, 2024
Merged

Separate file/directory/exists assertions #291

merged 1 commit into from
Oct 16, 2024

Conversation

shadowhand
Copy link
Collaborator

There is no need to use file_exists before using is_file and is_dir, this makes for confusing errors. For instance, if you call Assert::directory('invalid/path') then the reported error will be:

The file "invalid/path" does not exist.

Additionally, the messages for these assertions were either technically or grammatically incorrect.

if (!\file_exists($value)) {
static::reportInvalidArgument(\sprintf(
$message ?: 'The file %s does not exist.',
$message ?: 'The path %s does not exist.',
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is technically incorrect, since file_exists is equivalent to:

return is_file($path) || is_dir($path);

@@ -1444,8 +1442,6 @@ public static function fileExists($value, $message = '')
*/
public static function file($value, $message = '')
{
static::fileExists($value, $message);
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a pointless check.

@@ -1462,11 +1458,9 @@ public static function file($value, $message = '')
*/
public static function directory($value, $message = '')
{
static::fileExists($value, $message);
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a pointless check. If the directory does not exist, the next assertion will never run. If the directory does exist, then it duplicates work.

if (!\is_dir($value)) {
static::reportInvalidArgument(\sprintf(
$message ?: 'The path %s is no directory.',
$message ?: 'The path %s is not a directory.',
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made this message consistent with Assert::file().

@@ -1426,11 +1426,9 @@ public static function lengthBetween($value, $min, $max, $message = '')
*/
public static function fileExists($value, $message = '')
{
static::string($value);
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see other assertions doing this, so I removed it.

There is no need to use `file_exists` before using `is_file` and `is_dir`, this makes for confusing errors.
@shadowhand shadowhand merged commit 781144a into webmozarts:master Oct 16, 2024
11 checks passed
@shadowhand shadowhand deleted the patch-1 branch October 16, 2024 14:18
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant