[master] 59b85155f Polish diagnostic, and complete coverage testing of vcc_vmod.c
Poul-Henning Kamp
phk at FreeBSD.org
Mon Jul 4 10:11:08 UTC 2022
commit 59b85155f311945a6c0e9617a2b99a5e29cf6d09
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Mon Jul 4 10:10:39 2022 +0000
Polish diagnostic, and complete coverage testing of vcc_vmod.c
diff --git a/bin/varnishtest/tests/m00003.vtc b/bin/varnishtest/tests/m00003.vtc
index e03d34ef4..41155b926 100644
--- a/bin/varnishtest/tests/m00003.vtc
+++ b/bin/varnishtest/tests/m00003.vtc
@@ -59,4 +59,103 @@ varnish v1 -errvcl {Not string[2]} { import wrong; }
filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02" "[[\"$VBLA\"]]" "\x03"
varnish v1 -errvcl {Not $VMOD[3]} { import wrong; }
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+ [
+ [
+ "$VMOD",
+ "1.0",
+ "wrong",
+ "Vmod_vmod_wrong_Func",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ 0,
+ 0
+ ]
+ ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {Incompatible VMOD wrong} { import wrong; }
+
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+ [
+ [
+ "$VMOD",
+ "1.0",
+ "wrong",
+ "Vmod_vmod_wrong_Func",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ 1,
+ 0
+ ]
+ ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {VMOD wants ABI version 1.0} { import wrong; }
+
+#############################################################
+# NB: in the tests below "15" should track VRT_MAJOR_VERSION
+
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+ [
+ [
+ "$VMOD",
+ "1.0",
+ "wrong",
+ "Vmod_vmod_wrong_Func",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ 15,
+ 0
+ ], [
+ "$FOOBAR"
+ ]
+ ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {Unknown metadata stanza.} { import wrong; }
+
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+ [
+ [
+ "$VMOD",
+ "1.0",
+ "wrong",
+ "Vmod_vmod_wrong_Func",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ 15,
+ 0
+ ]
+ ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {Bad cproto stanza} { import wrong; }
+
+filewrite ${tmpdir}/libvmod_wrong.so "VMOD_JSON_SPEC\x02"
+filewrite -a ${tmpdir}/libvmod_wrong.so {
+ [
+ [
+ "$VMOD",
+ "1.0",
+ "wrong",
+ "Vmod_vmod_wrong_Func",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ "0000000000000000000000000000000000000000000000000000000000000000",
+ 15,
+ 0
+ ], [
+ "$CPROTO"
+ ], [
+ "$VMOD"
+ ]
+ ]
+}
+filewrite -a ${tmpdir}/libvmod_wrong.so "\x03"
+varnish v1 -errvcl {Bad vmod stanza} { import wrong; }
+
shell "rm -f ${tmpdir}/libvmod_wrong.so"
diff --git a/lib/libvcc/vcc_vmod.c b/lib/libvcc/vcc_vmod.c
index 0fa316eef..755f44fa5 100644
--- a/lib/libvcc/vcc_vmod.c
+++ b/lib/libvcc/vcc_vmod.c
@@ -226,7 +226,7 @@ vcc_ParseJSON(const struct vcc *tl, const char *jsn, struct vmod_import *vim)
if (!strcmp(vv3->value, "$" #UU)) {vim->n_##ll++; continue;}
STANZA_TBL
#undef STANZA
- return ("Unknown entry");
+ return ("Unknown metadata stanza.");
}
if (vim->n_cproto != 1)
return ("Bad cproto stanza(s)");
More information about the varnish-commit
mailing list