[Lldb-commits] [lldb] r232689 - Comment discouraging writing command based test cases.
Jim Ingham
jingham at apple.com
Wed Mar 18 16:16:58 PDT 2015
Author: jingham
Date: Wed Mar 18 18:16:58 2015
New Revision: 232689
URL: http://llvm.org/viewvc/llvm-project?rev=232689&view=rev
Log:
Comment discouraging writing command based test cases.
Modified:
lldb/trunk/test/README-TestSuite
Modified: lldb/trunk/test/README-TestSuite
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/README-TestSuite?rev=232689&r1=232688&r2=232689&view=diff
==============================================================================
--- lldb/trunk/test/README-TestSuite (original)
+++ lldb/trunk/test/README-TestSuite Wed Mar 18 18:16:58 2015
@@ -133,3 +133,27 @@ $ DOTEST_PROFILE=YES DOTEST_SCRIPT_DIR=/
After that, I used the pstats.py module to browse the statistics:
$ python /System/Library/Frameworks/Python.framework/Versions/Current/lib/python2.6/pstats.py my.profile
+
+o Writing test cases:
+
+ We strongly prefer writing test cases using the SB API's rather than the runCmd & expect.
+ Unless you are actually testing some feature of the command line, please don't write
+ command based tests. For historical reasons there are plenty of examples of tests in the
+ test suite that use runCmd where they shouldn't, but don't copy them, copy the plenty that
+ do use the SB API's instead.
+
+ The reason for this is that our policy is that we will maintain compatibility with the
+ SB API's. But we don't make any similar guarantee about the details of command result format.
+ If your test is using the command line, it is going to have to check against the command result
+ text, and you either end up writing your check pattern by checking as little as possible so
+ you won't be exposed to random changes in the text; in which case you can end up missing some
+ failure, or you test too much and it means irrelevant changes break your tests.
+
+ However, if you use the Python API's it is possible to check all the results you want
+ to check in a very explicit way, which makes the tests much more robust.
+
+ Even if you are testing that a command-line command does some specific thing, it is still
+ better in general to use the SB API's to drive to the point where you want to run the test,
+ then use SBInterpreter::HandleCommand to run the command. You get the full result text
+ from the command in the command return object, and all the part where you are driving the
+ debugger to the point you want to test will be more robust.
More information about the lldb-commits
mailing list