Config-Model-OpenSsh
view release on metacpan or search on metacpan
xt/parser.t view on Meta::CPAN
use strict;
use warnings;
use lib qw(contrib/lib);
use 5.22.0;
use ParseMan;
use Test::More;
use Test::Differences;
use Path::Tiny;
use experimental qw/postderef signatures/ ;
use XXX;
my $html = path('xt/ssh_config.html')->slurp;
my $data = parse_html_man_page($html);
subtest "man page transformation" => sub {
# test some data items
is($data->{element_list}[0],'Host', "first element name");
is($data->{element_list}[5],'BindAddress', "5th element name");
my $param_data=$data->{element_data}{'VerifyHostKeyDNS'};
is($param_data->[0],'B<VerifyHostKeyDNS>','check B<> transformation in parameter name');
like($param_data->[1],qr/B<yes>/,'check B<> transformation in parameter description');
is($param_data->[2],"See also\nI<VERIFYING HOST KEYS> in L<ssh(1)>.", "check I<> and L<> transformation");
};
subtest "test generation of model string" => sub {
my @unilines = qw/ControlPersist GSSAPIClientIdentity IdentityAgent/;
my $boolean = sub {
return "type=leaf value_type=boolean write_as=no,yes upstream_default=$_[0]";
};
my $enum = sub ($set,$def = undef) {
my $str = "type=leaf value_type=enum choice=$set";
$str .= " upstream_default=$def" if defined $def;
return $str;
};
my %expected_load = (
AddKeysToAgent => $enum->('yes,confirm,ask,no', 'no'),
AddressFamily => $enum->('any,inet,inet6', 'any'),
BatchMode => $boolean->('no'),
CanonicalizeFallbackLocal => $boolean->('yes'),
CanonicalizeHostname => $enum->('no,yes,always', 'no'),
CanonicalizeMaxDots => 'type=leaf value_type=integer upstream_default=1',
CheckHostIP => $boolean->('yes'),
ConnectionAttempts => 'type=leaf value_type=integer upstream_default=1',
ConnectTimeout => 'type=leaf value_type=integer',
ControlMaster => $enum->('auto,autoask,yes,no,ask', 'no'),
DynamicForward => 'type=list cargo type=leaf value_type=uniline',
ExitOnForwardFailure => $boolean->('no'),
ForwardX11Timeout => 'type=leaf value_type=integer',
GlobalKnownHostsFile => 'type=leaf value_type=uniline upstream_default=/etc/ssh/ssh_known_hosts',
GSSAPIAuthentication => $boolean->('no'),
GSSAPITrustDns => $boolean->('no'),
Host => 'type=hash index_type=string cargo type=node config_class_name=Ssh::HostElement',
IdentitiesOnly => $boolean->('no'),
IdentityFile => 'type=list cargo type=leaf value_type=uniline',
IPQoS => 'type=leaf value_type=uniline upstream_default="af21 cs1"',
Match => 'type=hash index_type=string cargo type=node config_class_name=Ssh::HostElement',
NumberOfPasswordPrompts => 'type=leaf value_type=integer upstream_default=3',
RequestTTY => $enum->('no,yes,force,auto'),
SendEnv => 'type=list cargo type=leaf value_type=uniline',
ServerAliveCountMax => 'type=leaf value_type=integer upstream_default=3',
ServerAliveInterval => 'type=leaf value_type=integer upstream_default=0',
LocalForward => 'type=list cargo type=node config_class_name="Ssh::PortForward"',
RemoteForward => 'type=list cargo type=node config_class_name="Ssh::PortForward"',
( run in 1.435 second using v1.01-cache-2.11-cpan-39bf76dae61 )