summaryrefslogtreecommitdiff
path: root/t/014ConfErrs.t
diff options
context:
space:
mode:
Diffstat (limited to 't/014ConfErrs.t')
-rw-r--r--t/014ConfErrs.t252
1 files changed, 252 insertions, 0 deletions
diff --git a/t/014ConfErrs.t b/t/014ConfErrs.t
new file mode 100644
index 0000000..2e431d0
--- /dev/null
+++ b/t/014ConfErrs.t
@@ -0,0 +1,252 @@
+BEGIN {
+ if($ENV{INTERNAL_DEBUG}) {
+ require Log::Log4perl::InternalDebug;
+ Log::Log4perl::InternalDebug->enable();
+ }
+}
+
+use Log::Log4perl;
+use Test::More;
+
+$testfile = 't/tmp/test12.log';
+
+unlink $testfile if (-e $testfile);
+
+# *****************************************************
+# nonexistent appender class
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::FileAppenderx
+log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+};
+like($@, qr/ERROR: can't load appenderclass 'Log::Log4perl::Appender::FileAppenderx'/);
+
+
+# *****************************************************
+# nonexistent layout class
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::TestBuffer
+log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayoutx
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+};
+like($@, qr/ERROR: trying to set layout for myAppender to 'Log::Log4perl::Layout::SimpleLayoutx' failed/);
+
+# *****************************************************
+# nonexistent appender class containing a ';'
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::TestBuffer;
+log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+};
+like($@, qr/ERROR: can't load appenderclass 'Log::Log4perl::Appender::TestBuffer;'/);
+
+# *****************************************************
+# nonexistent layout class containing a ';'
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::TestBuffer
+log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout;
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+};
+like($@, qr/trying to set layout for myAppender to 'Log::Log4perl::Layout::SimpleLayout;' failed/);
+
+# *****************************************************
+# Relative Layout class
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::TestBuffer
+log4j.appender.myAppender.layout = SimpleLayout
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+};
+ # It's supposed to find it.
+is($@, '', 'relative layout class');
+
+# *****************************************************
+# bad priority
+$conf = <<EOL;
+log4j.category.simplelayout.test=xxINFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::File
+log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+
+};
+like($@, qr/level 'xxINFO' is not a valid error level/);
+
+# *****************************************************
+# nonsense conf file 1
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::Screen
+log4j.appender.myAppender.nolayout = Log::Log4perl::Layout::SimpleLayout
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+};
+like($@, qr/Layout not specified for appender myAppender at/,
+ "nonsense conf file 1");
+
+# *****************************************************
+# nonsense conf file 2
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::FileAppender
+log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout
+log4j.appender.myAppender = $testfile
+EOL
+
+eval{
+
+ Log::Log4perl->init(\$conf);
+
+};
+like($@, qr/log4j.appender.myAppender redefined/);
+
+
+
+# *****************************************************
+# never define an appender
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, XXmyAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::TestBuffer
+log4j.appender.myAppender.layout = Log::Log4perl::Layout::SimpleLayout
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+
+};
+like($@,
+ qr/ERROR: you didn't tell me how to implement your appender 'XXmyAppender'/);
+
+
+# *****************************************************
+# never define a layout
+$conf = <<EOL;
+log4j.category.simplelayout.test=INFO, myAppender
+
+log4j.appender.myAppender = Log::Log4perl::Appender::TestBuffer
+
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+
+};
+like($@, qr/Layout not specified for appender myAppender/, 'no layout defined');
+
+
+# ************************************
+# check continuation chars, this should parse fine
+$conf = <<EOL;
+log4j.category.simplelayout.test=\\
+ INFO, \\
+ myAppender
+
+log4j.appender.myAppender \\
+ = Log::Log4perl::Appender::TestBuffer
+ #this is stupid, I know
+log4j.appender.myAppender.layout = Log::Log4perl::Lay\\
+ out::SimpleL\\
+ ayout
+log4j.appender.myAppender.File = $testfile
+EOL
+
+eval{
+ Log::Log4perl->init(\$conf);
+
+};
+is($@,"");
+
+# *****************************************************
+# init_once
+# *****************************************************
+Log::Log4perl->reset();
+$conf = <<EOL;
+log4perl.category = INFO, myAppender
+
+log4perl.appender.myAppender = Log::Log4perl::Appender::TestBuffer
+log4perl.appender.myAppender.layout = SimpleLayout
+EOL
+
+Log::Log4perl->init_once(\$conf);
+my $logger = Log::Log4perl::get_logger("");
+$logger->error("foobar");
+$buffer = Log::Log4perl::Appender::TestBuffer->by_name("myAppender");
+
+#print "BUFFER: [", $buffer->buffer(), "]\n";
+is($buffer->buffer(),"ERROR - foobar\n");
+
+$conf = <<EOL;
+log4perl.category = FATAL, myAppender
+
+log4perl.appender.myAppender = Log::Log4perl::Appender::TestBuffer
+log4perl.appender.myAppender.layout = SimpleLayout
+EOL
+
+ # change config, call init_once(), which should ignore the new
+ # settings.
+$buffer->buffer("");
+Log::Log4perl->init_once(\$conf);
+$logger = Log::Log4perl::get_logger("");
+$logger->error("foobar");
+my $buffer = Log::Log4perl::Appender::TestBuffer->by_name("myAppender");
+
+#print "BUFFER: [", $buffer->buffer(), "]\n";
+is($buffer->buffer(),"ERROR - foobar\n");
+
+$conf = <<EOL;
+log4perl.logger.Foo.Bar = INFO, Screen
+log4perl.logger.Foo.Bar = INFO, Screen
+log4perl.appender.Screen = Log::Log4perl::Appender::TestBuffer
+log4perl.appender.Screen.layout = SimpleLayout
+EOL
+eval {
+ Log::Log4perl::init( \$conf );
+};
+like($@, qr/log4perl.logger.Foo.Bar redefined/);
+
+BEGIN { plan tests => 14, }
+
+END{
+ unlink $testfile if (-e $testfile);
+}
+