diff --git a/src/modules/Parser/testsuite.in b/src/modules/Parser/testsuite.in
index fa1e3e2d2853a009a3ebbbdc3229f14cc260e5c2..e61f2aa66d6e827082524644f1d26b25f4a37246 100644
--- a/src/modules/Parser/testsuite.in
+++ b/src/modules/Parser/testsuite.in
@@ -2,7 +2,7 @@
 test_any([[
   object p = Parser.HTML();
   p->add_tag ("t", lambda (object p, mapping a) {return "<t2>";});
-  p->add_tag ("t2", lambda (object p, mapping a) {return "a";});
+  p->add_tag ("t2", "a");
   return p->finish("<t>")->read();
 ]], "a")
 test_any([[
@@ -17,6 +17,18 @@ test_any([[
     return p->finish("<t>")->read();
   }) return 1;
 ]], 1)
+test_any([[
+  object p = Parser.HTML();
+  p->add_tag ("t", "<t>");
+  if (catch {
+    return p->finish("<t>")->read();
+  }) return 1;
+]], 1)
+test_any([[
+  object p = Parser.HTML();
+  p->add_tag ("t", "t");
+  return p->finish("<t a=b c>")->read();
+]], "t")
 test_any([[
   object p = Parser.HTML();
   p->add_tag ("t", lambda (object p, mapping a) {return ({a->a});});
@@ -42,7 +54,7 @@ test_any([[
 test_any([[
   object p = Parser.HTML();
   p->add_entity ("e", lambda (object p) {return "<t>";});
-  p->add_tag ("t", lambda (object p, mapping a) {return "a";});
+  p->add_tag ("t", "a");
   return p->finish("&e;")->read();
 ]], "a")
 test_any([[
@@ -57,6 +69,18 @@ test_any([[
     return p->finish("&e;")->read();
   }) return 1;
 ]], 1)
+test_any([[
+  object p = Parser.HTML();
+  p->add_entity ("e", "e");
+  return p->finish("&e;")->read();
+]], "e")
+test_any([[
+  object p = Parser.HTML();
+  p->add_entity ("e", "&e;");
+  if (catch {
+    return p->finish("&e;")->read();
+  }) return 1;
+]], 1)
 
 // Argument quoting
 test_any([[