Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Separate file/directory/exists assertions #291

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

shadowhand
Copy link

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.

There is no need to use `file_exists` before using `is_file` and `is_dir`, this makes for confusing errors.
if (!\file_exists($value)) {
static::reportInvalidArgument(\sprintf(
$message ?: 'The file %s does not exist.',
$message ?: 'The path %s does not exist.',
Copy link
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
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
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
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
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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant