On Tue, May 17, 2022 at 12:50:53PM +0200, Laszlo Ersek wrote:
On 05/17/22 12:11, Richard W.M. Jones wrote:
>
> OK I see what's going on.
>
> test-S3.sh uses the mocked boto3 in tests/test-S3/ to do an end-to-end
> test (nbdcopy).
>
> test-S3-unit.sh runs the unit tests within the plugin. It's basically
> testing the plugin as if it was a standalone Python script (without
> nbdkit being involved). This uses an internal MockS3Client class also
> inside the plugin.
>
> The second one does actually need real boto3, just because there's an
> "import boto3" at the top and we don't set up PYTHONPATH to pick up
> the tests/test-S3/ subdirectory.
>
> We could either fix the second one by skipping it if (real) boto3
> isn't installed, or by making it use the mocked boto3 from tests/test-S3/
>
> Either approach would work, but the second one (below) seems maybe
> better because we'd get more test coverage this way?
I think so, yes: from your description, "test-S3-unit.sh" seems "less
demanding" than "test-S3.sh", so if the mocked module satisfies the
latter, it should be good enough for the former too.
>
> Rich.
>
>
> diff --git a/tests/test-S3-unit.sh b/tests/test-S3-unit.sh
> index 6b6adf02..11718be3 100755
> --- a/tests/test-S3-unit.sh
> +++ b/tests/test-S3-unit.sh
> @@ -44,6 +44,6 @@ if [ "$NBDKIT_VALGRIND" = "1" ]; then
> exit 77
> fi
>
> -export PYTHONPATH=$srcdir/../plugins/S3:$PYTHONPATH
> +export PYTHONPATH=$srcdir/../plugins/S3:$srcdir/test-S3:$PYTHONPATH
>
> $PYTHON -m unittest S3
>
>
For this hunk above:
Acked-by: Laszlo Ersek <lersek(a)redhat.com>
Thanks - committed as:
https://gitlab.com/nbdkit/nbdkit/-/commit/306f94a3c54a7a697e56978dee09d2f...
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top