forked from OSchip/llvm-project
Documentation: add a section to prevent spurious test failures like the one
fixed in r171243. llvm-svn: 171258
This commit is contained in:
parent
749a43d874
commit
12be928dfb
|
@ -262,6 +262,43 @@ recommended way to examine output to figure out if the test passes it using the
|
||||||
:doc:`FileCheck tool <CommandGuide/FileCheck>`. The usage of ``grep`` in RUN
|
:doc:`FileCheck tool <CommandGuide/FileCheck>`. The usage of ``grep`` in RUN
|
||||||
lines is discouraged.
|
lines is discouraged.
|
||||||
|
|
||||||
|
Fragile tests
|
||||||
|
-------------
|
||||||
|
|
||||||
|
It is easy to write a fragile test that would fail spuriously if the tool being
|
||||||
|
tested outputs a full path to the input file. For example, :program:`opt` by
|
||||||
|
default outputs a ``ModuleID``:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cat example.ll
|
||||||
|
define i32 @main() nounwind {
|
||||||
|
ret i32 0
|
||||||
|
}
|
||||||
|
|
||||||
|
$ opt -S /path/to/example.ll
|
||||||
|
; ModuleID = '/path/to/example.ll'
|
||||||
|
|
||||||
|
define i32 @main() nounwind {
|
||||||
|
ret i32 0
|
||||||
|
}
|
||||||
|
|
||||||
|
``ModuleID`` can unexpetedly match against ``CHECK`` lines. For example:
|
||||||
|
|
||||||
|
.. code-block:: llvm
|
||||||
|
|
||||||
|
; RUN: opt -S %s | FileCheck
|
||||||
|
|
||||||
|
define i32 @main() nounwind {
|
||||||
|
; CHECK-NOT: load
|
||||||
|
ret i32 0
|
||||||
|
}
|
||||||
|
|
||||||
|
This test will fail if placed into a ``download`` directory.
|
||||||
|
|
||||||
|
To make your tests robust, always use ``opt ... < %s`` in the RUN line.
|
||||||
|
:program:`opt` does not output a ``ModuleID`` when input comes from stdin.
|
||||||
|
|
||||||
The FileCheck utility
|
The FileCheck utility
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue