-----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 sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users