(* Module: Test_Build Provides unit tests and examples for the <Build> lens. *) module Test_Build = (************************************************************************ * Group: GENERIC CONSTRUCTIONS ************************************************************************) (* View: brackets Test brackets *) let brackets = [ Build.brackets Sep.lbracket Sep.rbracket (key Rx.word) ] (* Test: brackets *) test brackets get "(foo)" = { "foo" } (************************************************************************ * Group: LIST CONSTRUCTIONS ************************************************************************) (* View: list *) let list = Build.list [ key Rx.word ] Sep.space (* Test: list *) test list get "foo bar baz" = { "foo" } { "bar" } { "baz" } (* Test: list *) test list get "foo" = * (* View: opt_list *) let opt_list = Build.opt_list [ key Rx.word ] Sep.space (* Test: opt_list *) test opt_list get "foo bar baz" = { "foo" } { "bar" } { "baz" } (************************************************************************ * Group: LABEL OPERATIONS ************************************************************************) (* View: xchg *) let xchg = [ Build.xchg Rx.space " " "space" ] (* Test: xchg *) test xchg get " \t " = { "space" } (* View: xchgs *) let xchgs = [ Build.xchgs " " "space" ] (* Test: xchgs *) test xchgs get " " = { "space" } (************************************************************************ * Group: SUBNODE CONSTRUCTIONS ************************************************************************) (* View: key_value_line *) let key_value_line = Build.key_value_line Rx.word Sep.equal (store Rx.word) (* Test: key_value_line *) test key_value_line get "foo=bar\n" = { "foo" = "bar" } (* View: key_value_line_comment *) let key_value_line_comment = Build.key_value_line_comment Rx.word Sep.equal (store Rx.word) Util.comment (* Test: key_value_line_comment *) test key_value_line_comment get "foo=bar # comment\n" = { "foo" = "bar" { "#comment" = "comment" } } (* View: key_value *) let key_value = Build.key_value Rx.word Sep.equal (store Rx.word) (* Test: key_value *) test key_value get "foo=bar" = { "foo" = "bar" } (* View: key_ws_value *) let key_ws_value = Build.key_ws_value Rx.word (* Test: key_ws_value *) test key_ws_value get "foo bar\n" = { "foo" = "bar" } (* View: flag *) let flag = Build.flag Rx.word (* Test: flag *) test flag get "foo" = { "foo" } (* View: flag_line *) let flag_line = Build.flag_line Rx.word (* Test: flag_line *) test flag_line get "foo\n" = { "foo" } (************************************************************************ * Group: BLOCK CONSTRUCTIONS ************************************************************************) (* View: block_entry The block entry used for testing *) let block_entry = Build.key_value "test" Sep.equal (store Rx.word) (* View: block The block used for testing *) let block = Build.block block_entry (* Test: block Simple test for <block> *) test block get " {test=1}" = { "test" = "1" } (* Test: block Simple test for <block> with newlines *) test block get " {\n test=1\n}" = { "test" = "1" } (* Test: block Simple test for <block> two indented entries *) test block get " {\n test=1 \n test=2 \n}" = { "test" = "1" } { "test" = "2" } (* Test: block Test <block> with a comment *) test block get " { # This is a comment\n}" = { "#comment" = "This is a comment" } (* Test: block Test <block> with comments and newlines *) test block get " { # This is a comment\n# Another comment\n}" = { "#comment" = "This is a comment" } { "#comment" = "Another comment" } (* Test: block Test defaults for blocks *) test block put " { test=1 }" after set "/#comment" "a comment"; rm "/test"; set "/test" "2" = " { # a comment\ntest=2 }" (* View: named_block The named block used for testing *) let named_block = Build.named_block "foo" block_entry (* Test: named_block Simple test for <named_block> *) test named_block get "foo {test=1}\n" = { "foo" { "test" = "1" } } (* View: logrotate_block A minimalistic logrotate block *) let logrotate_block = let entry = [ key Rx.word ] in let filename = [ label "file" . store /\/[^,#= \n\t{}]+/ ] in let filename_sep = del /[ \t\n]+/ " " in let filenames = Build.opt_list filename filename_sep in [ label "rule" . filenames . Build.block entry ] (* Test: logrotate_block *) test logrotate_block get "/var/log/wtmp\n/var/log/wtmp2\n{ missingok monthly }" = { "rule" { "file" = "/var/log/wtmp" } { "file" = "/var/log/wtmp2" } { "missingok" } { "monthly" } } (************************************************************************ * Group: COMBINATORICS ************************************************************************) (* View: combine_two A minimalistic combination lens *) let combine_two = let entry (k:string) = [ key k ] in Build.combine_two (entry "a") (entry "b") (* Test: combine_two Should parse ab *) test combine_two get "ab" = { "a" } { "b" } (* Test: combine_two Should parse ba *) test combine_two get "ba" = { "b" } { "a" } (* Test: combine_two Should not parse a *) test combine_two get "a" = * (* Test: combine_two Should not parse b *) test combine_two get "b" = * (* Test: combine_two Should not parse aa *) test combine_two get "aa" = * (* Test: combine_two Should not parse bb *) test combine_two get "bb" = * (* View: combine_two_opt A minimalistic optional combination lens *) let combine_two_opt = let entry (k:string) = [ key k ] in Build.combine_two_opt (entry "a") (entry "b") (* Test: combine_two_opt Should parse ab *) test combine_two_opt get "ab" = { "a" } { "b" } (* Test: combine_two_opt Should parse ba *) test combine_two_opt get "ba" = { "b" } { "a" } (* Test: combine_two_opt Should parse a *) test combine_two_opt get "a" = { "a" } (* Test: combine_two_opt Should parse b *) test combine_two_opt get "b" = { "b" } (* Test: combine_two_opt Should not parse aa *) test combine_two_opt get "aa" = * (* Test: combine_two_opt Should not parse bb *) test combine_two_opt get "bb" = * (* View: combine_three A minimalistic optional combination lens *) let combine_three = let entry (k:string) = [ key k ] in Build.combine_three (entry "a") (entry "b") (entry "c") (* Test: combine_three Should not parse ab *) test combine_three get "ab" = * (* Test: combine_three Should not parse ba *) test combine_three get "ba" = * (* Test: combine_three Should not parse a *) test combine_three get "a" = * (* Test: combine_three Should not parse b *) test combine_three get "b" = * (* Test: combine_three Should not parse aa *) test combine_three get "aa" = * (* Test: combine_three Should not parse bbc *) test combine_three get "bbc" = * (* Test: combine_three Should parse abc *) test combine_three get "abc" = { "a" } { "b" } { "c" } (* Test: combine_three Should parse cab *) test combine_three get "cab" = { "c" } { "a" } { "b" } (* View: combine_three_opt A minimalistic optional combination lens *) let combine_three_opt = let entry (k:string) = [ key k ] in Build.combine_three_opt (entry "a") (entry "b") (entry "c") (* Test: combine_three_opt Should parse ab *) test combine_three_opt get "ab" = { "a" } { "b" } (* Test: combine_three_opt Should parse ba *) test combine_three_opt get "ba" = { "b" } { "a" } (* Test: combine_three_opt Should parse a *) test combine_three_opt get "a" = { "a" } (* Test: combine_three_opt Should parse b *) test combine_three_opt get "b" = { "b" } (* Test: combine_three_opt Should not parse aa *) test combine_three_opt get "aa" = * (* Test: combine_three_opt Should not parse bbc *) test combine_three_opt get "bbc" = * (* Test: combine_three_opt Should parse abc *) test combine_three_opt get "abc" = { "a" } { "b" } { "c" } (* Test: combine_three_opt Should parse cab *) test combine_three_opt get "cab" = { "c" } { "a" } { "b" }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
test_access.aug | File | 3.44 KB | 0644 |
|
test_activemq_conf.aug | File | 758 B | 0644 |
|
test_activemq_xml.aug | File | 1.63 KB | 0644 |
|
test_afs_cellalias.aug | File | 1.31 KB | 0644 |
|
test_aliases.aug | File | 2.99 KB | 0644 |
|
test_anacron.aug | File | 1.21 KB | 0644 |
|
test_approx.aug | File | 1.44 KB | 0644 |
|
test_apt_update_manager.aug | File | 1.12 KB | 0644 |
|
test_aptcacherngsecurity.aug | File | 1.17 KB | 0644 |
|
test_aptconf.aug | File | 5.26 KB | 0644 |
|
test_aptpreferences.aug | File | 1.86 KB | 0644 |
|
test_aptsources.aug | File | 3.42 KB | 0644 |
|
test_authorized_keys.aug | File | 4.47 KB | 0644 |
|
test_automaster.aug | File | 1.53 KB | 0644 |
|
test_automounter.aug | File | 5.2 KB | 0644 |
|
test_avahi.aug | File | 545 B | 0644 |
|
test_backuppchosts.aug | File | 623 B | 0644 |
|
test_bbhosts.aug | File | 3.68 KB | 0644 |
|
test_bootconf.aug | File | 980 B | 0644 |
|
test_build.aug | File | 8.12 KB | 0644 |
|
test_cachefilesd.aug | File | 579 B | 0644 |
|
test_carbon.aug | File | 2.54 KB | 0644 |
|
test_ceph.aug | File | 4.86 KB | 0644 |
|
test_cgconfig.aug | File | 5.93 KB | 0644 |
|
test_cgrules.aug | File | 903 B | 0644 |
|
test_channels.aug | File | 4.72 KB | 0644 |
|
test_chrony.aug | File | 5.49 KB | 0644 |
|
test_clamav.aug | File | 8.48 KB | 0644 |
|
test_cobblermodules.aug | File | 620 B | 0644 |
|
test_cobblersettings.aug | File | 1.34 KB | 0644 |
|
test_collectd.aug | File | 1.3 KB | 0644 |
|
test_cpanel.aug | File | 1.62 KB | 0644 |
|
test_cron.aug | File | 1.96 KB | 0644 |
|
test_cron_user.aug | File | 779 B | 0644 |
|
test_crypttab.aug | File | 1.28 KB | 0644 |
|
test_csv.aug | File | 1.56 KB | 0644 |
|
test_cups.aug | File | 13.93 KB | 0644 |
|
test_cyrus_imapd.aug | File | 1.33 KB | 0644 |
|
test_darkice.aug | File | 575 B | 0644 |
|
test_debctrl.aug | File | 13.94 KB | 0644 |
|
test_desktop.aug | File | 1.23 KB | 0644 |
|
test_device_map.aug | File | 797 B | 0644 |
|
test_dhclient.aug | File | 4.75 KB | 0644 |
|
test_dhcpd.aug | File | 15.07 KB | 0644 |
|
test_dns_zone.aug | File | 10.33 KB | 0644 |
|
test_dnsmasq.aug | File | 1.19 KB | 0644 |
|
test_dovecot.aug | File | 22.15 KB | 0644 |
|
test_dpkg.aug | File | 322 B | 0644 |
|
test_dput.aug | File | 3.37 KB | 0644 |
|
test_erlang.aug | File | 2.58 KB | 0644 |
|
test_ethers.aug | File | 1.4 KB | 0644 |
|
test_exports.aug | File | 1.69 KB | 0644 |
|
test_fai_diskconfig.aug | File | 15.04 KB | 0644 |
|
test_fonts.aug | File | 19.45 KB | 0644 |
|
test_fstab.aug | File | 4.32 KB | 0644 |
|
test_fuse.aug | File | 590 B | 0644 |
|
test_gdm.aug | File | 620 B | 0644 |
|
test_getcap.aug | File | 3.77 KB | 0644 |
|
test_group.aug | File | 1.09 KB | 0644 |
|
test_grub.aug | File | 9.4 KB | 0644 |
|
test_grubenv.aug | File | 2.44 KB | 0644 |
|
test_gshadow.aug | File | 359 B | 0644 |
|
test_gtkbookmarks.aug | File | 820 B | 0644 |
|
test_host_conf.aug | File | 834 B | 0644 |
|
test_hostname.aug | File | 103 B | 0644 |
|
test_hosts.aug | File | 1.78 KB | 0644 |
|
test_hosts_access.aug | File | 6.12 KB | 0644 |
|
test_htpasswd.aug | File | 468 B | 0644 |
|
test_httpd.aug | File | 15.71 KB | 0644 |
|
test_inetd.aug | File | 4.51 KB | 0644 |
|
test_inifile.aug | File | 11.64 KB | 0644 |
|
test_inittab.aug | File | 1.82 KB | 0644 |
|
test_inputrc.aug | File | 5.13 KB | 0644 |
|
test_interfaces.aug | File | 3.65 KB | 0644 |
|
test_iproute2.aug | File | 945 B | 0644 |
|
test_iptables.aug | File | 7.39 KB | 0644 |
|
test_iscsid.aug | File | 2.45 KB | 0644 |
|
test_jaas.aug | File | 5.35 KB | 0644 |
|
test_jettyrealm.aug | File | 982 B | 0644 |
|
test_jmxaccess.aug | File | 637 B | 0644 |
|
test_jmxpassword.aug | File | 653 B | 0644 |
|
test_json.aug | File | 16.85 KB | 0644 |
|
test_kdump.aug | File | 2.84 KB | 0644 |
|
test_keepalived.aug | File | 14.33 KB | 0644 |
|
test_known_hosts.aug | File | 1.79 KB | 0644 |
|
test_koji.aug | File | 1.65 KB | 0644 |
|
test_krb5.aug | File | 28.56 KB | 0644 |
|
test_ldap.aug | File | 398 B | 0644 |
|
test_ldif.aug | File | 3.88 KB | 0644 |
|
test_ldso.aug | File | 486 B | 0644 |
|
test_lightdm.aug | File | 3.98 KB | 0644 |
|
test_limits.aug | File | 924 B | 0644 |
|
test_login_defs.aug | File | 528 B | 0644 |
|
test_logrotate.aug | File | 7.81 KB | 0644 |
|
test_logwatch.aug | File | 322 B | 0644 |
|
test_lokkit.aug | File | 2.1 KB | 0644 |
|
test_lvm.aug | File | 4.56 KB | 0644 |
|
test_mailscanner.aug | File | 32.15 KB | 0644 |
|
test_mailscanner_rules.aug | File | 2.6 KB | 0644 |
|
test_masterpasswd.aug | File | 3.21 KB | 0644 |
|
test_mcollective.aug | File | 1.2 KB | 0644 |
|
test_mdadm_conf.aug | File | 2.52 KB | 0644 |
|
test_memcached.aug | File | 1.15 KB | 0644 |
|
test_mke2fs.aug | File | 2.13 KB | 0644 |
|
test_modprobe.aug | File | 4.07 KB | 0644 |
|
test_modules.aug | File | 229 B | 0644 |
|
test_modules_conf.aug | File | 3.23 KB | 0644 |
|
test_mongodbserver.aug | File | 775 B | 0644 |
|
test_monit.aug | File | 1.03 KB | 0644 |
|
test_multipath.aug | File | 5.21 KB | 0644 |
|
test_mysql.aug | File | 8.75 KB | 0644 |
|
test_nagioscfg.aug | File | 2.95 KB | 0644 |
|
test_nagiosobjects.aug | File | 1.69 KB | 0644 |
|
test_netmasks.aug | File | 640 B | 0644 |
|
test_networkmanager.aug | File | 1.27 KB | 0644 |
|
test_networks.aug | File | 1.16 KB | 0644 |
|
test_nginx.aug | File | 7.04 KB | 0644 |
|
test_nrpe.aug | File | 2.13 KB | 0644 |
|
test_nslcd.aug | File | 12.84 KB | 0644 |
|
test_nsswitch.aug | File | 1.54 KB | 0644 |
|
test_ntp.aug | File | 5.09 KB | 0644 |
|
test_ntpd.aug | File | 1.87 KB | 0644 |
|
test_odbc.aug | File | 1.62 KB | 0644 |
|
test_opendkim.aug | File | 5.66 KB | 0644 |
|
test_openshift_config.aug | File | 3.64 KB | 0644 |
|
test_openshift_http.aug | File | 2.16 KB | 0644 |
|
test_openshift_quickstarts.aug | File | 12.42 KB | 0644 |
|
test_openvpn.aug | File | 28.09 KB | 0644 |
|
test_oz.aug | File | 611 B | 0644 |
|
test_pagekite.aug | File | 2.75 KB | 0644 |
|
test_pam.aug | File | 1.54 KB | 0644 |
|
test_pamconf.aug | File | 1010 B | 0644 |
|
test_passwd.aug | File | 2.44 KB | 0644 |
|
test_pbuilder.aug | File | 531 B | 0644 |
|
test_pg_hba.aug | File | 6.1 KB | 0644 |
|
test_pgbouncer.aug | File | 1.97 KB | 0644 |
|
test_php.aug | File | 1.4 KB | 0644 |
|
test_phpvars.aug | File | 1.63 KB | 0644 |
|
test_postfix_access.aug | File | 1.52 KB | 0644 |
|
test_postfix_main.aug | File | 1.03 KB | 0644 |
|
test_postfix_master.aug | File | 3.77 KB | 0644 |
|
test_postfix_passwordmap.aug | File | 1.31 KB | 0644 |
|
test_postfix_sasl_smtpd.aug | File | 530 B | 0644 |
|
test_postfix_transport.aug | File | 1.58 KB | 0644 |
|
test_postfix_virtual.aug | File | 1.23 KB | 0644 |
|
test_postgresql.aug | File | 8.07 KB | 0644 |
|
test_properties.aug | File | 3.51 KB | 0644 |
|
test_protocols.aug | File | 1.3 KB | 0644 |
|
test_puppet.aug | File | 547 B | 0644 |
|
test_puppet_auth.aug | File | 1.1 KB | 0644 |
|
test_puppetfile.aug | File | 1.73 KB | 0644 |
|
test_puppetfileserver.aug | File | 949 B | 0644 |
|
test_pylonspaste.aug | File | 1.73 KB | 0644 |
|
test_pythonpaste.aug | File | 1.23 KB | 0644 |
|
test_qpid.aug | File | 1.3 KB | 0644 |
|
test_quote.aug | File | 8.66 KB | 0644 |
|
test_rabbitmq.aug | File | 3.66 KB | 0644 |
|
test_radicale.aug | File | 1.04 KB | 0644 |
|
test_rancid.aug | File | 706 B | 0644 |
|
test_redis.aug | File | 5.81 KB | 0644 |
|
test_reprepro_uploaders.aug | File | 4.68 KB | 0644 |
|
test_resolv.aug | File | 1.46 KB | 0644 |
|
test_rhsm.aug | File | 4.46 KB | 0644 |
|
test_rmt.aug | File | 826 B | 0644 |
|
test_rsyncd.aug | File | 1.27 KB | 0644 |
|
test_rsyslog.aug | File | 5.44 KB | 0644 |
|
test_rtadvd.aug | File | 859 B | 0644 |
|
test_rx.aug | File | 3.33 KB | 0644 |
|
test_samba.aug | File | 3.52 KB | 0644 |
|
test_schroot.aug | File | 2.25 KB | 0644 |
|
test_securetty.aug | File | 636 B | 0644 |
|
test_services.aug | File | 2.87 KB | 0644 |
|
test_shadow.aug | File | 2.01 KB | 0644 |
|
test_shells.aug | File | 348 B | 0644 |
|
test_shellvars.aug | File | 18.33 KB | 0644 |
|
test_shellvars_list.aug | File | 4.18 KB | 0644 |
|
test_simplelines.aug | File | 724 B | 0644 |
|
test_simplevars.aug | File | 994 B | 0644 |
|
test_sip_conf.aug | File | 3.61 KB | 0644 |
|
test_slapd.aug | File | 3.03 KB | 0644 |
|
test_smbusers.aug | File | 664 B | 0644 |
|
test_solaris_system.aug | File | 2.48 KB | 0644 |
|
test_soma.aug | File | 424 B | 0644 |
|
test_spacevars.aug | File | 431 B | 0644 |
|
test_splunk.aug | File | 2.96 KB | 0644 |
|
test_squid.aug | File | 5.09 KB | 0644 |
|
test_ssh.aug | File | 2.92 KB | 0644 |
|
test_sshd.aug | File | 5.04 KB | 0644 |
|
test_sssd.aug | File | 896 B | 0644 |
|
test_star.aug | File | 1.56 KB | 0644 |
|
test_stunnel.aug | File | 791 B | 0644 |
|
test_subversion.aug | File | 3.06 KB | 0644 |
|
test_sudoers.aug | File | 9.9 KB | 0644 |
|
test_sysconfig.aug | File | 4.1 KB | 0644 |
|
test_sysconfig_route.aug | File | 522 B | 0644 |
|
test_sysctl.aug | File | 1.34 KB | 0644 |
|
test_syslog.aug | File | 10.96 KB | 0644 |
|
test_systemd.aug | File | 7.95 KB | 0644 |
|
test_termcap.aug | File | 16.69 KB | 0644 |
|
test_thttpd.aug | File | 1.17 KB | 0644 |
|
test_tmpfiles.aug | File | 9.94 KB | 0644 |
|
test_trapperkeeper.aug | File | 4.15 KB | 0644 |
|
test_tuned.aug | File | 259 B | 0644 |
|
test_up2date.aug | File | 6.23 KB | 0644 |
|
test_updatedb.aug | File | 855 B | 0644 |
|
test_util.aug | File | 428 B | 0644 |
|
test_vfstab.aug | File | 2.79 KB | 0644 |
|
test_vmware_config.aug | File | 1.7 KB | 0644 |
|
test_vsftpd.aug | File | 2.49 KB | 0644 |
|
test_webmin.aug | File | 195 B | 0644 |
|
test_wine.aug | File | 5.58 KB | 0644 |
|
test_xendconfsxp.aug | File | 7.74 KB | 0644 |
|
test_xinetd.aug | File | 2.78 KB | 0644 |
|
test_xml.aug | File | 20.04 KB | 0644 |
|
test_xorg.aug | File | 2.41 KB | 0644 |
|
test_xymon.aug | File | 4.29 KB | 0644 |
|
test_xymon_alerting.aug | File | 7.44 KB | 0644 |
|
test_yaml.aug | File | 1.34 KB | 0644 |
|
test_yum.aug | File | 7.28 KB | 0644 |
|