@Test(dataProvider = "testOpticalDuplicateDetectionDataProvider") public void testOpticalDuplicateDetection( final File sam, final long expectedNumOpticalDuplicates) { final File outputDir = IOUtil.createTempDir(TEST_BASE_NAME + ".", ".tmp"); outputDir.deleteOnExit(); final File outputSam = new File(outputDir, TEST_BASE_NAME + ".sam"); outputSam.deleteOnExit(); final File metricsFile = new File(outputDir, TEST_BASE_NAME + ".duplicate_metrics"); metricsFile.deleteOnExit(); // Run MarkDuplicates, merging the 3 input files, and either enabling or suppressing PG header // record creation according to suppressPg. final MarkDuplicates markDuplicates = new MarkDuplicates(); markDuplicates.setupOpticalDuplicateFinder(); markDuplicates.INPUT = CollectionUtil.makeList(sam.getAbsolutePath()); markDuplicates.OUTPUT = outputSam; markDuplicates.METRICS_FILE = metricsFile; markDuplicates.TMP_DIR = CollectionUtil.makeList(outputDir); // Needed to suppress calling CommandLineProgram.getVersion(), which doesn't work for code not // in a jar markDuplicates.PROGRAM_RECORD_ID = null; Assert.assertEquals(markDuplicates.doWork(), 0); Assert.assertEquals(markDuplicates.numOpticalDuplicates(), expectedNumOpticalDuplicates); TestUtil.recursiveDelete(outputDir); }