diff --git a/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/HaplotypeCaller.java b/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/HaplotypeCaller.java index 2f1b4ba3b..5922defb1 100644 --- a/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/HaplotypeCaller.java +++ b/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/HaplotypeCaller.java @@ -59,6 +59,7 @@ import htsjdk.variant.vcf.*; import org.broadinstitute.gatk.engine.CommandLineGATK; import org.broadinstitute.gatk.engine.GenomeAnalysisEngine; import org.broadinstitute.gatk.engine.arguments.DbsnpArgumentCollection; +import org.broadinstitute.gatk.engine.io.DirectOutputTracker; import org.broadinstitute.gatk.engine.io.stubs.SAMFileWriterStub; import org.broadinstitute.gatk.utils.contexts.AlignmentContext; import org.broadinstitute.gatk.utils.contexts.AlignmentContextUtils; @@ -1201,6 +1202,7 @@ public class HaplotypeCaller extends ActiveRegionWalker, In // Capture any exception that might be thrown, and write out the assembly failure BAM if requested if ( captureAssemblyFailureBAM ) { final SAMFileWriter writer = SAMFileWriterStub.createSAMFileWriter("assemblyFailure.bam", getToolkit()); + new DirectOutputTracker().addOutput((SAMFileWriterStub) writer); for ( final GATKSAMRecord read : activeRegion.getReads() ) { writer.addAlignment(read); } diff --git a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/readutils/SplitSamFile.java b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/readutils/SplitSamFile.java index 3ef03c3d6..500ce20d2 100644 --- a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/readutils/SplitSamFile.java +++ b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/readutils/SplitSamFile.java @@ -30,6 +30,8 @@ import htsjdk.samtools.SAMFileWriter; import htsjdk.samtools.SAMReadGroupRecord; import htsjdk.samtools.SAMRecord; import org.apache.log4j.Logger; +import org.broadinstitute.gatk.engine.io.DirectOutputTracker; +import org.broadinstitute.gatk.engine.io.OutputTracker; import org.broadinstitute.gatk.engine.io.stubs.SAMFileWriterStub; import org.broadinstitute.gatk.utils.commandline.Argument; import org.broadinstitute.gatk.engine.CommandLineGATK; @@ -104,6 +106,7 @@ public class SplitSamFile extends ReadWalker outputs = new HashMap<>(); + final OutputTracker outputTracker = new DirectOutputTracker(); for ( Map.Entry elt : headers.entrySet() ) { final String sample = elt.getKey(); final String filename = outputRoot + sample + ".bam"; @@ -111,6 +114,7 @@ public class SplitSamFile extends ReadWalkeremptyList() + ); + addSplitOutput(spec, prefix, "NA12878", "b1a57327a3f0bdbe167dbc7d547f1247"); + addSplitOutput(spec, prefix, "NA12891", "3bb331fd468fc91c548f38857473f399"); + addSplitOutput(spec, prefix, "NA12892", "ac61ae9cd168ac15e3a03fe7ab51fb22"); + executeTest("testSplitSamFile", spec); + } + + private void addSplitOutput(final WalkerTestSpec spec, final String outputPrefix, final String sample, final String md5) { + final File outputFile = new File(outputPrefix + sample + ".bam"); + spec.addAuxFile(md5, outputFile); + + //The AuxFile mechanism will ensure the bam is deleted, but it doesn't know about indices + new File(outputFile.getAbsolutePath() + ".bai").deleteOnExit(); + new File(outputFile.getAbsolutePath().replaceAll("bam$", ".bai")).deleteOnExit(); + } +}