package org.broadinstitute.sting.queue.util import org.broadinstitute.sting.BaseTest import org.testng.annotations.Test import org.testng.Assert class ShellJobUnitTest { @Test def testEcho { val job = new ShellJob job.shellScript = writeScript("echo Hello World") job.run() } @Test(expectedExceptions=Array(classOf[JobExitException])) def testBadQuotes { val job = new ShellJob job.shellScript = writeScript("echo 'Hello World") job.run() } @Test def testGoodQuotes { val job = new ShellJob job.shellScript = writeScript("echo 'Hello World'") job.run() } @Test def testEscapeCharacters { var job: ShellJob = null job = new ShellJob job.shellScript = writeScript("echo #") job.outputFile = BaseTest.createTempFile("temp", "") job.run() Assert.assertEquals(IOUtils.readContents(job.outputFile).trim, "") job = new ShellJob job.shellScript = writeScript("""echo \#""") job.outputFile = BaseTest.createTempFile("temp", "") job.run() Assert.assertEquals(IOUtils.readContents(job.outputFile).trim, "#") job = new ShellJob job.shellScript = writeScript("""echo \\#""") job.outputFile = BaseTest.createTempFile("temp", "") job.run() Assert.assertEquals(IOUtils.readContents(job.outputFile).trim, """\#""") } @Test def testLongCommand { // This command fails on some systems with a 4096 character limit when run via the old sh -c "echo ...", // but works on the same systems when run via sh