Merge branch 'master' into psgi
Florian Ragwitz [Sun, 15 May 2011 16:32:54 +0000 (18:32 +0200)]
* master:
  Fix failing test - render_file_contents is expected to return the filename
  Changelog
  set permissions of script/*.pl to 0755
  allow changing permissions to 0000
  Fix RT#67303: -scripts changes permissions of original files
  Fix duplicate 'use Test::More' statement in generated components

1  2 
lib/Catalyst/Helper.pm

diff --combined lib/Catalyst/Helper.pm
@@@ -121,9 -121,10 +121,9 @@@ sub mk_app 
      my $gen_app = ( $self->{scripts} || $self->{makefile} ) ? 0 : 1;
  
      if ($gen_app) {
 -        for ( qw/ _mk_dirs _mk_config _mk_appclass _mk_rootclass _mk_readme
 -              _mk_changes _mk_apptest _mk_podtest _mk_podcoveragetest
 +        for ( qw/ _mk_dirs _mk_config _mk_psgi _mk_appclass _mk_rootclass
 +              _mk_readme _mk_changes _mk_apptest _mk_podtest _mk_podcoveragetest
                _mk_images _mk_favicon/ ) {
 -            
              $self->$_;
          }
      }
          $self->_mk_makefile;
      }
      if ($gen_scripts) {
 -        for ( qw/ _mk_cgi _mk_fastcgi _mk_server 
 +        for ( qw/ _mk_cgi _mk_fastcgi _mk_server
                    _mk_test _mk_create _mk_information
          / ) {
                $self->$_;
      return $self->{dir};
  }
  
 -## not much of this can really be changed, mk_compclass must be left for 
 +## not much of this can really be changed, mk_compclass must be left for
  ## backcompat
  sub mk_component {
      my $self = shift;
@@@ -271,7 -272,7 +271,7 @@@ sub mk_file 
          binmode $f;
          print $f $content;
          print qq/created "$file"\n/;
-         return 1;
+         return $file;
      }
  
      Catalyst::Exception->throw( message => qq/Couldn't create "$file", "$!"/ );
@@@ -302,20 -303,20 +302,20 @@@ sub next_test 
  ## compatability.  otherwise, we'd have no way to pass stuff from __DATA__
  
  sub render_file {
-     my ( $self, $file, $path, $vars ) = @_;
+     my ( $self, $file, $path, $vars, $perms ) = @_;
      my $template = $self->get_file( ( caller(0) )[0], $file );
-     $self->render_file_contents($template, $path, $vars);
+     $self->render_file_contents($template, $path, $vars, $perms);
  }
  
  sub render_sharedir_file {
-     my ( $self, $file, $path, $vars ) = @_;
+     my ( $self, $file, $path, $vars, $perms ) = @_;
      my $template = $self->get_sharedir_file( $file );
      die("Cannot get template from $file for $self\n") unless $template;
-     $self->render_file_contents($template, $path, $vars);
+     $self->render_file_contents($template, $path, $vars, $perms);
  }
  
  sub render_file_contents {
-     my ( $self, $template, $path, $vars ) = @_;
+     my ( $self, $template, $path, $vars, $perms ) = @_;
      $vars ||= {};
      my $t = Template->new;
      return 0 unless $template;
      $t->process( \$template, { %{$self}, %$vars }, \$output )
        || Catalyst::Exception->throw(
          message => qq/Couldn't process "$template", / . $t->error() );
-     $self->mk_file( $path, $output );
+     my $file = $self->mk_file( $path, $output );
+     chmod $perms, file($file) if defined $perms;
+     return $file;
  }
  
  sub _mk_information {
@@@ -399,14 -402,6 +401,14 @@@ sub _mk_makefile 
      }
  }
  
 +sub _mk_psgi {
 +    my $self      = shift;
 +    my $dir       = $self->{dir};
 +    my $appprefix = $self->{appprefix};
 +    $self->render_sharedir_file( 'myapp.psgi.tt',
 +        file( $dir, "$appprefix.psgi" ) );
 +}
 +
  sub _mk_config {
      my $self      = shift;
      my $dir       = $self->{dir};
@@@ -450,40 -445,40 +452,40 @@@ sub _mk_cgi 
      my $self      = shift;
      my $script    = $self->{script};
      my $appprefix = $self->{appprefix};
-     $self->render_sharedir_file( file('script', 'myapp_cgi.pl.tt'), file($script,"$appprefix\_cgi.pl") );
-     chmod 0700, file($script,"$appprefix\_cgi.pl");
+     $self->render_sharedir_file( file('script', 'myapp_cgi.pl.tt'),
+         file($script,"$appprefix\_cgi.pl"), undef, 0755 );
  }
  
  sub _mk_fastcgi {
      my $self      = shift;
      my $script    = $self->{script};
      my $appprefix = $self->{appprefix};
-     $self->render_sharedir_file( file('script', 'myapp_fastcgi.pl.tt'), file($script, "$appprefix\_fastcgi.pl") );
-     chmod 0700, file($script, "$appprefix\_fastcgi.pl");
+     $self->render_sharedir_file( file('script', 'myapp_fastcgi.pl.tt'),
+         file($script, "$appprefix\_fastcgi.pl"), undef, 0755 );
  }
  
  sub _mk_server {
      my $self      = shift;
      my $script    = $self->{script};
      my $appprefix = $self->{appprefix};
-     $self->render_sharedir_file( file('script', 'myapp_server.pl.tt'), file($script, "$appprefix\_server.pl") );
-     chmod 0700, file($script, "$appprefix\_server.pl");
+     $self->render_sharedir_file( file('script', 'myapp_server.pl.tt'),
+         file($script, "$appprefix\_server.pl"), undef, 0755 );
  }
  
  sub _mk_test {
      my $self      = shift;
      my $script    = $self->{script};
      my $appprefix = $self->{appprefix};
-     $self->render_sharedir_file( file('script', 'myapp_test.pl.tt'), file($script, "$appprefix\_test.pl") );
-     chmod 0700, file($script, "$appprefix\_test.pl");
+     $self->render_sharedir_file( file('script', 'myapp_test.pl.tt'),
+         file($script, "$appprefix\_test.pl"), undef, 0755 );
  }
  
  sub _mk_create {
      my $self      = shift;
      my $script    = $self->{script};
      my $appprefix = $self->{appprefix};
-     $self->render_sharedir_file( file('script', 'myapp_create.pl.tt'), file($script, "$appprefix\_create.pl") );
-     chmod 0700, file($script, "$appprefix\_create.pl");
+     $self->render_sharedir_file( file('script', 'myapp_create.pl.tt'),
+         file($script, "$appprefix\_create.pl"), undef, 0755 );
  }
  
  sub _mk_compclass {
@@@ -665,12 -660,13 +667,13 @@@ There is no fallback for this method
  These are the methods that the Helper classes can call on the
  <$helper> object passed to them.
  
- =head2 render_file ($file, $path, $vars)
+ =head2 render_file ($file, $path, $vars, $perms)
  
  Render and create a file from a template in DATA using Template
  Toolkit. $file is the relevent chunk of the __DATA__ section, $path is
- the path to the file and $vars is the hashref as expected by
- L<Template Toolkit|Template>.
+ the path to the file, $vars is the hashref as expected by
+ L<Template Toolkit|Template> and $perms are desired permissions (or system
+ defaults if not set).
  
  =head2 get_file ($class, $file)