diff --git a/public/gatk-framework/src/main/java/org/broadinstitute/sting/commandline/ArgumentTypeDescriptor.java b/public/gatk-framework/src/main/java/org/broadinstitute/sting/commandline/ArgumentTypeDescriptor.java index be81b491f..fb39575e6 100644 --- a/public/gatk-framework/src/main/java/org/broadinstitute/sting/commandline/ArgumentTypeDescriptor.java +++ b/public/gatk-framework/src/main/java/org/broadinstitute/sting/commandline/ArgumentTypeDescriptor.java @@ -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 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; diff --git a/public/gatk-framework/src/test/java/org/broadinstitute/sting/commandline/ArgumentTypeDescriptorUnitTest.java b/public/gatk-framework/src/test/java/org/broadinstitute/sting/commandline/ArgumentTypeDescriptorUnitTest.java index 47ffb16ce..908722909 100644 --- a/public/gatk-framework/src/test/java/org/broadinstitute/sting/commandline/ArgumentTypeDescriptorUnitTest.java +++ b/public/gatk-framework/src/test/java/org/broadinstitute/sting/commandline/ArgumentTypeDescriptorUnitTest.java @@ -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;