The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Egg::Helper::O::Test::Prepare - A virtual project for the test is constructed.

SYNOPSIS

  use Egg::Helper;
  
  my $test= Egg::Helper->run('O::Test');
  
  my $run_modes= <<END_OF_RUNMODES;
   _default=> sub {},
   foo=> {
     qr/a(\d+)/=> sub { .... },
     { hoge=> 'POST' }=> \\\&MYPROJECT::D::Foo::hoge,
     },
  END_OF_RUNMODES
  
  $test->prepare(
    project_name => 'MyProject',
    config=> {
      title=> 'test project.',
      },
    include_path=> [qw( /path/perl-lib /path/lib )],
    controller => {
      egg=> [qw/-Debug PluginName/],
      },
    dispatch=> {
      extend_codes_first=> "use MYPROJECT::D::Foo;\n",
      run_modes=> $run_modes,
      },
    );

DESCRIPTION

The virtual project file is generated and this module is constructed.

The main method is 'prepare', and other 'prepare_*' is called according to the option to usually pass to 'prepare'.

METHODS

The methods other than 'prepare' need not be individually called usually.

prepare ([OPTION])

The work directory is temporarily made, the virtual project file is generated there, and the project environment for the test is constructed.

The following files are generated in default.

  /tmp/... /EggVirtual/lib/EggVirtual.pm
  /tmp/... /EggVirtual/lib/EggVirtual/config.pm
  /tmp/... /EggVirtual/lib/EggVirtual/D.pm
  /tmp/... /EggVirtual/bin/trigger.cgi
  /tmp/... /EggVirtual/bin/eggvirtual_helper.pl
  /tmp/... /EggVirtual/Makefile.PL
  /tmp/... /EggVirtual/Build.PL
  /tmp/... /EggVirtual/htdocs
  /tmp/... /EggVirtual/root
  /tmp/... /EggVirtual/comp
  /tmp/... /EggVirtual/tmp/uploads
  /tmp/... /EggVirtual/cache

It is possible to customize it by passing the option composed of HASH.

List of option.

  • project_name

    The project name is specified.

    Default becomes a name obtained with $test->project_name.

  • include_path

    The include passing can be set by the ARRAY reference.

    * It uses it to specify the include passing besides the project root.

  • config

    The configuration can be set by the HASH reference.

    * Necessary minimum configuration is set by default.

  • mason_ok

    Mason is used to set VIEW. Default is Template.

    If VIEW is set to config, this option doesn't have the meaning.

    * However, it stays in both cases in a rudimentary setting.

  • controller

    The setting to customize the controller file can be set by the HASH reference.

    • egg

      The module option to pass to Egg is set by the ARRAY reference. Please set the debugging flag and the plugin, etc.

        controller=> {
          egg=> [qw{ -Debug Filter Encode }],
          },
    • version

      It is a version of the controller file. Default is '0.01'.

    • extend_codes_first

      The script code of the first stage of the controller file is given by the text. I think that it becomes a code for the module to want to read and the module to want to succeed to usually.

        my $ctl_code_first= <<END_OF_CODE;
        use Unicode::Japanise;
        use base qw/MYPROJECT::BASE/;
        END_OF_CODE
        
        controller=> {
          extend_codes_first=> $ctl_code_first,
          },
    • extend_codes

      The script code in the latter half of the controller file is given by the text.

        my $ctl_code= <<END_OF_CODE;
        sub create_encode {
              my(\$e)= \@_;
              Unicode::Japanise->new;
        }
        END_OF_CODE
        
        controller=> {
          extend_codes=> $ctl_code,
          },
  • dispatch

    The setting to customize dispatch can be set by the HASH reference.

    • run_modes

      The setting of __PACKAGE__->run_modes can be set in the text. Please note that it is not HASH. Moreover, please describe the part in parentheses of __PACKAGE__->run_modes( );.

        my $run_modes= <<END_OF_RUNMODE;
          _default=> sub {},
          foge=> {
            { foo=> 'GET'  }=> \\\&foo,
            { boo=> 'POST' }=> \\\&MYPROJECT::D::CUSTOM::boo,
            },
        END_OF_RUNMODE
        
        dispatch=> {
          run_modes=> $run_modes,
          },
    • default_mode

      The value given to __PACKAGE__->default_mode can be set.

        dispatch=> {
          default_mode=> '_index',
          },
    • mode_param

      The value given to __PACKAGE__->mode_param can be set.

        dispatch=> {
          mode_param=> 'mode',
          },
    • extend_codes_first

      The script code of the first stage of dispatch is given by the text.

        my $dispat_code_first= <<END_OF_CODE;
        use MYPROJECT::D::CUSTOM;
        END_OF_CODE
        
        dispatch=> {
          extend_codes_first=> $dispat_code_first,
          },
    • extend_codes

      The script code in the latter half of dispatch is given by the text.

        my $dispat_code= <<END_OF_CODE;
        sub foo {
              my(\$dispat, \$e)= \@_;
              \$e->response->body('is foo page.');
        }
        END_OF_CODE
  • create_files

    To make a file besides the file made from default, data is given by the ARRAY reference. Please set each value of ARRAY by the form given to $test->save_file.

    After it moves to project_root, the file is made. Therefore, filename can be specified by the relative path. Moreover, $test->conv is substituted.

      my $file_value= <<END_OF_VALUE;
      package <# project_name #>::D::CUSTOM;
      use strict;
      sub boo {
            my(\$dispat, \$e)= \@_;
            \$e->response->body('is boo.');
      }
      END_OF_VALUE
      
      create_files=> [
        {
          filename=> 'lib/<# project_name #>/D/CUSTOM.pm',
          value=> $file_value,
          },
        ],

prepare_controller

It sets it concerning the controller.

prepare_include_path

The ink route passing is set.

prepare_egg

The module option of Egg is set.

prepare_dispatch

It sets it concerning dispatch.

prepare_config

It sets it concerning the configuration.

SEE ALSO

Egg::Helper::O::Test, Egg::Release,

AUTHOR

Masatoshi Mizuno, <lushe@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2007 Bee Flag, Corp. <http://egg.bomcity.com/>, All Rights Reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.