hanchenye-llvm-project/clang/test/Analysis
Ted Kremenek 1c2fb270ce [analyzer] Introduce MallocOverflowSecurityChecker, a simple flow-sensitive checker that may be useful for security auditing. This checker is currently too noisy to be on by default.
llvm-svn: 136804
2011-08-03 20:17:43 +00:00
..
CFDateGC.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
CFNumber.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
CFRetainRelease_NSAssertionHandler.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
CGColorSpace.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
CheckNSError.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
MissingDealloc.m Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
NSPanel.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
NSString.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
NSWindow.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
NoReturn.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
OSAtomic_mac.cpp Allow 'Environment::getSVal()' to allow an optional way for checkers to do a direct lookup to values bound to expressions, without 2011-04-27 05:34:09 +00:00
ObjCProperties.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
ObjCRetSigs.m Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
PR2599.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
PR2978.m Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
PR3991.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
PR7218.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
PR9741.cpp Fix PR9741. The implicit declarations created for range-based for loops weren't being added to the DeclContext (nor were they being marked as implicit). Also, the declarations were being emitted in the wrong order when building the CFG. 2011-04-18 15:49:25 +00:00
additive-folding-range-constraints.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
additive-folding.c Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
analyze_display_progress.c
analyzer-stats.c Re-enable the IdempotentOperations checker for --analyze, and put it and the DeadStores checker into the "deadcode" group. 2011-03-12 06:14:28 +00:00
array-struct-region.c Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
array-struct.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
auto-obj-dtors-cfg-output.cpp [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs. 2011-07-28 23:07:59 +00:00
base-init.cpp Begin reworking static analyzer support for C++ method calls. The current logic was divorced 2011-03-30 17:41:19 +00:00
blocks.m [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
bstring.c [analyzer] Eliminate "byte string function" from CStringChecker's diagnostics, and make it easier to provide custom messages for overflow checking, in preparation for re-enabling strncpy checking. 2011-06-20 02:06:40 +00:00
casts.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
casts.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
cfref_PR2519.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
cfref_rdar6080742.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
chroot.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
complex.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
concrete-address.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
constant-folding.c Emit a -Wnull-dereference warning for "*null" not just "*null = something". Addresses rdar://9269271. 2011-04-26 17:41:22 +00:00
cxx-crashes.cpp Don't add a symbolic region for 'this' if the member function is static. 2011-03-26 14:30:44 +00:00
dead-stores.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
dead-stores.cpp Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
dead-stores.m Re-enable the IdempotentOperations checker for --analyze, and put it and the DeadStores checker into the "deadcode" group. 2011-03-12 06:14:28 +00:00
delegates.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
derived-to-base.cpp [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
dtor.cpp [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
dtors-in-dtor-cfg-output.cpp [analyzer] Use the new registration mechanism for the debugging info "checks". 2011-02-17 21:39:39 +00:00
elementtype.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
exercise-ps.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
fields.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
free.c Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
func.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
idempotent-operations-limited-loops.c Re-enable the IdempotentOperations checker for --analyze, and put it and the DeadStores checker into the "deadcode" group. 2011-03-12 06:14:28 +00:00
idempotent-operations.c fix a bunch of comment typos found by codespell. Patch by 2011-04-15 05:22:18 +00:00
idempotent-operations.cpp Teach IdempotentOperationsChecker about paths aborted because ExprEngine didn't know how to handle a specific Expr type. 2011-04-02 02:56:23 +00:00
idempotent-operations.m Remove bogus assertion in IdempotentOperationsChecker. 2011-03-15 19:27:57 +00:00
initializer.cpp [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
initializers-cfg-output.cpp [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs. 2011-07-28 23:07:59 +00:00
inline.c Begin reworking static analyzer support for C++ method calls. The current logic was divorced 2011-03-30 17:41:19 +00:00
inline2.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
inline3.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
inline4.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
iterators.cpp Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
keychainAPI.m KeychainAPI checker: only check the paths on which the allocator function returned noErr. (+ minor cleanup) 2011-08-02 17:11:03 +00:00
lvalue.cpp [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
malloc-overflow.c [analyzer] Introduce MallocOverflowSecurityChecker, a simple flow-sensitive checker that may be useful for security auditing. This checker is currently too noisy to be on by default. 2011-08-03 20:17:43 +00:00
malloc.c More accurately model realloc() when the size argument is 0. realloc() with a size of 0 is equivalent to free(). The memory region should be marked as free and not used again. 2011-04-27 14:49:29 +00:00
method-arg-decay.m [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
method-call.cpp [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
misc-ps-64.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
misc-ps-cxx0x.cpp Add explicit CFG support for ignoring static_asserts. 2011-05-24 20:41:31 +00:00
misc-ps-eager-assume.m Eliminate the -f[no]objc-infer-related-result-type flags; there's no 2011-06-13 16:42:53 +00:00
misc-ps-ranges.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
misc-ps-region-store-i386.m [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
misc-ps-region-store-x86_64.m [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
misc-ps-region-store.cpp Teach RegionStore not to symbolic array values whose indices it cannot reason about. 2011-05-19 23:37:58 +00:00
misc-ps-region-store.m Fix regression in static analyzer's handling of prefix '--' operator. It was being treated as postfix '--' in C mode. 2011-05-20 23:40:06 +00:00
misc-ps-region-store.mm [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
misc-ps.c [analyzer] PR8962 again. Ban ParenExprs (and friends) from block-level expressions (by calling IgnoreParens before adding expressions to blocks). Undo 132769 (LiveVariables' local IgnoreParens), since it's no longer necessary. 2011-06-10 08:49:37 +00:00
misc-ps.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
new.cpp [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
nil-receiver-undefined-larger-than-voidptr-ret-region.m [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
nil-receiver-undefined-larger-than-voidptr-ret.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
no-exit-cfg.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
no-outofbounds.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
null-deref-ps-region.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
null-deref-ps.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
nullptr.cpp [analyzer] GNU __null is a pointer-sized integer, not a pointer. Fixes PR10372. 2011-07-15 20:29:02 +00:00
objc-arc.m Automatic Reference Counting. 2011-06-15 23:02:42 +00:00
operator-calls.cpp [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
out-of-bounds.c [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs. 2011-07-28 23:07:59 +00:00
outofbound.c Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
override-werror.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
plist-output-alternate.m [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs. 2011-07-28 23:07:59 +00:00
plist-output.m [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
pr4209.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
pr_2542_rdar_6793404.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
pr_4164.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
properties.m [analyzer] Run the ExprEngine depending on the CheckerManager having path-sensitive checkers. 2011-02-28 19:49:17 +00:00
pthreadlock.c [analysis] Add checks for double-locking and lock order reversal bugs for 2011-07-19 20:21:41 +00:00
ptr-arith.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
rdar-6442306-1.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
rdar-6540084.m Re-enable the IdempotentOperations checker for --analyze, and put it and the DeadStores checker into the "deadcode" group. 2011-03-12 06:14:28 +00:00
rdar-6541136-region.c Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
rdar-6562655.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
rdar-6600344-nil-receiver-undefined-struct-ret.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
rdar-7168531.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
refcnt_naming.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
reference.cpp [analyzer] fix handling of MaterializeTemporaryExpr by binding the result value to 2011-07-28 23:07:36 +00:00
region-1.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
retain-release-gc-only.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
retain-release-path-notes-gc.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
retain-release-path-notes.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
retain-release-region-store.m [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
retain-release.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
retain-release.mm Eliminate the -f[no]objc-infer-related-result-type flags; there's no 2011-06-13 16:42:53 +00:00
security-syntax-checks-no-emit.c Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
security-syntax-checks.m Add security syntax checker for strcat() which causes the Static Analyzer to generate a warning any time the strcat() function is used with a note suggesting to use a function which provides bounded buffers. CWE-119. 2011-04-05 20:18:46 +00:00
self-init.m Move the SelfInit checker to the 'cocoa.experimental' package. 2011-04-30 06:46:45 +00:00
sizeofpointer.c [analyzer] Use the new registration mechanism on the non-path-sensitive-checkers: 2011-02-17 21:39:33 +00:00
stack-addr-ps.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
stack-addr-ps.cpp Follow through references to catch returned stack addresses, local blocks, label addresses or references to temporaries, e.g: 2010-11-30 22:57:32 +00:00
stackaddrleak.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
stream.c [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
string-fail.c [analyzer] CStringChecker checks functions in the C standard library, not C++. Its external name is now unix.experimental.CString. 2011-06-14 01:40:43 +00:00
string.c [analyzer] strnlen isn't a builtin, don't test for it 2011-06-28 05:34:40 +00:00
temp-obj-dtors-cfg-output.cpp [analyzer] Overhaul how the static analyzer expects CFGs by forcing CFGs to be linearized only when used by the static analyzer. This required a rewrite of LiveVariables, and exposed a ton of subtle bugs. 2011-07-28 23:07:59 +00:00
undef-buffers.c Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
uninit-msg-expr.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
uninit-ps-rdar6145427.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
uninit-vals-ps-region.m [analyzer] Use UnknownVal when default-initializing arrays whose element types we don't model, to distinguish them from uninitialized arrays (PR10163). 2011-06-27 20:36:38 +00:00
uninit-vals-ps.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
uninit-vals.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
unions-region.m [analyzer] Remove '-analyzer-check-objc-mem' flag, the nominee for best misnomer award. 2011-02-28 19:49:42 +00:00
unix-fns.c Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00
unreachable-code-path.c Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
unused-ivars.m Rework checker "packages" and groups to be more hierarchical. 2011-03-24 00:28:47 +00:00
variadic-method-types.m Really remove FlatStoreManager and BasicStoreManager, this time from the driver. Also remove associated tests. Sorry for the messy commits; this is the result of a botched Git merge. 2011-07-28 23:08:16 +00:00