mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
get test-query to fail consistently.
PERR() when xaccTransGetSharePrice() overflows. Loop test-query, and start the rng to fail consistently. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@10156 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
ae6b1c475e
commit
2291561fbf
@ -2805,7 +2805,7 @@ xaccSplitGetValue (const Split * cs)
|
||||
gnc_numeric
|
||||
xaccSplitGetSharePrice (const Split * split)
|
||||
{
|
||||
gnc_numeric amt, val;
|
||||
gnc_numeric amt, val, price;
|
||||
if(!split)
|
||||
{
|
||||
return gnc_numeric_create(1, 1);
|
||||
@ -2826,10 +2826,22 @@ xaccSplitGetSharePrice (const Split * split)
|
||||
}
|
||||
return gnc_numeric_create(0, 1);
|
||||
}
|
||||
return gnc_numeric_div(val, amt,
|
||||
price = gnc_numeric_div(val, amt,
|
||||
GNC_DENOM_AUTO,
|
||||
GNC_HOW_DENOM_SIGFIGS(PRICE_SIGFIGS) |
|
||||
GNC_HOW_RND_ROUND);
|
||||
|
||||
/* During random checks we can get some very weird prices. Let's
|
||||
* handle some overflow and other error conditions by returning
|
||||
* zero. But still print an error to let us know it happened.
|
||||
*/
|
||||
if (gnc_numeric_check(price)) {
|
||||
PERR("Computing Shares Price Failed (%d): [ %lld / %lld ] / [ %lld / %lld ]",
|
||||
gnc_numeric_check(price), val.num, val.denom, amt.num, amt.denom);
|
||||
return gnc_numeric_create(0,1);
|
||||
}
|
||||
|
||||
return price;
|
||||
}
|
||||
|
||||
/********************************************************************\
|
||||
|
@ -66,12 +66,19 @@ run_test (void)
|
||||
static void
|
||||
main_helper (void *closure, int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
|
||||
gnc_module_load("gnucash/engine", 0);
|
||||
|
||||
g_log_set_always_fatal( G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING );
|
||||
|
||||
xaccLogDisable ();
|
||||
|
||||
/* Always start from the same random seed so we fail consistently */
|
||||
srand(0);
|
||||
|
||||
/* Loop the test. */
|
||||
for (i=0; i < 10; i++)
|
||||
run_test ();
|
||||
|
||||
success("queries seem to work");
|
||||
|
Loading…
Reference in New Issue
Block a user