diff --git a/tests/Makefile.am b/tests/Makefile.am index 13692db79..9394de594 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -385,11 +385,11 @@ disks_test_add_disks_LDADD = \ EXTRA_DIST += disks/debug-qemu.sh EXTRA_DIST += \ - events/test-console-debug.pl \ + events/test-console-debug.py \ events/libvirt-auth.xml -TESTS += events/test-console-debug.pl -EXTRA_DIST += events/test-console-debug.pl +TESTS += events/test-console-debug.py +EXTRA_DIST += events/test-console-debug.py if HAVE_LIBVIRT TESTS += events/test-libvirt-auth-callbacks diff --git a/tests/events/test-console-debug.pl b/tests/events/test-console-debug.pl deleted file mode 100755 index 777a05901..000000000 --- a/tests/events/test-console-debug.pl +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env perl -# Copyright (C) 2013 Red Hat Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -# Test that console debug messages work. - -use strict; -use warnings; - -use Sys::Guestfs; - -exit 77 if $ENV{SKIP_TEST_CONSOLE_DEBUG_PL}; - -my $g = Sys::Guestfs->new (); - -my $log_messages = ""; -my $callback_invoked = 0; - -sub callback { - my $ev = shift; - my $eh = shift; - my $buf = shift; - my $array = shift; - - $log_messages .= $buf; - $callback_invoked++; -} - -my $events = $Sys::Guestfs::EVENT_APPLIANCE; -my $eh; -$eh = $g->set_event_callback (\&callback, $events); - -$g->set_verbose (1); - -$g->add_drive_ro ("/dev/null"); -$g->launch (); - -my $magic = "abcdefgh9876543210"; - -$g->debug ("print", [$magic]); - -$g->close (); - -# Ensure the magic string appeared in the log messages. -if ($log_messages !~ /$magic/) { - print "$0: log_messages does not contain magic string '$magic'\n"; - print "$0: callback was invoked $callback_invoked times\n"; - print "$0: log messages were:\n"; - print "-" x 40, "\n"; - print $log_messages; - print "-" x 40, "\n"; - exit 1 -} diff --git a/tests/events/test-console-debug.py b/tests/events/test-console-debug.py new file mode 100755 index 000000000..f6a90d6ca --- /dev/null +++ b/tests/events/test-console-debug.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 +# Copyright (C) 2025 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +# Test that console debug messages work. + +import os +import sys +import guestfs + +if os.environ.get('SKIP_TEST_CONSOLE_DEBUG_PY'): + sys.exit(77) + +g = guestfs.GuestFS() + +log_messages = "" +callback_invoked = 0 + +def callback(ev, eh, buf, array): + global log_messages, callback_invoked + + # guestfs passes log buffer as bytes under Python 3, so decode first + if isinstance(buf, bytes): + buf = buf.decode("utf-8", errors="replace") + + log_messages += buf + callback_invoked += 1 + +events = guestfs.EVENT_APPLIANCE +eh = g.set_event_callback(callback, events) + +g.set_verbose(1) +g.add_drive_ro("/dev/null") +g.launch() + +magic = "abcdefgh9876543210" +g.debug("print", [magic]) + +g.close() + +# Ensure the magic string appeared in the log messages. +if magic not in log_messages: + print("log_messages does not contain magic string '{}'".format(magic)) + print("callback was invoked {} times".format(callback_invoked)) + print("log messages were:") + print("-" * 40) + print(log_messages) + print("-" * 40) + sys.exit(1)