Index: lucene/src/test/org/apache/lucene/index/TestIndexWriter.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (revision 1030029) +++ lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (working copy) @@ -2819,7 +2819,7 @@ Document document = new Document(); - Field storedField = newField("stored", "stored", Field.Store.YES, + Field storedField = new Field("stored", "stored", Field.Store.YES, Field.Index.NO); document.add(storedField); writer.addDocument(document); Index: lucene/src/test/org/apache/lucene/index/TestDocumentWriter.java =================================================================== --- lucene/src/test/org/apache/lucene/index/TestDocumentWriter.java (revision 1030029) +++ lucene/src/test/org/apache/lucene/index/TestDocumentWriter.java (working copy) @@ -298,7 +298,9 @@ public void testLUCENE_1590() throws Exception { Document doc = new Document(); // f1 has no norms - doc.add(newField("f1", "v1", Store.NO, Index.ANALYZED_NO_NORMS)); + Field noNorms = newField("f1", "v1", Store.NO, Index.ANALYZED_NO_NORMS); + noNorms.setOmitNorms(true); /* yes seriously omit them */ + doc.add(noNorms); doc.add(newField("f1", "v2", Store.YES, Index.NO)); // f2 has no TF Field f = newField("f2", "v1", Store.NO, Index.ANALYZED); Index: lucene/src/test/org/apache/lucene/util/LuceneTestCase.java =================================================================== --- lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (revision 1030029) +++ lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (working copy) @@ -702,17 +702,34 @@ } public static Field newField(Random random, String name, String value, Store store, Index index, TermVector tv) { - if (!index.isIndexed()) - return new Field(name, value, store, index); - if (!store.isStored() && random.nextBoolean()) store = Store.YES; // randomly store it - tv = randomTVSetting(random, tv); + Index indexValue = randomIndexSetting(random, index); + TermVector tvValue = indexValue == Index.NO ? TermVector.NO : randomTVSetting(random, tv); - return new Field(name, value, store, index, tv); + Field f = new Field(name, value, store, indexValue, tvValue); + + if (index == Index.NO) + f.setOmitTermFreqAndPositions(random.nextBoolean()); + return f; } + static final Index indexSettings[] = { + Index.NO, Index.NOT_ANALYZED_NO_NORMS, Index.NOT_ANALYZED, + Index.ANALYZED_NO_NORMS, Index.ANALYZED + }; + + private static Index randomIndexSetting(Random random, Index minimum) { + switch(minimum) { + case NO: return indexSettings[_TestUtil.nextInt(random, 0, indexSettings.length-1)]; + case NOT_ANALYZED_NO_NORMS: return indexSettings[_TestUtil.nextInt(random, 1, 2)]; + case NOT_ANALYZED: return Index.NOT_ANALYZED; + case ANALYZED_NO_NORMS: return indexSettings[_TestUtil.nextInt(random, 3, 4)]; + default: return Index.ANALYZED; + } + } + static final TermVector tvSettings[] = { TermVector.NO, TermVector.YES, TermVector.WITH_OFFSETS, TermVector.WITH_POSITIONS, TermVector.WITH_POSITIONS_OFFSETS