Changelog
+Dan F (9 March 2007)
+- Updated the test harness to check for protocol support before running each
+ test, fixing KNOWN_BUGS #11.
+
Dan F (7 March 2007)
- Reintroduced (after a 3 year hiatus) an FTPS test case (400) into the test
harness. It is very limited as it supports only ftps:// URLs with
acknowledged after the actual TCP connect (during the SOCKS "negotiate"
phase).
-11. Using configure --disable-[protocol] may cause 'make test' to fail for
- tests using the disabled protocol(s).
-
10. To get HTTP Negotiate authentication to work fine, you need to provide a
(fake) user name (this concerns both curl and the lib) because the code
wrongly only considers authentication if there's a user name provided.
<server>
What server(s) this test case requires/uses:
-'http' 'ftp', 'https', 'ftps', 'http-ipv6'. Give only one per line.
+
+file
+ftp
+ftp-ipv6
+ftps
+http
+http-ipv6
+https
+none
+
+Give only one per line. This subsection is mandatory.
</server>
<features>
netrc_debug
OpenSSL
SSL
+
+as well as each protocol that curl supports. A protocol only needs to be
+specified if it is different from the server (useful when the server
+is 'none').
</features>
<killserver>
my $has_nss; # set if libcurl is built with NSS
my $has_textaware; # set if running on a system that has a text mode concept
# on files. Windows for example
+my @protocols; # array of supported protocols
my $skipped=0; # number of tests skipped; reported in main loop
my %skipped; # skipped{reason}=counter, reasons for skip
}
}
elsif($_ =~ /^Protocols: (.*)/i) {
- # these are the supported protocols, we don't use this knowledge
- # at this point
+ # these are the protocols compiled in to this libcurl
+ @protocols = split(' ', $1);
+
+ # Generate a "proto-ipv6" version of each protocol to match the
+ # IPv6 <server> name. This works even if IPv6 support isn't
+ # compiled in because the <features> test will fail.
+ push @protocols, map($_ . "-ipv6", @protocols);
+
+ # 'none' is used in test cases to mean no server
+ push @protocols, ('none');
}
elsif($_ =~ /^Features: (.*)/i) {
$feat = $1;
next;
}
}
+ # See if this "feature" is in the list of supported protocols
+ elsif (grep /^$f$/, @protocols) {
+ next;
+ }
$why = "curl lacks $f support";
last;
return "no server specified";
}
+ my $proto = lc($what[0]);
+ chomp $proto;
+ if (! grep /^$proto$/, @protocols) {
+ return "curl lacks $proto support";
+ }
+
return &startservers(@what);
}