[master] 6a18074cf Duplicate v00016.vtc to v00022.vtc

Nils Goroll nils.goroll at uplex.de
Fri Oct 29 15:01:22 UTC 2021


commit 6a18074cfce2954a13d3303eaa255daed470e6f5
Author: Nils Goroll <nils.goroll at uplex.de>
Date:   Fri Oct 29 16:55:02 2021 +0200

    Duplicate v00016.vtc to v00022.vtc

diff --git a/bin/varnishtest/tests/v00022.vtc b/bin/varnishtest/tests/v00022.vtc
new file mode 100644
index 000000000..f4421a166
--- /dev/null
+++ b/bin/varnishtest/tests/v00022.vtc
@@ -0,0 +1,150 @@
+varnishtest "Various VCL compiler coverage tests"
+
+feature dns
+
+shell "true > ${tmpdir}/_varnishtest_empty_file"
+
+varnish v1 -vcl {
+	backend b { .host = "${localhost}"; }
+	include "${tmpdir}/_varnishtest_empty_file" ;
+}
+
+varnish v1 -errvcl {include <string> not followed by semicolon.} {
+	backend b { .host = "${localhost}"; }
+	include "${tmpdir}/_varnishtest_empty_file" |
+}
+
+shell "rm -f ${tmpdir}/_varnishtest_empty_file"
+
+varnish v1 -errvcl {include not followed by string constant.} {
+	backend b { .host = "${localhost}"; }
+	include <<
+}
+
+varnish v1 -errvcl {include not followed by string constant.} {
+	/* token test */
+	error lookup hash pipe pass fetch deliver discard keep restart
+	include
+	if else elseif elsif
+	++ -- && || <= == != >= >> << += -= *= /=
+	{ } ( ) * + - / % > < = ; ! & . | ~ ,
+}
+
+varnish v1 -errvcl {Unknown duration unit 'k'} {
+	backend b { .host = "${localhost}"; }
+	sub vcl_backend_response { set beresp.ttl = 1. k; }
+}
+
+varnish v1 -errvcl {Operator > not possible on BACKEND} {
+	backend a { .host = "${localhost}"; }
+	backend b { .host = "${localhost}"; }
+	sub vcl_recv { if (a > b) { } }
+}
+
+varnish v1 -errvcl {Unknown property 'foo' for type HTTP} {
+	backend b { .host = "${localhost}"; }
+	sub vcl_hash { if (req.foo != "bar") { } }
+}
+
+varnish v1 -errvcl {Symbol not found: 'foo.bar'} {
+	sub vcl_init {
+		new bar = foo.bar();
+	}
+}
+
+varnish v1 -errvcl {Cannot be set in subroutine 'vcl_pipe'} {
+	backend b { .host = "${localhost}"; }
+	sub vcl_pipe {
+		set bereq.first_byte_timeout = 10s;
+	}
+}
+
+varnish v1 -errvcl {Cannot be set in subroutine 'vcl_pipe'.} {
+	backend b { .host = "${localhost}"; }
+	sub vcl_pipe {
+		set bereq.between_bytes_timeout = 10s;
+	}
+}
+
+varnish v1 -errvcl {Undefined backend c, first reference:} {
+	backend b { .host = "${localhost}"; }
+	sub vcl_backend_response {
+		if (beresp.backend == c) {
+			set beresp.ttl = 1h;
+		}
+	}
+}
+
+varnish v1 -errvcl {Regexp compilation error:} {
+	backend b { .host = "${localhost}"; }
+	sub vcl_recv {
+		if (req.url ~ "[a") {}
+	}
+}
+
+varnish v1 -errvcl {resolves to too many addresses} {
+	backend b { .host = "${localhost}"; }
+	sub vcl_recv {
+		if (remote.ip == "dns-canary-multi.varnish-cache.org") {}
+	}
+}
+
+varnish v1 -errvcl {Expression has type directors.shard, expected ACL} {
+	import directors;
+	backend b { .host = "${localhost}"; }
+
+	sub vcl_init {
+		new foo = directors.shard();
+	}
+	sub vcl_recv {
+		if (client.ip ~ foo) {
+			return (synth(200));
+		}
+	}
+}
+
+varnish v1 -syntax 4.0 -errvcl {Expression has type directors.shard, expected ACL} {
+	import directors;
+	backend b { .host = "${localhost}"; }
+
+	sub vcl_init {
+		new foo = directors.shard();
+	}
+	sub vcl_recv {
+		if (client.ip ~ foo) {
+			return (synth(200));
+		}
+	}
+}
+
+varnish v1 -errvcl {Undefined sub foo} {
+	backend dummy None;
+	sub vcl_recv {
+		call foo;
+	}
+}
+
+# NB: The line break in -errvcl is here on purpose, it prevents
+# a spurious "Only available when" addition to be missed when the
+# foo constructor could be confused with the foo instance name.
+varnish v1 -syntax 4.0 -errvcl {Symbol not found: 'directors.foo'
+At:} {
+	import directors;
+	backend b { .host = "${localhost}"; }
+
+	sub vcl_init {
+		new foo = directors.foo();
+	}
+}
+
+# 'foo' overloaded
+varnish v1 -syntax 4.0 -errvcl {Symbol not found: 'foo'} {
+	backend b { .host = "${localhost}"; }
+
+	acl foo -pedantic {
+	    "${localhost}"/32;
+	}
+	sub vcl_init {
+		new bar = foo;
+	}
+}


More information about the varnish-commit mailing list