Index: varnish-cache/bin/varnishtest/vtc_http.c
===================================================================
--- varnish-cache/bin/varnishtest/vtc_http.c	(revision 5518)
+++ varnish-cache/bin/varnishtest/vtc_http.c	(working copy)
@@ -193,11 +193,11 @@
 		hh = hp->resp;
 		hdr = spec + 10;
 	} else
-		return (spec);
+		return (NULL);
 	hdr = http_find_header(hh, hdr);
 	if (hdr != NULL)
 		return (hdr);
-	return (spec);
+	return (NULL);
 }
 
 static void
@@ -221,6 +221,37 @@
 	lhs = cmd_var_resolve(hp, av[0]);
 	cmp = av[1];
 	rhs = cmd_var_resolve(hp, av[2]);
+	if (!rhs)
+		rhs = av[2];
+
+	if (!strcmp(cmp, "is")) {
+		if (!strcmp(rhs, "set")) {
+			if (lhs == NULL)
+				vtc_log(hp->vl, 0, "EXPECT %s (%s) %s %s (%s) failed",
+				    av[0], "<unset>", av[1], av[2], rhs);
+			else
+				vtc_log(hp->vl, 4, "EXPECT %s (%s) %s %s (%s) match",
+				    av[0], lhs, av[1], av[2], rhs);
+		} else if (!strcmp(rhs, "unset")) {
+			if (lhs != NULL)
+				vtc_log(hp->vl, 0, "EXPECT %s (%s) %s %s (%s) failed",
+				    av[0], lhs, av[1], av[2], rhs);
+			else
+				vtc_log(hp->vl, 4, "EXPECT %s (%s) %s %s (%s) match",
+				    av[0], "<unset>", av[1], av[2], rhs);
+		} else {
+			if (!lhs)
+				lhs = av[0];
+			
+			vtc_log(hp->vl, 0, "EXPECT %s (%s) %s %s (%s) right operator to \"is\" not implemented",
+			    av[0], lhs, av[1], av[2], rhs);
+		}
+		return;
+	}
+
+	if (!lhs)
+		lhs = av[0];
+
 	if (!strcmp(cmp, "==")) {
 		if (strcmp(lhs, rhs))
 			vtc_log(hp->vl, 0, "EXPECT %s (%s) %s %s (%s) failed",
@@ -236,7 +267,7 @@
 			vtc_log(hp->vl, 4, "EXPECT %s (%s) %s %s (%s) match",
 			    av[0], lhs, av[1], av[2], rhs);
 	} else {
-		vtc_log(hp->vl, 0, "EXPECT %s (%s) %s %s (%s) not implemented",
+		vtc_log(hp->vl, 0, "EXPECT %s (%s) %s %s (%s) comparator not implemented",
 		    av[0], lhs, av[1], av[2], rhs);
 	}
 }
