mirror of
https://github.com/curl/curl.git
synced 2025-01-18 14:04:30 +08:00
testutil: make runtests support %include
Using this instruction, a test case can include the contents of a file into the test during the preprocessing. Closes #12612
This commit is contained in:
parent
8620b11c3a
commit
12f832d950
@ -74,6 +74,17 @@ For example, to insert the word hello 100 times:
|
||||
|
||||
%repeat[100 x hello]%
|
||||
|
||||
## Include file
|
||||
|
||||
This instruction allows a test case to include another file. It is helpful to
|
||||
remember that the ordinary variables are expanded before the include happens
|
||||
so `%LOGDIR` and the others can be used in the include line.
|
||||
|
||||
The file name cannot contain `%` as that letter is used to end the name for
|
||||
the include instruction:
|
||||
|
||||
%include filename%
|
||||
|
||||
## Conditional lines
|
||||
|
||||
Lines in the test file can be made to appear conditionally on a specific
|
||||
|
@ -94,6 +94,15 @@ sub clearlogs {
|
||||
|
||||
|
||||
#######################################################################
|
||||
|
||||
sub includefile {
|
||||
my ($f) = @_;
|
||||
open(F, "<$f");
|
||||
my @a = <F>;
|
||||
close(F);
|
||||
return join("", @a);
|
||||
}
|
||||
|
||||
sub subbase64 {
|
||||
my ($thing) = @_;
|
||||
|
||||
@ -113,6 +122,7 @@ sub subbase64 {
|
||||
$d =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg;
|
||||
$$thing =~ s/%%HEX%%/$d/;
|
||||
}
|
||||
# repeat
|
||||
while($$thing =~ s/%repeat\[(\d+) x (.*?)\]%/%%REPEAT%%/i) {
|
||||
# decode %NN characters
|
||||
my ($d, $n) = ($2, $1);
|
||||
@ -120,6 +130,9 @@ sub subbase64 {
|
||||
my $all = $d x $n;
|
||||
$$thing =~ s/%%REPEAT%%/$all/;
|
||||
}
|
||||
|
||||
# include a file
|
||||
$$thing =~ s/%include ([^%]*)%[\n\r]+/includefile($1)/ge;
|
||||
}
|
||||
|
||||
my $prevupdate; # module scope so it remembers the last value
|
||||
|
Loading…
Reference in New Issue
Block a user