Add testsuite coverage that exposes the flaw fixed in the previous patch. --- tests/opt-info.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/tests/opt-info.c b/tests/opt-info.c index b9739a5..2402a31 100644 --- a/tests/opt-info.c +++ b/tests/opt-info.c @@ -1,5 +1,5 @@ /* NBD client library in userspace - * Copyright (C) 2013-2020 Red Hat Inc. + * Copyright (C) 2013-2022 Red Hat Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -80,15 +80,11 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); } - /* info on something not present fails, wipes out prior info */ + /* changing export wipes out prior info */ if (nbd_set_export_name (nbd, "a") == -1) { fprintf (stderr, "%s\n", nbd_get_error ()); exit (EXIT_FAILURE); } - if (nbd_opt_info (nbd) != -1) { - fprintf (stderr, "expecting error for opt_info\n"); - exit (EXIT_FAILURE); - } if (nbd_get_size (nbd) != -1) { fprintf (stderr, "expecting error for get_size\n"); exit (EXIT_FAILURE); @@ -102,7 +98,13 @@ main (int argc, char *argv[]) exit (EXIT_FAILURE); } - /* info for a different export */ + /* info on something not present fails */ + if (nbd_opt_info (nbd) != -1) { + fprintf (stderr, "expecting error for opt_info\n"); + exit (EXIT_FAILURE); + } + + /* info for a different export; idempotent name change is no-op */ if (nbd_set_export_name (nbd, "b") == -1) { fprintf (stderr, "%s\n", nbd_get_error ()); exit (EXIT_FAILURE); @@ -111,6 +113,10 @@ main (int argc, char *argv[]) fprintf (stderr, "%s\n", nbd_get_error ()); exit (EXIT_FAILURE); } + if (nbd_set_export_name (nbd, "b") == -1) { + fprintf (stderr, "%s\n", nbd_get_error ()); + exit (EXIT_FAILURE); + } if ((r = nbd_get_size (nbd)) != 1) { fprintf (stderr, "expecting size of 1, got %" PRId64 "\n", r); exit (EXIT_FAILURE); -- 2.37.2
Laszlo Ersek
2022-Aug-24 12:49 UTC
[Libguestfs] [libnbd PATCH 2/2] api: Test previous patch
On 08/24/22 04:53, Eric Blake wrote:> Add testsuite coverage that exposes the flaw fixed in the previous patch. > > --- > tests/opt-info.c | 20 +++++++++++++------- > 1 file changed, 13 insertions(+), 7 deletions(-) > > diff --git a/tests/opt-info.c b/tests/opt-info.c > index b9739a5..2402a31 100644 > --- a/tests/opt-info.c > +++ b/tests/opt-info.c > @@ -1,5 +1,5 @@ > /* NBD client library in userspace > - * Copyright (C) 2013-2020 Red Hat Inc. > + * Copyright (C) 2013-2022 Red Hat Inc. > * > * This library is free software; you can redistribute it and/or > * modify it under the terms of the GNU Lesser General Public > @@ -80,15 +80,11 @@ main (int argc, char *argv[]) > exit (EXIT_FAILURE); > } > > - /* info on something not present fails, wipes out prior info */ > + /* changing export wipes out prior info */ > if (nbd_set_export_name (nbd, "a") == -1) { > fprintf (stderr, "%s\n", nbd_get_error ()); > exit (EXIT_FAILURE); > } > - if (nbd_opt_info (nbd) != -1) { > - fprintf (stderr, "expecting error for opt_info\n"); > - exit (EXIT_FAILURE); > - } > if (nbd_get_size (nbd) != -1) { > fprintf (stderr, "expecting error for get_size\n"); > exit (EXIT_FAILURE);Is this well targeted though? Here we can't say whether nbd_get_size() fails because export "a" is different from the previous "" export, or because "a" does not exist. If "a" existed and nbd_get_size() still failed, that would be more to the point.> @@ -102,7 +98,13 @@ main (int argc, char *argv[]) > exit (EXIT_FAILURE); > } > > - /* info for a different export */ > + /* info on something not present fails */ > + if (nbd_opt_info (nbd) != -1) { > + fprintf (stderr, "expecting error for opt_info\n"); > + exit (EXIT_FAILURE); > + } > +Yes, this makes sense, assuming the previous point is "good enough".> + /* info for a different export; idempotent name change is no-op */ > if (nbd_set_export_name (nbd, "b") == -1) { > fprintf (stderr, "%s\n", nbd_get_error ()); > exit (EXIT_FAILURE); > @@ -111,6 +113,10 @@ main (int argc, char *argv[]) > fprintf (stderr, "%s\n", nbd_get_error ()); > exit (EXIT_FAILURE); > } > + if (nbd_set_export_name (nbd, "b") == -1) { > + fprintf (stderr, "%s\n", nbd_get_error ()); > + exit (EXIT_FAILURE); > + } > if ((r = nbd_get_size (nbd)) != 1) { > fprintf (stderr, "expecting size of 1, got %" PRId64 "\n", r); > exit (EXIT_FAILURE); >This looks OK to me. Laszlo