Author: jukka
Date: Thu Sep  1 17:37:53 2011
New Revision: 1164183

URL: http://svn.apache.org/viewvc?rev=1164183&view=rev
Log:
TIKA-687: Temporary file not removed after detection

Test case by Berry van Ginkel (with slight modifications)

Modified:
    
tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java

Modified: 
tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java?rev=1164183&r1=1164182&r2=1164183&view=diff
==============================================================================
--- 
tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java
 (original)
+++ 
tika/trunk/tika-parsers/src/test/java/org/apache/tika/detect/TestContainerAwareDetector.java
 Thu Sep  1 17:37:53 2011
@@ -16,6 +16,8 @@
  */
 package org.apache.tika.detect;
 
+import java.io.File;
+import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -96,6 +98,39 @@ public class TestContainerAwareDetector 
         assertDetect("testEXCEL.xlsb", 
"application/vnd.ms-excel.sheet.binary.macroEnabled.12");
     }
 
+    /**
+     * Check that temporary files created by Tika are removed after
+     * closing TikaInputStream.
+     */
+    public void testRemovalTempfiles() throws Exception {
+        assertRemovalTempfiles("testWORD.docx");
+        assertRemovalTempfiles("test-documents.zip");
+    }
+
+    private int countTemporaryFiles() {
+        return new File(System.getProperty("java.io.tmpdir")).listFiles(
+                new FilenameFilter() {
+                    public boolean accept(File dir, String name) {
+                        return name.startsWith("apache-tika-");
+                    }
+                }).length;
+    }
+
+    private void assertRemovalTempfiles(String fileName) throws Exception {
+        int numberOfTempFiles = countTemporaryFiles();
+
+        TikaInputStream stream = TikaInputStream.get(
+                TestContainerAwareDetector.class.getResource(
+                        "/test-documents/" + fileName));
+        try {
+            detector.detect(stream, new Metadata());
+        } finally {
+            stream.close();
+        }
+
+        assertEquals(numberOfTempFiles, countTemporaryFiles());
+    }
+
     public void testDetectIWork() throws Exception {
         assertDetect("testKeynote.key", "application/vnd.apple.keynote");
         assertDetect("testNumbers.numbers", "application/vnd.apple.numbers");


Reply via email to