From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 2D3A91FF13B for ; Wed, 22 Apr 2026 13:17:09 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id CB18218752; Wed, 22 Apr 2026 13:14:39 +0200 (CEST) From: "Max R. Carrara" To: pve-devel@lists.proxmox.com Subject: [PATCH pve-storage v1 34/54] test: list volumes: reorganize and modernize test running code Date: Wed, 22 Apr 2026 13:13:00 +0200 Message-ID: <20260422111322.257380-35-m.carrara@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260422111322.257380-1-m.carrara@proxmox.com> References: <20260422111322.257380-1-m.carrara@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1776856352001 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.084 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: SPOA7UXEJXOQKJNCVVA7DUMXF5YPY55X X-Message-ID-Hash: SPOA7UXEJXOQKJNCVVA7DUMXF5YPY55X X-MailFrom: m.carrara@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Use the `use v5.36` pragma to enable subroutine signatures, warnings and strictness by default. Factor out the list of file suffixes for file formats that support backing files into its own constant. Introduce a `main()` subroutine. Move the code that runs the existing tests for `::Plugin->list_volumes()` into its own subroutine. Move the remaining single test that checks whether the vmlist returned by `PVE::Cluster::get_vmlist()` was modified into `main()`. Move the call to `Test::More`'s `plan()` into `main()` as well. Done as a preparational step for other changes. Signed-off-by: Max R. Carrara --- src/test/list_volumes_test.pm | 66 ++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/src/test/list_volumes_test.pm b/src/test/list_volumes_test.pm index 5cb08880..053ebbe3 100644 --- a/src/test/list_volumes_test.pm +++ b/src/test/list_volumes_test.pm @@ -1,7 +1,6 @@ package PVE::Storage::TestListVolumes; -use strict; -use warnings; +use v5.36; use lib qw(..); @@ -13,7 +12,7 @@ use Test::More; use Test::MockModule; use Cwd; -use File::Basename; +use File::Basename qw(fileparse); use File::Path qw(make_path remove_tree); use File::stat qw(); use File::Temp; @@ -76,6 +75,8 @@ my $scfg = { }, }; +my @BACKING_FILE_SUFFIXES = ('qcow2', 'raw', 'vmdk', 'vhdx'); + # The test cases are comprised of an arry of hashes with the following keys: # description => displayed on error by Test::More # vmid => used for image matches by list_volume @@ -667,31 +668,9 @@ my sub cmp_volinfo_by_volid { return $a->{volid} cmp $b->{volid}; } -my $plan = scalar @tests; -plan tests => $plan + 1; - -{ - # don't accidentally modify vmlist, see bug report - # https://pve.proxmox.com/pipermail/pve-devel/2020-January/041096.html - my $scfg_with_type = { path => $storage_dir, type => 'dir' }; - my $original_vmlist = { ids => {} }; - my $tested_vmlist = dclone($original_vmlist); - - PVE::Storage::Plugin->list_volumes('sid', $scfg_with_type, undef, ['images']); - - is_deeply($tested_vmlist, $original_vmlist, 'PVE::Cluster::vmlist remains unmodified') - || diag( - "Expected vmlist to remain\n", - explain($original_vmlist), - "but it turned to\n", - explain($tested_vmlist), - ); -} - -{ +my sub run_legacy_tests() { my $sid = 'local'; my $types = [grep { $scfg->{content}->{$_} } keys $scfg->{content}->%*]; - my @suffixes = ('qcow2', 'raw', 'vmdk', 'vhdx'); # run through test cases foreach my $tt (@tests) { @@ -704,7 +683,7 @@ plan tests => $plan + 1; # prepare environment my $num = 0; #parent disks for my $file (@$files) { - my ($name, $dir, $suffix) = fileparse($file, @suffixes); + my ($name, $dir, $suffix) = fileparse($file, @BACKING_FILE_SUFFIXES); make_path($dir, { verbose => 1, mode => 0755 }); @@ -732,8 +711,39 @@ plan tests => $plan + 1; # we get wrong results from leftover files remove_tree($storage_dir, { verbose => 1 }); } + + return; } -done_testing(); +sub main() { + my $plan = scalar @tests; + plan tests => $plan + 1; + + { + # don't accidentally modify vmlist, see bug report + # https://pve.proxmox.com/pipermail/pve-devel/2020-January/041096.html + my $scfg_with_type = { path => $storage_dir, type => 'dir' }; + my $original_vmlist = { ids => {} }; + my $tested_vmlist = dclone($original_vmlist); + + PVE::Storage::Plugin->list_volumes('sid', $scfg_with_type, undef, ['images']); + + is_deeply($tested_vmlist, $original_vmlist, 'PVE::Cluster::vmlist remains unmodified') + || diag( + "Expected vmlist to remain\n", + explain($original_vmlist), + "but it turned to\n", + explain($tested_vmlist), + ); + } + + run_legacy_tests(); + + done_testing(); + + return; +} + +main(); 1; -- 2.47.3