Next: Ada Tests, Previous: Test Idioms, Up: Testsuites
Test directives appear within comments in a test source file and begin
with dg-
. Some of these are defined within DegaGnu and others
are local to the GCC testsuite.
The order in which test directives appear in a test can be important: directives local to GCC sometimes override information used by the DejaGnu directives, which know nothing about the GCC directives, so the DejaGnu directives must precede GCC directives.
Several test directives include selectors which are usually preceded by
the keyword target
or xfail
. A selector is: one or more
target triplets, possibly including wildcard characters; a single
effective-target keyword; or a logical expression. Depending on the
context, the selector specifies whether a test is skipped and reported
as unsupported or is expected to fail. Use `*-*-*' to match any
target.
Effective-target keywords are defined in target-supports.exp in
the GCC testsuite.
A selector expression appears within curly braces and uses a single logical operator: one of `!', `&&', or `||'. An operand is another selector expression, an effective-target keyword, a single target triplet, or a list of target triplets within quotes or curly braces. For example:
{ target { ! "hppa*-*-* ia64*-*-*" } } { target { powerpc*-*-* && lp64 } } { xfail { lp64 || vect_no_align } }
{ dg-do
do-what-keyword [{ target/xfail
selector }] }
preprocess
assemble
compile
link
run
The default is compile
. That can be overridden for a set of
tests by redefining dg-do-what-default
within the .exp
file for those tests.
If the directive includes the optional `{ target selector }' then the test is skipped unless the target system is included in the list of target triplets or matches the effective-target keyword.
If the directive includes the optional `{ xfail selector }'
and the selector is met then the test is expected to fail. For
dg-do run
, execution is expected to fail but compilation
is expected to pass.
{ dg-options
options [{ target
selector }] }
{ dg-skip-if
comment {
selector } {
include-opts } {
exclude-opts } }
Use `"*"' for an empty include-opts list and `""' for
an empty exclude-opts list.
{ dg-xfail-if
comment {
selector } {
include-opts } {
exclude-opts } }
dg-skip-if
) are met.
{ dg-require-
support args }
dg-do
directive in the test.
They require at least one argument, which can be an empty string if the
specific procedure does not examine the argument.
{ dg-require-effective-target
keyword }
dg-do
directive in the test.
{ dg-error
regexp [
comment [{ target/xfail
selector } [
line] }]] }
FAIL
message. The check does
not look for the string `"error"' unless it is part of regexp.
{ dg-warning
regexp [
comment [{ target/xfail
selector } [
line] }]] }
FAIL
message. The check does
not look for the string `"warning"' unless it is part of regexp.
{ dg-bogus
regexp [
comment [{ target/xfail
selector } [
line] }]] }
{ dg-excess-errors
comment [{ target/xfail
selector }] }
{ dg-output
regexp [{ target/xfail
selector }] }
{ dg-prune-output
regexp }
{ dg-additional-files "
filelist" }
{ dg-additional-sources "
filelist" }
{ dg-final {
local-directive } }
The GCC testsuite defines the following directives to be used within
dg-final
.
scan-file
filename regexp [{ target/xfail
selector }]
scan-file-not
filename regexp [{ target/xfail
selector }]
scan-hidden
symbol [{ target/xfail
selector }]
scan-not-hidden
symbol [{ target/xfail
selector }]
scan-assembler-times
regex num [{ target/xfail
selector }]
scan-assembler
regex [{ target/xfail
selector }]
scan-assembler-not
regex [{ target/xfail
selector }]
scan-assembler-dem
regex [{ target/xfail
selector }]
scan-assembler-dem-not
regex [{ target/xfail
selector }]
scan-tree-dump-times
regex num suffix [{ target/xfail
selector }]
scan-tree-dump
regex suffix [{ target/xfail
selector }]
scan-tree-dump-not
regex suffix [{ target/xfail
selector }]
scan-tree-dump-dem
regex suffix [{ target/xfail
selector }]
scan-tree-dump-dem-not
regex suffix [{ target/xfail
selector }]
run-gcov
sourcefilerun-gcov [branches] [calls] {
opts sourcefile }