Allow blank lines in a (non-BAM) list file

* Addresses PT Bug 67841052
 * Added Unit Test
This commit is contained in:
Phillip Dexheimer 2014-05-13 22:11:17 -04:00
parent cca3d167db
commit 77449961ab
2 changed files with 53 additions and 2 deletions

View File

@ -25,7 +25,6 @@
package org.broadinstitute.sting.commandline;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import htsjdk.tribble.Feature;
import org.broadinstitute.sting.gatk.refdata.tracks.FeatureManager;
@ -35,6 +34,7 @@ import org.broadinstitute.sting.utils.classloader.JVMUtils;
import org.broadinstitute.sting.utils.exceptions.DynamicClassResolutionException;
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
import org.broadinstitute.sting.utils.exceptions.UserException;
import org.broadinstitute.sting.utils.text.XReadLines;
import java.io.File;
import java.io.IOException;
@ -477,7 +477,7 @@ public abstract class ArgumentTypeDescriptor {
final Set<String> fileValues = new HashSet<>();
// parse each line separately using the given Tags if none are provided on each line
for ( final String line: FileUtils.readLines(file) ) {
for ( final String line: new XReadLines(file) ) {
final String[] tokens = line.split("\\s+");
final RodBinding binding;

View File

@ -25,6 +25,7 @@
package org.broadinstitute.sting.commandline;
import htsjdk.variant.variantcontext.VariantContext;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import htsjdk.samtools.SAMFileWriter;
import org.broadinstitute.sting.BaseTest;
@ -36,6 +37,8 @@ import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Arrays;
import java.util.Collection;
@ -167,6 +170,54 @@ public class ArgumentTypeDescriptorUnitTest extends BaseTest {
}
}
@Test
public void testRodBindingsCollection() {
final ParsingEngine parser = new ParsingEngine(new ATDTestCommandLineProgram());
//A list file containing a single VCF
final File listFile = new File(privateTestDir+"oneVCF.list");
try {
Object result = ArgumentTypeDescriptor.getRodBindingsCollection(listFile,
parser,
VariantContext.class,
"variant",
new Tags(),
"variantTest");
if (!(result instanceof RodBindingCollection))
throw new ReviewedStingException("getRodBindingsCollection did not return a RodBindingCollection");
RodBindingCollection<?> rbc = (RodBindingCollection) result;
Assert.assertEquals(rbc.getType(), VariantContext.class);
Assert.assertEquals(rbc.getRodBindings().size(), 1);
} catch (IOException e) {
throw new ReviewedStingException(e.getMessage(), e);
}
//The same file, now with an extra blank line
final File listFileWithBlank = new File(privateTestDir+"oneVCFwithBlankLine.list");
try {
Object result = ArgumentTypeDescriptor.getRodBindingsCollection(listFileWithBlank,
parser,
VariantContext.class,
"variant",
new Tags(),
"variantTest");
if (!(result instanceof RodBindingCollection))
throw new ReviewedStingException("getRodBindingsCollection did not return a RodBindingCollection");
RodBindingCollection<?> rbc = (RodBindingCollection) result;
Assert.assertEquals(rbc.getType(), VariantContext.class);
Assert.assertEquals(rbc.getRodBindings().size(), 1);
} catch (IOException e) {
throw new ReviewedStingException(e.getMessage(), e);
}
}
private static boolean outputIsStdout(final Object out) {
if ( out == null ) {
return false;