mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 20:29:53 +00:00
Documentation: add a section to prevent spurious test failures like the one
fixed in r171243. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171258 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
94e94b3506
commit
0d80c9c8c7
@ -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
|
||||
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
|
||||
---------------------
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user