Skip to content

Commit

Permalink
fix bug where Morbo would not ignore hidden files (closes #934)
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Mar 15, 2016
1 parent 74c5b05 commit fce71fa
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 8 deletions.
7 changes: 5 additions & 2 deletions Changes
@@ -1,6 +1,9 @@

6.56 2016-03-12
- Fixed keep-alive bug. (jberger)
6.56 2016-03-16
- Added hidden option to list_files method in Mojo::Home. (batman, sri)
- Added hidden option to files function in Mojo::Util. (batman, sri)
- Fixed bug where Morbo would not ignore hidden files. (batman, sri)
- Fixed keep-alive bug in Mojo::UserAgent. (jberger)

6.55 2016-03-08
- Deprecated Mojo::Server::Morbo::check in favor of
Expand Down
17 changes: 15 additions & 2 deletions lib/Mojo/Home.pm
Expand Up @@ -38,9 +38,9 @@ sub lib_dir {
}

sub list_files {
my ($self, $dir) = (shift, shift // '');
my ($self, $dir, $options) = (shift, shift // '', shift);
$dir = catdir @{$self->parts}, split('/', $dir);
return [map { join '/', splitdir abs2rel($_, $dir) } files $dir];
return [map { join '/', splitdir abs2rel($_, $dir) } files $dir, $options];
}

sub mojo_lib_dir { catdir dirname(__FILE__), '..' }
Expand Down Expand Up @@ -111,12 +111,25 @@ Path to C<lib> directory of application.
my $files = $home->list_files;
my $files = $home->list_files('foo/bar');
my $files = $home->list_files('foo/bar', {hidden => 1});
Portably list all files recursively in directory relative to the home directory.
# List layouts
say for @{$home->list_files('templates/layouts')};
These options are currently available:
=over 2
=item hidden
hidden => 1
Include hidden files and directories.
=back
=head2 mojo_lib_dir
my $path = $home->mojo_lib_dir;
Expand Down
20 changes: 19 additions & 1 deletion lib/Mojo/Util.pm
Expand Up @@ -127,10 +127,15 @@ sub dumper {
sub encode { _encoding($_[0])->encode("$_[1]") }

sub files {
my $dir = shift;
my ($dir, $options) = (shift, shift // {});

# This may break in the future, but is worth it for performance
local $File::Find::skip_pattern = qr/^\./ unless $options->{hidden};

my @files;
my $wanted = sub { -d $File::Find::name or push @files, $File::Find::name };
find {wanted => $wanted, no_chdir => 1}, $dir if -d $dir;

return sort @files;
}

Expand Down Expand Up @@ -586,12 +591,25 @@ Encode characters to bytes.
=head2 files
my @files = files '/tmp/uploads';
my @files = files '/tmp/uploads', {hidden => 1};
List all files recursively in a directory.
# List all templates
say for files '/home/sri/myapp/templates';
These options are currently available:
=over 2
=item hidden
hidden => 1
Include hidden files and directories.
=back
=head2 hmac_sha1_sum
my $checksum = hmac_sha1_sum $bytes, 'passw0rd';
Expand Down
9 changes: 6 additions & 3 deletions t/mojo/home.t
Expand Up @@ -50,13 +50,16 @@ is $home->rel_dir('foo/bar'), catdir(splitdir($FindBin::Bin), 'foo', 'bar'),
# List files
is_deeply $home->list_files('lib/does_not_exist'), [], 'no files';
is_deeply $home->list_files('lib/myapp.pl'), [], 'no files';
my $files = [
my @files = (
'BaseTest/Base1.pm', 'BaseTest/Base2.pm',
'BaseTest/Base3.pm', 'DeprecationTest.pm',
'LoaderException.pm', 'LoaderException2.pm',
'LoaderTest/A.pm', 'LoaderTest/B.pm',
'LoaderTest/C.pm'
];
is_deeply $home->list_files('lib/Mojo'), $files, 'right files';
);
is_deeply $home->list_files('lib/Mojo'), \@files, 'right files';
my @hidden = ('.hidden.txt', '.test/hidden.txt');
is_deeply $home->list_files('lib/Mojo', {hidden => 1}), [@hidden, @files],
'right files';

done_testing();
Empty file added t/mojo/lib/Mojo/.hidden.txt
Empty file.
Empty file.
1 change: 1 addition & 0 deletions t/mojo/morbo.t
Expand Up @@ -119,6 +119,7 @@ is_deeply $morbo->modified_files, [], 'directory has not changed';
my @new = map { catfile $subdir, "$_.txt" } qw/test testing/;
spurt 'whatever', $_ for @new;
is_deeply $morbo->modified_files, \@new, 'two files have changed';
spurt 'whatever', catfile($subdir, '.hidden.txt');
is_deeply $morbo->modified_files, [], 'directory has not changed again';

# Stop
Expand Down
3 changes: 3 additions & 0 deletions t/mojo/util.t
Expand Up @@ -423,6 +423,9 @@ my @files = map { catfile $lib, split '/' } (
'LoaderTest/C.pm'
);
is_deeply [map { catfile splitdir $_ } files $lib], \@files, 'right files';
my @hidden = map { catfile $lib, split '/' } '.hidden.txt', '.test/hidden.txt';
is_deeply [map { catfile splitdir $_ } files $lib, {hidden => 1}],
[@hidden, @files], 'right files';

# steady_time
like steady_time, qr/^[\d.]+$/, 'high resolution time';
Expand Down

0 comments on commit fce71fa

Please sign in to comment.