Skip to content

Commit

Permalink
Test for /dev/stdout
Browse files Browse the repository at this point in the history
  • Loading branch information
ronlevine committed Feb 3, 2017
1 parent f005494 commit ef13c61
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 12 deletions.
15 changes: 8 additions & 7 deletions src/main/java/picard/vcf/UpdateVcfSequenceDictionary.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,13 @@
import htsjdk.variant.variantcontext.writer.VariantContextWriterBuilder;
import htsjdk.variant.vcf.VCFFileReader;
import htsjdk.variant.vcf.VCFHeader;
import picard.PicardException;
import picard.cmdline.CommandLineProgram;
import picard.cmdline.CommandLineProgramProperties;
import picard.cmdline.Option;
import picard.cmdline.StandardOptionDefinitions;
import picard.cmdline.programgroups.VcfOrBcf;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

/**
* Takes a VCF file and a Sequence Dictionary (from a variety of file types) and updates the Sequence Dictionary in VCF.
Expand All @@ -71,6 +68,8 @@ public class UpdateVcfSequenceDictionary extends CommandLineProgram {

private final Log log = Log.getInstance(UpdateVcfSequenceDictionary.class);

static final String STD_OUT = "/dev/stdout";

public static void main(final String[] args) {
new UpdateVcfSequenceDictionary().instanceMainWithExit(args);
}
Expand All @@ -92,10 +91,12 @@ protected int doWork() {
if (CREATE_INDEX)
builder.setOption(Options.INDEX_ON_THE_FLY);

try {
builder.setOutputStream(new FileOutputStream(OUTPUT, false));
} catch (final FileNotFoundException ex ) {
throw new PicardException("Could not open " + OUTPUT + ": " + ex.getMessage(), ex);
// handle stdout
if ( OUTPUT.getPath().equals(STD_OUT) ) {
builder.setOutputStream(System.out);
}
else {
builder.setOutputFile(OUTPUT);
}

final VariantContextWriter vcfWriter = builder.build();
Expand Down
14 changes: 9 additions & 5 deletions src/test/java/picard/vcf/UpdateVcfSequenceDictionaryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
public class UpdateVcfSequenceDictionaryTest {
private static final File TEST_DATA_PATH = new File("testdata/picard/vcf/");
private static final File OUTPUT_DATA_PATH = IOUtil.createTempDir("UpdateVcfSequenceDictionaryTest", null);
private static final String STD_OUT_FILE_NAME = OUTPUT_DATA_PATH + "/stdout.vcf";
private static final File STD_OUT_FILE = new File(OUTPUT_DATA_PATH, "stdout.vcf");

@AfterClass
public void teardown() {
Expand All @@ -52,7 +52,7 @@ public static Object[][] outputFies() {

return new Object[][] {
{OUTPUT_DATA_PATH + "updateVcfSequenceDictionaryTest-delete-me.vcf"},
{STD_OUT_FILE_NAME}
{UpdateVcfSequenceDictionary.STD_OUT}
};
}

Expand All @@ -64,9 +64,9 @@ public void testUpdateVcfSequenceDictionary(final String outputFileName) throws
File outputFile = new File(outputFileName);
outputFile.deleteOnExit();

// Reassign the standard output to an ooutput stream file
if ( outputFileName.equals(STD_OUT_FILE_NAME) ) {
System.setOut(new PrintStream(STD_OUT_FILE_NAME));
// Stream standard output a file
if ( outputFileName.equals(UpdateVcfSequenceDictionary.STD_OUT) ) {
System.setOut(new PrintStream(STD_OUT_FILE));
}

final UpdateVcfSequenceDictionary updateVcfSequenceDictionary = new UpdateVcfSequenceDictionary();
Expand All @@ -76,6 +76,10 @@ public void testUpdateVcfSequenceDictionary(final String outputFileName) throws

Assert.assertEquals(updateVcfSequenceDictionary.instanceMain(new String[0]), 0);

if ( outputFileName.equals(UpdateVcfSequenceDictionary.STD_OUT) ) {
outputFile = STD_OUT_FILE;
}

IOUtil.assertFilesEqual(samSequenceDictionaryVcf, outputFile);

// A little extra checking.
Expand Down

0 comments on commit ef13c61

Please sign in to comment.