History log of /art/tools/checker_test.py
Revision Date Author Comments
b86e77937e824940d087b7c5999c79e5c38b00c8 27-Jan-2015 David Brazdil <dbrazdil@google.com> Checker: Allow don't-care output on a line

This patch changes the behaviour of whitespace characters in CHECK
lines, allowing for additional content between verified parts of the
matched output line. Tests therefore won't need to explicitly match
attributes which are not tested.

The way attributes are printed ensures that the right part of the
line is matched against.

Example:
- output line: i32 Div [ i4 i8 ] ( loop_header:null )
- CHECK before: Div [ {{i\d+}} {{i\d+}} ] ( loop_header:null )
- CHECK now: Div ( loop_header:null )

Change-Id: Icf6bacfb285ae288bea21640e860a871a94cc386
123c5e983d26b6fb57d2ebe817e5c20fb6046803 20-Jan-2015 David Brazdil <dbrazdil@google.com> ART: Run Checker with Python >2.6

Chromium buildbots don't have Python 3. This patch fixes the uses
of print() and ASCII vs. Unicode strings to make Checker compatible
with Python 2.6 and above.

Change-Id: Ic065d990f668b8cf95a337aae037699e8474fcee
7cca5df2e8565f0a09d695719879edcd7d6bb827 15-Jan-2015 David Brazdil <dbrazdil@google.com> ART: Logging levels for Checker

Small patch which enables Checker to print errors but not info
messages as opposed to the current all or nothing. This is useful for
running Checker with run-test.

Change-Id: I500ded0db4f83ed9bbdef9c1f7b1eb18a90d7f0e
48942de205db678a1a74d953ae3288937b26834d 07-Jan-2015 David Brazdil <dbrazdil@google.com> ART: Added comments, fixed typos in Checker

Change-Id: I1ff12940035845c1a586d4df826efc794088bdc9
21df8898e239a46ebfb189b14668d216d5801a61 08-Jan-2015 David Brazdil <dbrazdil@google.com> ART: Fixed subsequent CHECK-NOTs Checker bug

Matching a group of CHECK-NOT lines caused Checker to crash due to
incorrectly overwriting the varState variable. The second use of the
variable was renamed and a regression test added.

Change-Id: I1a879cf5368acca6b5092f69a9caa47b89a79532
2e15cd2cf19753e5d72ddad607efea6ae7617e80 31-Dec-2014 David Brazdil <dbrazdil@google.com> ART: Improved fail reporting in Checker

Checker now keeps track of line numbers and prints more informative
log messages.

Change-Id: I59ba3fb81d91e265a7358b6abb116dcb9ce97cbb
9a6f20e0ca565f2256c59f72a2437994e15ca597 19-Dec-2014 David Brazdil <dbrazdil@google.com> ART: New types of Checker assertions

Checker now supports positive out-of-order assertions (CHECK-DAG),
which are useful for matching dependency graphs, and negative
assertions (CHECK-NOT) to test element removal.

ConstantFolding tests are rewritten using -DAG checks and Inliner
tests are added.

Change-Id: I5afb665f532b24683624b6d21ef4377cb441d731
ee690a3dd364c025ebc1767d9f84097bb7473eec 01-Dec-2014 David Brazdil <dbrazdil@google.com> ART: Added Checker, a pattern matching test engine

This patch adds a Python script which implements a domain-specific
mini-language similar to that of LLVM's FileCheck. It is primarily
intended for writing tests for the optimizing compiler but could be
configured for other use cases too. It is implemented from scratch in
order to avoid dependency on LLVM.

Checker tests are written in Java and dex2oat is invoked with a flag
which dumps the CFG before and after each pass of the optimizing
compiler. The output is then compared against assertions in the
test's comments parsed by Checker. See comments in tools/checker.py
for more details about the currently supported language features.

This initial CL implements only one type of assertion - whether the
output contains lines matching a desired pattern in the given order -
but supports both plain text and regex matching and allows for
equivalency testing by matching for the outcome of a previous match.
See the tests in compiler/optimizing/test/ConstantFolding.java for
examples.

Change-Id: I1ad7431b399c38dc0391ccee74d2c643ba0b0675