From 7974ce49634944aea3686097e52d1effa84f90d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Tue, 16 Apr 2019 14:07:51 +0200 Subject: [PATCH] [IMP] qweb: crash if t-on directive is used with no event closes #33 --- src/qweb.ts | 3 +++ tests/qweb.test.ts | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/src/qweb.ts b/src/qweb.ts index d93fa1d4..d345d753 100644 --- a/src/qweb.ts +++ b/src/qweb.ts @@ -932,6 +932,9 @@ const onDirective: Directive = { atNodeCreation({ ctx, fullName, value, nodeID }) { ctx.rootContext.shouldDefineOwner = true; const eventName = fullName.slice(5); + if (!eventName) { + throw new Error("Missing event name with t-on directive"); + } let extraArgs; let handler = value.replace(/\(.*\)/, function(args) { extraArgs = args.slice(1, -1); diff --git a/tests/qweb.test.ts b/tests/qweb.test.ts index 5ba1043e..41e97ecf 100644 --- a/tests/qweb.test.ts +++ b/tests/qweb.test.ts @@ -115,6 +115,13 @@ describe("error handling", () => { ); }); + test("nice error when t-on is evaluated with a missing event", () => { + qweb.addTemplate("templatename", `
`); + expect(() => + qweb.render("templatename", { someMethod() {} }, { handlers: [] }) + ).toThrow("Missing event name with t-on directive"); + }); + test("error when compiled code is invalid", () => { qweb.addTemplate( "templatename",