diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm index 34f2949..0686b67 100644 --- a/src/PVE/JSONSchema.pm +++ b/src/PVE/JSONSchema.pm @@ -256,7 +256,8 @@ sub pve_verify_configid { if ($id !~ m/^$CONFIGID_RE\z/) { return undef if $noerr; - die "invalid configuration ID '$id'\n"; + die "invalid configuration ID '$id' - it must start with a letter, be at least two" + . " characters long and only contain letters, digits, '-' and '_'\n"; } return $id; } diff --git a/test/format_test.pl b/test/format_test.pl index 7b461ef..46256f4 100644 --- a/test/format_test.pl +++ b/test/format_test.pl @@ -25,6 +25,14 @@ foreach my $id (@$invalid_configids) { is(PVE::JSONSchema::pve_verify_configid($id, $noerr), undef, 'invalid configid'); } +eval { PVE::JSONSchema::pve_verify_configid('gpu@node1') }; +is( + $@, + "invalid configuration ID 'gpu\@node1' - it must start with a letter, be at least two" + . " characters long and only contain letters, digits, '-' and '_'\n", + 'invalid configid error explains the format', +); + # test some string rendering my $render_data = [ ["timestamp", 0, undef, "1970-01-01 01:00:00"],