package PVE::Storage::TestGetSubdir; use strict; use warnings; use lib qw(..); use PVE::Storage::Plugin; use Test::More; my $scfg_with_path = { path => '/some/path' }; my $vtype_subdirs = PVE::Storage::Plugin::get_vtype_subdirs(); # each test is comprised of the following array keys: # [0] => storage config; positive with path key # [1] => storage type; see $vtype_subdirs # [2] => expected return from get_subdir my $tests = [ # failed matches [ $scfg_with_path, 'none', "unknown vtype 'none'\n" ], [ {}, 'iso', "storage definition has no path\n" ], ]; # creates additional positive tests foreach my $type (keys %$vtype_subdirs) { my $path = "$scfg_with_path->{path}/$vtype_subdirs->{$type}"; push @$tests, [ $scfg_with_path, $type, $path ]; } plan tests => scalar @$tests; foreach my $tt (@$tests) { my ($scfg, $type, $expected) = @$tt; my $got; eval { $got = PVE::Storage::Plugin->get_subdir($scfg, $type) }; $got = $@ if $@; is ($got, $expected, "get_subdir for $type") || diag(explain($got)); } done_testing(); 1;