package PVE::Storage::TestFilesystemPath; use strict; use warnings; use lib qw(..); use PVE::Storage; use Test::More; my $path = '/some/path'; # each array entry is a test that consists of the following keys: # volname => image name that is passed to parse_volname # snapname => to test the die condition # expected => the array of return values; or the die message my $tests = [ { volname => '1234/vm-1234-disk-0.raw', snapname => undef, expected => [ "$path/images/1234/vm-1234-disk-0.raw", '1234', 'images' ], }, { volname => '1234/vm-1234-disk-0.raw', snapname => 'my_snap', expected => "can't snapshot this image format\n" }, { volname => '1234/vm-1234-disk-0.qcow2', snapname => undef, expected => [ "$path/images/1234/vm-1234-disk-0.qcow2", '1234', 'images' ], }, { volname => '1234/vm-1234-disk-0.qcow2', snapname => 'my_snap', expected => [ "$path/images/1234/vm-1234-disk-0.qcow2", '1234', 'images' ], }, { volname => 'iso/my-awesome-proxmox.iso', snapname => undef, expected => [ "$path/template/iso/my-awesome-proxmox.iso", undef, 'iso' ], }, { volname => "backup/vzdump-qemu-1234-2020_03_30-21_12_40.vma", snapname => undef, expected => [ "$path/dump/vzdump-qemu-1234-2020_03_30-21_12_40.vma", 1234, 'backup' ], }, ]; plan tests => scalar @$tests; foreach my $tt (@$tests) { my $volname = $tt->{volname}; my $snapname = $tt->{snapname}; my $expected = $tt->{expected}; my $scfg = { path => $path }; my $got; eval { $got = [ PVE::Storage::Plugin->filesystem_path($scfg, $volname, $snapname) ]; }; $got = $@ if $@; is_deeply($got, $expected, "wantarray: filesystem_path for $volname") || diag(explain($got)); } done_testing(); 1;