LoggerAppenderRollingFileTest fails due to realpath()=>false on nonexisting 
files
---------------------------------------------------------------------------------

                 Key: LOG4PHP-86
                 URL: https://issues.apache.org/jira/browse/LOG4PHP-86
             Project: Log4php
          Issue Type: Bug
          Components: Tests
            Reporter: Christian Hammers


The Unit-Tests failed for me and I figured out that it was caused by realpath() 
which returns false if the file does not already exist.
That was until PHP-5.3 not true for BSD, btw., which may also explain why it 
was no issue on MacOS computers...

--- src/main/php/appenders/LoggerAppenderRollingFile.php        (Revision 
814880)      
+++ src/main/php/appenders/LoggerAppenderRollingFile.php        (Arbeitskopie)  
       
@@ -130,7 +143,11 @@

        public function setFileName($fileName) {
                $this->fileName = $fileName;
-               $this->expandedFileName = realpath($fileName);
+               // As LoggerAppenderFile does not create the directory, it has 
to exist.
+               // realpath() fails if the argument does not exist so the 
filename is separated.
+               $this->expandedFileName = realpath(dirname($fileName));
+               if ($this->expandedFileName === false) throw new 
Exception("Directory of $fileName does not exist!");
+               $this->expandedFileName .= '/'.basename($fileName);
        }

I added the following test to 
src/test/php/appenders/LoggerAppenderRollingFileTest.php 

+    public function testSetFileName() {                                        
                              
+        $appender = new LoggerAppenderRollingFile("mylogger");                 
                              
+        
$appender->setFileName('target/temp/../././temp/phpunit/doesnotexist.log');     
                     
+        $expandedFileName = self::readAttribute($appender, 
'expandedFileName');                              
+        self::assertEquals(1, 
preg_match('/\/target\/temp\/phpunit\/doesnotexist.log$/', $expandedFileName));
+    }

expandedFileName is private and has no getter thus the ugly readAttribute()

bye,

-christian-

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to