public void testAssociateNode() { String message = "Some error happened."; Throwable cause = new Throwable(); SoySyntaxException sse = SoySyntaxException.createCausedWithoutMetaInfo(message, cause); String testFileContent = "{namespace boo}\n" + "\n" + "/** @param goo */\n" + "{template name=\".foo\"}\n" + " {$goo}\n" + "{/template}\n"; SoyFileSetNode soyTree = SharedTestUtils.parseSoyFiles(testFileContent); PrintNode pn = (PrintNode) soyTree.getChild(0).getChild(0).getChild(0); // Before. assertTrue(sse.getMessage().contains(message)); assertEquals(cause, sse.getCause()); assertEquals("unknown", sse.getSourceLocation().getFilePath()); assertEquals(null, sse.getTemplateName()); SoySyntaxExceptionUtils.associateNode(sse, pn); // After. assertTrue(sse.getMessage().contains(message)); assertEquals(cause, sse.getCause()); assertEquals("no-path", sse.getSourceLocation().getFilePath()); assertEquals("boo.foo", sse.getTemplateName()); }
private void assertParseError(String typeInput, String msg) { try { parseType(typeInput); fail("Input string '" + typeInput + "' should have failed to parse."); } catch (SoySyntaxException e) { assertThat(e.getMessage()).isEqualTo(msg); } }
private void assertCheckIcuEscapingIsNotNeededFails( String rawText, String expectedErrorMsgSubstr) { try { IcuSyntaxUtils.checkIcuEscapingIsNotNeeded(rawText); fail(); } catch (SoySyntaxException sse) { assertThat(sse.getMessage()).contains(expectedErrorMsgSubstr); } }
/** Private helper for {@code testGenNoncollidingBaseNames()}. */ private void assertErrorMsgWhenGenNoncollidingBaseNamesForExprs( String expectedErrorMsg, String exprListText) { List<ExprRootNode<?>> exprRoots = ExprParseUtils.parseExprListElseThrowSoySyntaxException(exprListText, ""); try { MsgSubstUnitBaseVarNameUtils.genNoncollidingBaseNamesForExprs(exprRoots, "FALLBACK"); MsgNodeTest.fail(); } catch (SoySyntaxException sse) { MsgNodeTest.assertTrue(sse.getMessage().contains(expectedErrorMsg)); } }
/** * Assertions function that checks to make sure that name resolution fails with the expected * exception. * * @param fileContent The template source. * @param expectedError The expected failure message (a substring). */ private void assertResolveExpressionTypesFails(String expectedError, String fileContent) { SoyFileSetNode soyTree = SoyFileSetParserBuilder.forFileContents(fileContent) .declaredSyntaxVersion(SyntaxVersion.V2_0) .doRunInitialParsingPasses(false) .typeRegistry(typeRegistry) .parse(); createResolveNamesVisitorForMaxSyntaxVersion().exec(soyTree); try { createResolveExpressionTypesVisitorForMaxSyntaxVersion().exec(soyTree); fail("Expected SoySyntaxException"); } catch (SoySyntaxException e) { assertThat(e.getMessage()).contains(expectedError); } catch (IllegalStateException e) { // from the exploding error reporter assertThat(e.getMessage()).startsWith("Unexpected SoyError:"); assertThat(e.getMessage()).contains(expectedError); } }
public void testAssertNoUnboundGlobals() throws Exception { ExprRootNode<?> expr = (new ExpressionParser("BOO + 'aaa' + foo.GOO")).parseExpression(); Map<String, PrimitiveData> globals = ImmutableMap.<String, PrimitiveData>of( "BOO", StringData.forValue("boo"), "GOO", StringData.forValue("goo"), "foo.MOO", StringData.forValue("moo")); try { ((new SubstituteGlobalsVisitor(globals, null, true)).new SubstituteGlobalsInExprVisitor()) .exec(expr); fail(); } catch (SoySyntaxException sse) { assertTrue(sse.getMessage().contains("Found unbound global 'foo.GOO'.")); } }