-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 01/05/13 12:00, Igor Korot wrote:
> So, how people check whether db failure result in graceful program
> termination/proper flow?
I use a macro that takes this form:
#define TESTPOINT(name, normal, failure)
I use it like this:
TESTPOINT(StepNoMem, rc=sqlite3_step(stmt), rc=SQLITE_NOMEM);
The macro expands to something like this with debug builds:
do {
if(_point_should_fail(#name) { failure; }
else { normal; }
} while(0)
The _point_should_fail function returns true once and then false from then
on. My test suite would then look like:
def test2c():
set_point_should_fail("StepNoMem")
... code that should handle the failure correctly ...
Of course reality is a little messier than this. Here is some code that
sets a failure point:
https://code.google.com/p/apsw/source/browse/src/apsw.c#217
Here is the corresponding test:
https://code.google.com/p/apsw/source/browse/tests.py#7562
(I use 1/0 to ensure that there will always be an exception, and if it
turns out to be ZeroDivision then I know the previous line didn't cause
one and should have.)
Roger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iEYEARECAAYFAlGBp+YACgkQmOOfHg372QQsrACgiDu/z2nn+NZdf/Q/Ep4JBrFu
U24An3J26qO54dT89vSVKo/Js60O7pwc
=mc1D
-----END PGP SIGNATURE-----
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users