Author: chammers
Date: Tue Oct  6 18:21:46 2009
New Revision: 822402

URL: http://svn.apache.org/viewvc?rev=822402&view=rev
Log:
* Improved error handling if the logfile cannot be created.
* Added corresponding unit test
* Replaced all those ../../../ by an instance var



Modified:
    incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php
    
incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderRollingFileTest.php

Modified: 
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php?rev=822402&r1=822401&r2=822402&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php 
(original)
+++ 
incubator/log4php/trunk/src/main/php/appenders/LoggerAppenderRollingFile.php 
Tue Oct  6 18:21:46 2009
@@ -147,7 +147,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);
        }
 
 

Modified: 
incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderRollingFileTest.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderRollingFileTest.php?rev=822402&r1=822401&r2=822402&view=diff
==============================================================================
--- 
incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderRollingFileTest.php
 (original)
+++ 
incubator/log4php/trunk/src/test/php/appenders/LoggerAppenderRollingFileTest.php
 Tue Oct  6 18:21:46 2009
@@ -24,19 +24,18 @@
  */
 
 class LoggerAppenderRollingFileTest extends PHPUnit_Framework_TestCase {
-     
+    /** Directory for temporary files.
+     * 
+     * @var string
+     */
+    private $dir;
+    
     protected function setUp() {
-        if(file_exists('../../../target/temp/phpunit/TEST-rolling.txt')) {
-               unlink('../../../target/temp/phpunit/TEST-rolling.txt');
-       }
-       
-       if(file_exists('../../../target/temp/phpunit/TEST-rolling.txt.1')) {
-               unlink('../../../target/temp/phpunit/TEST-rolling.txt.1');
-       }
-       
-       if(file_exists('../../../target/temp/phpunit/TEST-rolling.txt.2')) {
-               unlink('../../../target/temp/phpunit/TEST-rolling.txt.2');
-       }
+        $this->dir = dirname(__FILE__) . '/../../../../target/phpunit';
+        @mkdir($this->dir);
+        @unlink($this->dir.'/TEST-rolling.txt');
+       @unlink($this->dir.'/TEST-rolling.txt.1');
+        @unlink($this->dir.'/TEST-rolling.txt.2');
     }
     
     public function testMaxFileSize() {
@@ -73,16 +72,23 @@
        self::assertEquals($e, '1048576');
     }  
     
+    public function testSetFileName() {
+        $appender = new LoggerAppenderRollingFile("mylogger"); 
+        $appender->setFileName($this->dir.'/../././phpunit/doesnotexist.log');
+        $expandedFileName = self::readAttribute($appender, 'expandedFileName');
+        self::assertEquals(1, 
preg_match('/\/target\/phpunit\/doesnotexist.log$/', $expandedFileName));
+    }
+    
     public function testSimpleLogging() {
        $layout = new LoggerLayoutSimple();
        
        $appender = new LoggerAppenderRollingFile("mylogger"); 
-               
$appender->setFileName('../../../target/temp/phpunit/TEST-rolling.txt');
+               $appender->setFileName($this->dir.'/TEST-rolling.txt');
                $appender->setLayout($layout);
                $appender->setMaximumFileSize('1KB');
                $appender->setMaxBackupIndex(2);
                $appender->activateOptions();
-               
+        
        $event = new LoggerLoggingEvent('LoggerAppenderFileTest', 
                                                                        new 
Logger('mycategory'), 
                                                                        
LoggerLevel::getLevelWarn(),
@@ -106,13 +112,13 @@
                
                $appender->close();
                
-               $file = '../../../target/temp/phpunit/TEST-rolling.txt';
+               $file = $this->dir.'/TEST-rolling.txt';
                $data = file($file);
                $line = $data[count($data)-1];
                $e = "WARN - my messageXYZ".PHP_EOL;
                self::assertEquals($e, $line);
                
-               $file = '../../../target/temp/phpunit/TEST-rolling.txt.1';
+               $file = $this->dir.'/TEST-rolling.txt.1';
                $data = file($file);
                $line = $data[count($data)-1];
                $e = "WARN - my message123".PHP_EOL;
@@ -120,7 +126,7 @@
                        self::assertEquals($e, $r);
                }
                
-               $file = '../../../target/temp/phpunit/TEST-rolling.txt.2';
+               $file = $this->dir.'/TEST-rolling.txt.2';
                $data = file($file);
                $line = $data[count($data)-1];
                $e = "WARN - my message123".PHP_EOL;
@@ -128,21 +134,16 @@
                        self::assertEquals($e, $r);
                }
                
-               
if(file_exists('../../../target/temp/phpunit/TEST-rolling.txt.3')) {
+               if(file_exists($this->dir.'/TEST-rolling.txt.3')) {
                    self::assertTrue(false);
                }
     }
      
     protected function tearDown() {
-       if(file_exists('../../../target/temp/phpunit/TEST-rolling.txt')) {
-               unlink('../../../target/temp/phpunit/TEST-rolling.txt');
-       }
-       if(file_exists('../../../target/temp/phpunit/TEST-rolling.txt.1')) {
-               unlink('../../../target/temp/phpunit/TEST-rolling.txt.1');
-       }
-       if(file_exists('../../../target/temp/phpunit/TEST-rolling.txt.2')) {
-               unlink('../../../target/temp/phpunit/TEST-rolling.txt.2');
-       }
-//        rmdir('../../../target/temp/phpunit');
+       @unlink($this->dir.'/TEST-rolling.txt');
+       @unlink($this->dir.'/TEST-rolling.txt.1');
+       @unlink($this->dir.'/TEST-rolling.txt.2');
+        @rmdir($this->dir);
     }
+    
 }


Reply via email to