Index: lucene/src/test/org/apache/lucene/TestExternalCodecs.java =================================================================== --- lucene/src/test/org/apache/lucene/TestExternalCodecs.java (revision 1065716) +++ lucene/src/test/org/apache/lucene/TestExternalCodecs.java (working copy) @@ -631,7 +631,8 @@ final int NUM_DOCS = 173; - Directory dir = newDirectory(); + MockDirectoryWrapper dir = newDirectory(); + dir.setCheckIndexOnClose(false); // we use a custom codec provider IndexWriter w = new IndexWriter( dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(MockTokenizer.WHITESPACE, true, true)). Index: lucene/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java (revision 1065716) +++ lucene/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java (working copy) @@ -983,7 +983,8 @@ // latest segments file and make sure we get an // IOException trying to open the index: public void testSimulatedCorruptIndex1() throws IOException { - Directory dir = newDirectory(); + MockDirectoryWrapper dir = newDirectory(); + dir.setCheckIndexOnClose(false); // we are corrupting it! IndexWriter writer = null; @@ -1030,8 +1031,8 @@ // files and make sure we get an IOException trying to // open the index: public void testSimulatedCorruptIndex2() throws IOException { - Directory dir = newDirectory(); - + MockDirectoryWrapper dir = newDirectory(); + dir.setCheckIndexOnClose(false); // we are corrupting it! IndexWriter writer = null; writer = new IndexWriter( Index: lucene/src/test/org/apache/lucene/index/TestIndexWriterMerging.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexWriterMerging.java (revision 1065716) +++ lucene/src/test/org/apache/lucene/index/TestIndexWriterMerging.java (working copy) @@ -66,7 +66,6 @@ writer.close(); fail = verifyIndex(merged, 0); - merged.close(); assertFalse("The merged index is invalid", fail); indexA.close(); Index: lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java =================================================================== --- lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java (revision 1065716) +++ lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java (working copy) @@ -31,7 +31,9 @@ import java.util.Random; import java.util.Set; +import org.apache.lucene.index.IndexReader; import org.apache.lucene.util.LuceneTestCase; +import org.apache.lucene.util._TestUtil; /** * This is a Directory Wrapper that adds methods @@ -48,6 +50,7 @@ Random randomState; boolean noDeleteOpenFile = true; boolean preventDoubleWrite = true; + boolean checkIndexOnClose = true; boolean trackDiskUsage = false; private Set unSyncedFiles; private Set createdFiles; @@ -206,6 +209,17 @@ } /** + * Set whether or not checkindex should be run + * on close + */ + public void setCheckIndexOnClose(boolean value) { + this.checkIndexOnClose = value; + } + + public boolean getCheckIndexOnClose() { + return checkIndexOnClose; + } + /** * If 0.0, no exceptions will be thrown. Else this should * be a double 0.0 - 1.0. We will randomly throw an * IOException on the first write to an OutputStream based @@ -393,6 +407,9 @@ throw new RuntimeException("MockDirectoryWrapper: cannot close: there are still open files: " + openFiles, cause); } open = false; + if (checkIndexOnClose && IndexReader.indexExists(this)) { + _TestUtil.checkIndex(this); + } delegate.close(); } Index: lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java =================================================================== --- lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java (revision 1065716) +++ lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java (working copy) @@ -39,8 +39,10 @@ fileExtensions.add(IndexFileNames.FIELDS_EXTENSION); fileExtensions.add(IndexFileNames.FIELDS_INDEX_EXTENSION); - Directory primaryDir = new MockDirectoryWrapper(random, new RAMDirectory()); - Directory secondaryDir = new MockDirectoryWrapper(random, new RAMDirectory()); + MockDirectoryWrapper primaryDir = new MockDirectoryWrapper(random, new RAMDirectory()); + primaryDir.setCheckIndexOnClose(false); // only part of an index + MockDirectoryWrapper secondaryDir = new MockDirectoryWrapper(random, new RAMDirectory()); + secondaryDir.setCheckIndexOnClose(false); // only part of an index FileSwitchDirectory fsd = new FileSwitchDirectory(fileExtensions, primaryDir, secondaryDir, true); IndexWriter writer = new IndexWriter(