Merge pull request #630 from broadinstitute/pd_blank_lines_in_listfile
Allow blank lines in a (non-BAM) list file
This commit is contained in:
commit
78560212d0
|
|
@ -25,7 +25,6 @@
|
||||||
|
|
||||||
package org.broadinstitute.sting.commandline;
|
package org.broadinstitute.sting.commandline;
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import htsjdk.tribble.Feature;
|
import htsjdk.tribble.Feature;
|
||||||
import org.broadinstitute.sting.gatk.refdata.tracks.FeatureManager;
|
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.DynamicClassResolutionException;
|
||||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||||
|
import org.broadinstitute.sting.utils.text.XReadLines;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -477,7 +477,7 @@ public abstract class ArgumentTypeDescriptor {
|
||||||
final Set<String> fileValues = new HashSet<>();
|
final Set<String> fileValues = new HashSet<>();
|
||||||
|
|
||||||
// parse each line separately using the given Tags if none are provided on each line
|
// 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 String[] tokens = line.split("\\s+");
|
||||||
final RodBinding binding;
|
final RodBinding binding;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
package org.broadinstitute.sting.commandline;
|
package org.broadinstitute.sting.commandline;
|
||||||
|
|
||||||
|
import htsjdk.variant.variantcontext.VariantContext;
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||||
import htsjdk.samtools.SAMFileWriter;
|
import htsjdk.samtools.SAMFileWriter;
|
||||||
import org.broadinstitute.sting.BaseTest;
|
import org.broadinstitute.sting.BaseTest;
|
||||||
|
|
@ -36,6 +37,8 @@ import org.testng.Assert;
|
||||||
import org.testng.annotations.DataProvider;
|
import org.testng.annotations.DataProvider;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
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) {
|
private static boolean outputIsStdout(final Object out) {
|
||||||
if ( out == null ) {
|
if ( out == null ) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue