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");