Test::Clustericious::Config - Test Clustericious::Config
version 1.23
use Test::Clustericious::Config; use Clustericious::Config; use Test::More tets => 2; create_config_ok 'Foo', { url => 'http://localhost:1234' }; my $config = Clustericious::Config->new('Foo'); is $config->url, "http://localhost:1234";
To test against a Clustericious application MyApp:
use Test::Clustericious::Config; use Test::Clustericious; use Test::More tests => 3; create_config_ok 'MyApp', { x => 1, y => 2 }; my $t = Test::Clustericious->new('MyApp'); $t->get_ok('/'); is $t->app->config->x, 1;
To test against multiple Clustericious applications MyApp1, MyApp2 (can also be the same app with different config):
use Test::Clustericious::Config; use Test::Clustericious; use Test::More tests => 4; create_config_ok 'MyApp1', {}; my $t1 = Test::Clustericious->new('MyApp1'); $t1->get_ok('/'); create_config_ok 'MyApp2', { my_app1_url => $t1->app_url }; my $t2 = Test::Clustericious->new('MyApp2'); $t2->get_ok('/');
This module provides an interface for testing Clustericious configurations, or Clustericious applications which use a Clustericious configuration.
It uses File::HomeDir::Test to isolate your test environment from any configurations you may have in your ~/etc. Keep in mind that this means that $HOME and friends will be in a temporary directory and removed after the test runs. It also means that the caveats for File::HomeDir::Test apply when using this module as well (specifically this should be the first module that you use in your test after use strict and use warnings).
~/etc
$HOME
use strict
use warnings
create_config_ok $name, $config; create_config_ok $name, $config, $test_name;
Create a Clustericious config with the given $name. If $config is a reference then it will create the configuration file with YAML::XS::DumpFile, if it is a scalar, it will will write the scalar out to the config file. Thus these three examples should create a config with the same values (though in different formats):
$name
$config
YAML::XS::DumpFile
hash reference:
create_config_ok 'Foo', { url => 'http://localhost:1234' }];
YAML:
create_config_ok 'Foo', <<EOF; --- url: http://localhost:1234 EOF
JSON:
create_config_ok 'Foo', <<EOF; {"url":"http://localhost:1234"} EOF
In addition to being a test that will produce a ok/not ok result as output, this function will return the full path to the configuration file created.
create_directory_ok $path; create_directory_ok $path, $test_name;
Creates a directory in your test environment home directory. This directory will be recursively removed when your test terminates. This function returns the full path of the directory created.
home_directory_ok; home_directory_ok $test_name;
Tests that the temp home directory has been created okay. Returns the full path of the home directory.
create_config_helper_ok $helper_name, $helper_coderef; create_config_helper_ok $helper_name, $helper_coderef, $test_name;
Install a helper which can be called from within a configuration template. Example:
my $counter; create_config_helper_ok 'counter', sub { $counter++ }; create_config_ok 'MyApp', <<EOF; --- one: <%= counter %> two: <%= counter %> three: <% counter %> EOF
Here is an (abbreviated) example from Yars that show how to test against an app where you need to know the port/url of the app in the configuration file:
use Test::Mojo; use Test::More tests => 1; use Test::Clustericious::Config; use Mojo::UserAgent; use Yars; my $t = Test::Mojo->new; $t->ua(do { my $ua = Mojo::UserAgent->new; create_config_ok 'Yars', { url => $ua->app_url, servers => [ { url => $ua->app_url, } ] }; $ua->app(Yars->new); $ua }; $t->get_ok('/status');
To see the full tests see t/073_tempdir.t in the Yars distribution.
Original author: Brian Duggan
Current maintainer: Graham Ollis <plicease@cpan.org>
Contributors:
Curt Tilmes
This software is copyright (c) 2013 by NASA GSFC.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Clustericious, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Clustericious
CPAN shell
perl -MCPAN -e shell install Clustericious
For more information on module installation, please visit the detailed CPAN module installation guide.