From 65eeb4a7abeaeaa33de94ee7a2f74259ca32b2ad Mon Sep 17 00:00:00 2001 From: Phillip Dexheimer Date: Thu, 19 Jun 2014 23:52:26 -0400 Subject: [PATCH] Recast the "Invalid JEXL expression detected" error in SelectVariants from a RuntimeException to a UserException - PT 68931448 --- .../walkers/variantutils/SelectVariants.java | 14 ++++-- .../SelectVariantsIntegrationTest.java | 46 +++++++++++++++++++ 2 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 public/gatk-tools-public/src/test/java/org/broadinstitute/gatk/tools/walkers/variantutils/SelectVariantsIntegrationTest.java diff --git a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/SelectVariants.java b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/SelectVariants.java index 206d6dc7a..d31a71fac 100644 --- a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/SelectVariants.java +++ b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/SelectVariants.java @@ -514,11 +514,17 @@ public class SelectVariants extends RodWalker implements TreeR if ( (!EXCLUDE_NON_VARIANTS || sub.isPolymorphicInSamples()) && (!EXCLUDE_FILTERED || !sub.isFiltered()) ) { boolean failedJexlMatch = false; - for ( VariantContextUtils.JexlVCMatchExp jexl : jexls ) { - if ( !VariantContextUtils.match(sub, jexl) ) { - failedJexlMatch = true; - break; + try { + for (VariantContextUtils.JexlVCMatchExp jexl : jexls) { + if (!VariantContextUtils.match(sub, jexl)) { + failedJexlMatch = true; + break; + } } + } catch (IllegalArgumentException e) { + /*The IAE thrown by htsjdk already includes an informative error message ("Invalid JEXL + expression detected...")*/ + throw new UserException(e.getMessage()); } if ( !failedJexlMatch && !justRead && diff --git a/public/gatk-tools-public/src/test/java/org/broadinstitute/gatk/tools/walkers/variantutils/SelectVariantsIntegrationTest.java b/public/gatk-tools-public/src/test/java/org/broadinstitute/gatk/tools/walkers/variantutils/SelectVariantsIntegrationTest.java new file mode 100644 index 000000000..d43147496 --- /dev/null +++ b/public/gatk-tools-public/src/test/java/org/broadinstitute/gatk/tools/walkers/variantutils/SelectVariantsIntegrationTest.java @@ -0,0 +1,46 @@ +/* +* Copyright (c) 2012 The Broad Institute +* +* Permission is hereby granted, free of charge, to any person +* obtaining a copy of this software and associated documentation +* files (the "Software"), to deal in the Software without +* restriction, including without limitation the rights to use, +* copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following +* conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR +* THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +package org.broadinstitute.gatk.tools.walkers.variantutils; + +import org.broadinstitute.gatk.engine.walkers.WalkerTest; +import org.broadinstitute.gatk.utils.exceptions.UserException; +import org.testng.annotations.Test; + +public class SelectVariantsIntegrationTest extends WalkerTest { + + @Test + public void testInvalidJexl() { + WalkerTestSpec spec = new WalkerTestSpec( + "-T SelectVariants" + + " -R "+b37KGReference + + " -V "+privateTestDir+"ac0.vcf" + + " -select 'vc.getGenotype(\"FAKE_SAMPLE\").isHomRef()'" + + " -o %s", + 1, + UserException.class); + executeTest("InvalidJexl", spec); + } +}