diff mbox series

[3/3] tests: Avoid side effects inside g_assert() arguments

Message ID 20210503165525.26221-4-peter.maydell@linaro.org
State Superseded
Headers show
Series tests: three easy Coverity fixes | expand

Commit Message

Peter Maydell May 3, 2021, 4:55 p.m. UTC
For us, assertions are always enabled, but side-effect expressions
inside the argument to g_assert() are bad style anyway. Fix three
occurrences in IPMI related tests, which will silence some Coverity
nits.

Fixes: CID 1432322, CID 1432287, CID 1432291
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

---
 tests/qtest/ipmi-bt-test.c  | 6 ++++--
 tests/qtest/ipmi-kcs-test.c | 3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

-- 
2.20.1

Comments

Philippe Mathieu-Daudé May 3, 2021, 5:14 p.m. UTC | #1
On 5/3/21 6:55 PM, Peter Maydell wrote:
> For us, assertions are always enabled, but side-effect expressions

> inside the argument to g_assert() are bad style anyway. Fix three

> occurrences in IPMI related tests, which will silence some Coverity

> nits.

> 

> Fixes: CID 1432322, CID 1432287, CID 1432291

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

> ---

>  tests/qtest/ipmi-bt-test.c  | 6 ++++--

>  tests/qtest/ipmi-kcs-test.c | 3 ++-

>  2 files changed, 6 insertions(+), 3 deletions(-)


Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Thomas Huth May 4, 2021, 7:18 a.m. UTC | #2
On 03/05/2021 18.55, Peter Maydell wrote:
> For us, assertions are always enabled, but side-effect expressions

> inside the argument to g_assert() are bad style anyway. Fix three

> occurrences in IPMI related tests, which will silence some Coverity

> nits.

> 

> Fixes: CID 1432322, CID 1432287, CID 1432291

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

> ---

>   tests/qtest/ipmi-bt-test.c  | 6 ++++--

>   tests/qtest/ipmi-kcs-test.c | 3 ++-

>   2 files changed, 6 insertions(+), 3 deletions(-)

> 

> diff --git a/tests/qtest/ipmi-bt-test.c b/tests/qtest/ipmi-bt-test.c

> index a42207d416f..8492f02a9c3 100644

> --- a/tests/qtest/ipmi-bt-test.c

> +++ b/tests/qtest/ipmi-bt-test.c

> @@ -98,7 +98,8 @@ static void bt_wait_b_busy(void)

>   {

>       unsigned int count = 1000;

>       while (IPMI_BT_CTLREG_GET_B_BUSY() != 0) {

> -        g_assert(--count != 0);

> +        --count;

> +        g_assert(count != 0);

>           usleep(100);

>       }

>   }

> @@ -107,7 +108,8 @@ static void bt_wait_b2h_atn(void)

>   {

>       unsigned int count = 1000;

>       while (IPMI_BT_CTLREG_GET_B2H_ATN() == 0) {

> -        g_assert(--count != 0);

> +        --count;

> +        g_assert(count != 0);

>           usleep(100);

>       }

>   }

> diff --git a/tests/qtest/ipmi-kcs-test.c b/tests/qtest/ipmi-kcs-test.c

> index fc0a918c8d1..afc24dd3e46 100644

> --- a/tests/qtest/ipmi-kcs-test.c

> +++ b/tests/qtest/ipmi-kcs-test.c

> @@ -73,7 +73,8 @@ static void kcs_wait_ibf(void)

>   {

>       unsigned int count = 1000;

>       while (IPMI_KCS_CMDREG_GET_IBF() != 0) {

> -        g_assert(--count != 0);

> +        --count;

> +        g_assert(count != 0);

>       }

>   }


According to 
https://developer.gnome.org/glib/unstable/glib-Testing.html#g-assert 
g_assert() should be avoided in unit tests and g_assert_true() should be 
used instead. So I think it might be nicer to use g_assert_true() here?

  Thomas
Peter Maydell May 4, 2021, 8:46 a.m. UTC | #3
On Tue, 4 May 2021 at 08:18, Thomas Huth <thuth@redhat.com> wrote:
>

> On 03/05/2021 18.55, Peter Maydell wrote:

> > For us, assertions are always enabled, but side-effect expressions

> > inside the argument to g_assert() are bad style anyway. Fix three

> > occurrences in IPMI related tests, which will silence some Coverity

> > nits.

> >

> > Fixes: CID 1432322, CID 1432287, CID 1432291

> > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


> > diff --git a/tests/qtest/ipmi-kcs-test.c b/tests/qtest/ipmi-kcs-test.c

> > index fc0a918c8d1..afc24dd3e46 100644

> > --- a/tests/qtest/ipmi-kcs-test.c

> > +++ b/tests/qtest/ipmi-kcs-test.c

> > @@ -73,7 +73,8 @@ static void kcs_wait_ibf(void)

> >   {

> >       unsigned int count = 1000;

> >       while (IPMI_KCS_CMDREG_GET_IBF() != 0) {

> > -        g_assert(--count != 0);

> > +        --count;

> > +        g_assert(count != 0);

> >       }

> >   }

>

> According to

> https://developer.gnome.org/glib/unstable/glib-Testing.html#g-assert

> g_assert() should be avoided in unit tests and g_assert_true() should be

> used instead. So I think it might be nicer to use g_assert_true() here?


That probably depends on what we decide about whether we want to
use glib-testing-style "assert but this might not stop execution" in our
tests: see this thread:
https://lore.kernel.org/qemu-devel/CAFEAcA9juOChqrh5orybJQwpQsyEZ5z3Dvmy7fjX0DW4Nbgmrg@mail.gmail.com/
(I should have cc'd you and Laurent on that as qtest maintainers; sorry.)

-- PMM
Alex Bennée May 4, 2021, 8:48 a.m. UTC | #4
Peter Maydell <peter.maydell@linaro.org> writes:

> For us, assertions are always enabled, but side-effect expressions

> inside the argument to g_assert() are bad style anyway. Fix three

> occurrences in IPMI related tests, which will silence some Coverity

> nits.

>

> Fixes: CID 1432322, CID 1432287, CID 1432291

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

> ---

>  tests/qtest/ipmi-bt-test.c  | 6 ++++--

>  tests/qtest/ipmi-kcs-test.c | 3 ++-

>  2 files changed, 6 insertions(+), 3 deletions(-)

>

> diff --git a/tests/qtest/ipmi-bt-test.c b/tests/qtest/ipmi-bt-test.c

> index a42207d416f..8492f02a9c3 100644

> --- a/tests/qtest/ipmi-bt-test.c

> +++ b/tests/qtest/ipmi-bt-test.c

> @@ -98,7 +98,8 @@ static void bt_wait_b_busy(void)

>  {

>      unsigned int count = 1000;

>      while (IPMI_BT_CTLREG_GET_B_BUSY() != 0) {

> -        g_assert(--count != 0);

> +        --count;

> +        g_assert(count != 0);


This does seem a little weird - we are not asserting an interface
violation just that the read should have cleared in 1000 * 100 usec. If
it doesn't is that really a theoretically impossible situation or just
an example of a failed test.

That said looking at how deeply buried in the test these helpers are an
assert is probably better than a convoluted attempt to return out and
exit the test with a failure.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>



>          usleep(100);

>      }

>  }

> @@ -107,7 +108,8 @@ static void bt_wait_b2h_atn(void)

>  {

>      unsigned int count = 1000;

>      while (IPMI_BT_CTLREG_GET_B2H_ATN() == 0) {

> -        g_assert(--count != 0);

> +        --count;

> +        g_assert(count != 0);

>          usleep(100);

>      }

>  }

> diff --git a/tests/qtest/ipmi-kcs-test.c b/tests/qtest/ipmi-kcs-test.c

> index fc0a918c8d1..afc24dd3e46 100644

> --- a/tests/qtest/ipmi-kcs-test.c

> +++ b/tests/qtest/ipmi-kcs-test.c

> @@ -73,7 +73,8 @@ static void kcs_wait_ibf(void)

>  {

>      unsigned int count = 1000;

>      while (IPMI_KCS_CMDREG_GET_IBF() != 0) {

> -        g_assert(--count != 0);

> +        --count;

> +        g_assert(count != 0);

>      }

>  }



-- 
Alex Bennée
diff mbox series

Patch

diff --git a/tests/qtest/ipmi-bt-test.c b/tests/qtest/ipmi-bt-test.c
index a42207d416f..8492f02a9c3 100644
--- a/tests/qtest/ipmi-bt-test.c
+++ b/tests/qtest/ipmi-bt-test.c
@@ -98,7 +98,8 @@  static void bt_wait_b_busy(void)
 {
     unsigned int count = 1000;
     while (IPMI_BT_CTLREG_GET_B_BUSY() != 0) {
-        g_assert(--count != 0);
+        --count;
+        g_assert(count != 0);
         usleep(100);
     }
 }
@@ -107,7 +108,8 @@  static void bt_wait_b2h_atn(void)
 {
     unsigned int count = 1000;
     while (IPMI_BT_CTLREG_GET_B2H_ATN() == 0) {
-        g_assert(--count != 0);
+        --count;
+        g_assert(count != 0);
         usleep(100);
     }
 }
diff --git a/tests/qtest/ipmi-kcs-test.c b/tests/qtest/ipmi-kcs-test.c
index fc0a918c8d1..afc24dd3e46 100644
--- a/tests/qtest/ipmi-kcs-test.c
+++ b/tests/qtest/ipmi-kcs-test.c
@@ -73,7 +73,8 @@  static void kcs_wait_ibf(void)
 {
     unsigned int count = 1000;
     while (IPMI_KCS_CMDREG_GET_IBF() != 0) {
-        g_assert(--count != 0);
+        --count;
+        g_assert(count != 0);
     }
 }