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
|
gnc_numeric
|
||||||
xaccSplitGetSharePrice (const Split * split)
|
xaccSplitGetSharePrice (const Split * split)
|
||||||
{
|
{
|
||||||
gnc_numeric amt, val;
|
gnc_numeric amt, val, price;
|
||||||
if(!split)
|
if(!split)
|
||||||
{
|
{
|
||||||
return gnc_numeric_create(1, 1);
|
return gnc_numeric_create(1, 1);
|
||||||
@ -2826,10 +2826,22 @@ xaccSplitGetSharePrice (const Split * split)
|
|||||||
}
|
}
|
||||||
return gnc_numeric_create(0, 1);
|
return gnc_numeric_create(0, 1);
|
||||||
}
|
}
|
||||||
return gnc_numeric_div(val, amt,
|
price = gnc_numeric_div(val, amt,
|
||||||
GNC_DENOM_AUTO,
|
GNC_DENOM_AUTO,
|
||||||
GNC_HOW_DENOM_SIGFIGS(PRICE_SIGFIGS) |
|
GNC_HOW_DENOM_SIGFIGS(PRICE_SIGFIGS) |
|
||||||
GNC_HOW_RND_ROUND);
|
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,13 +66,20 @@ run_test (void)
|
|||||||
static void
|
static void
|
||||||
main_helper (void *closure, int argc, char **argv)
|
main_helper (void *closure, int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
gnc_module_load("gnucash/engine", 0);
|
gnc_module_load("gnucash/engine", 0);
|
||||||
|
|
||||||
g_log_set_always_fatal( G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING );
|
g_log_set_always_fatal( G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING );
|
||||||
|
|
||||||
xaccLogDisable ();
|
xaccLogDisable ();
|
||||||
|
|
||||||
run_test ();
|
/* 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");
|
success("queries seem to work");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user