Here's the diff for the TestCase 'inline'.
It should be applied in
contrib\analyzers\src\test\org\apache\lucene\analysis

The failure in the Russian Analyzer is unrelated (I updated all sources
to HEAD i.e. 153399 to be sure) but you probably need the Russian fonts
to see the error: unicode expected:<?????????> but was:<???????????>

I wasn't aware that attachments are blocked (I should have guessed
though)
I'll use bugzilla in the future...



Index: TestKeywordAnalyzer.java
===================================================================
--- TestKeywordAnalyzer.java    (revision 153379)
+++ TestKeywordAnalyzer.java    (working copy)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import java.io.StringReader;
 import junit.framework.TestCase;
 import org.apache.lucene.index.IndexWriter;
 import org.apache.lucene.store.RAMDirectory;
@@ -60,4 +61,28 @@
               "+partnum:Q36 +space", query.toString("description"));
     assertEquals("doc found!", 1, hits.length());
   }
+  
+  public void testKeywordAnalyzerClosesStream() throws Exception {
+    // This test doesn't need the setup(), but it won't hurt either
+    ReaderClosedHelper keywordReader=new ReaderClosedHelper(new
StringReader("Illidium Space Modulator"));
+    
+    KeywordAnalyzer keywordAnalyzer=new KeywordAnalyzer();
+    
+    TokenStream tokenStream=keywordAnalyzer.tokenStream("test",
keywordReader);
+    
+    while (tokenStream.next()!=null) {
+      // discard all tokens
+    }
+    
+    tokenStream.close(); // This should be passed on to the
keywordReader
+    
+    assertTrue("Reader wasn't closed!", keywordReader.isClosed());
+    
+    try {
+      tokenStream.close();
+      fail("ReaderClosedHelper should throw IllegalStateException on
double close!");
+    } catch (IllegalStateException ise) {
+      // ok, ignore
+    }
+  }
 }
Index: ReaderClosedHelper.java
===================================================================
--- ReaderClosedHelper.java     (revision 0)
+++ ReaderClosedHelper.java     (revision 0)
@@ -0,0 +1,55 @@
+package org.apache.lucene.analysis;
+
+/**
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.FilterReader;
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ * A helper class for tests that check if a reader was properly closed.
+ * Usage:
+ * <pre>
+ *   Reader reader=... // your own reader class
+ *   reader=new ReaderClosedHelper(reader); // filter all access
through a ReaderClosedHelper instance
+ *   ... normal processing that should implicitly close the reader
+ *   assertTrue("Reader wasn't closed!", reader.isClosed());
+ * </pre>
+ */
+public class ReaderClosedHelper extends FilterReader {
+  public ReaderClosedHelper(Reader in) {
+    super(in);
+    this.closed=false;
+  }
+  
+  public void close() throws IOException {
+    if (closed) {
+      throw new IllegalStateException("Reader was already closed!");
+    }
+    else {
+      // TODO: Store parts of the
Thread.currentThread().getStackTrace() here to use in the
IllegalStateException above.
+      closed=true;
+      super.close();
+    }
+  }
+  
+  public boolean isClosed() {
+    return closed;
+  }
+  
+  private boolean closed;
+}

Property changes on: ReaderClosedHelper.java
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to