use strict; use warnings; use lib 't/lib'; use App::Cmd::Tester; use Data::Dumper; use Footprintless; use File::Basename; use File::Spec; use Test::More tests => 4; BEGIN { use_ok('Footprintless::App') } eval { require Getopt::Long; Getopt::Long::Configure( 'pass_through', 'bundling' ); my $level = 'error'; Getopt::Long::GetOptions( 'log:s' => \$level ); require Log::Any::Adapter; Log::Any::Adapter->set( '+Footprintless::Test::Log::Any::Adapter::Handle', handle => \*STDOUT, log_level => Log::Any::Adapter::Util::numeric_level($level) ); }; my $logger = Log::Any->get_logger(); $logger->trace("All logging sent to stderr to avoid conflict with output"); my $test_dir = dirname( File::Spec->rel2abs($0) ); $ENV{FPL_CONFIG_DIRS} = File::Spec->catdir( $test_dir, 'config', 'entities' ); $ENV{FPL_CONFIG_PROPS} = File::Spec->catfile( $test_dir, 'config', 'properties.pl' ) . ( ( $^O eq 'MSWin32' ) ? ';' : ':' ) . File::Spec->catfile( $test_dir, 'config', 'environment.pl' ); is( test_app( 'Footprintless::App' => [ 'config', 'dev.foo.site', '--format', 'dumper0' ] ) ->stdout(), "\$VAR1 = '';", 'dev.foo.site empty string' ); is( test_app( 'Footprintless::App' => [ 'config', 'dev.foo.overlay.os', '--format', 'dumper0' ] ) ->stdout(), "\$VAR1 = 'linux';", 'dev.foo.overlay.os = linux' ); is( test_app( 'Footprintless::App' => [ 'config', 'dev.foo.logs', '--format', 'json2' ] ) ->stdout(), '{"catalina":"/opt/pastdev/foo-tomcat/logs/catalina.out"}', 'json dev.piab = {...}' );