facter 2.0.1.rc1-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of facter might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/COMMITTERS.md +194 -0
- data/CONTRIBUTING.md +65 -0
- data/Gemfile +43 -0
- data/LICENSE +15 -0
- data/README.md +33 -0
- data/Rakefile +79 -0
- data/bin/facter +16 -0
- data/etc/facter.conf +5 -0
- data/ext/build_defaults.yaml +24 -0
- data/ext/debian/changelog.erb +59 -0
- data/ext/debian/compat +1 -0
- data/ext/debian/control +14 -0
- data/ext/debian/copyright +19 -0
- data/ext/debian/docs +1 -0
- data/ext/debian/lintian-overrides +0 -0
- data/ext/debian/rules +10 -0
- data/ext/debian/source/format +1 -0
- data/ext/facter-diff +74 -0
- data/ext/ips/facter.p5m.erb +10 -0
- data/ext/ips/rules +7 -0
- data/ext/ips/transforms +18 -0
- data/ext/osx/file_mapping.yaml +27 -0
- data/ext/osx/preflight.erb +33 -0
- data/ext/osx/prototype.plist.erb +38 -0
- data/ext/project_data.yaml +33 -0
- data/ext/redhat/facter.spec.erb +220 -0
- data/ext/solaris/pkginfo +7 -0
- data/install.rb +380 -0
- data/lib/facter.rb +262 -0
- data/lib/facter/Cfkey.rb +42 -0
- data/lib/facter/application.rb +204 -0
- data/lib/facter/architecture.rb +50 -0
- data/lib/facter/augeasversion.rb +28 -0
- data/lib/facter/blockdevices.rb +105 -0
- data/lib/facter/core/aggregate.rb +220 -0
- data/lib/facter/core/directed_graph.rb +46 -0
- data/lib/facter/core/execution.rb +100 -0
- data/lib/facter/core/execution/base.rb +73 -0
- data/lib/facter/core/execution/posix.rb +50 -0
- data/lib/facter/core/execution/windows.rb +57 -0
- data/lib/facter/core/logging.rb +169 -0
- data/lib/facter/core/resolvable.rb +94 -0
- data/lib/facter/core/suitable.rb +117 -0
- data/lib/facter/domain.rb +99 -0
- data/lib/facter/ec2.rb +37 -0
- data/lib/facter/facterversion.rb +15 -0
- data/lib/facter/filesystems.rb +38 -0
- data/lib/facter/fqdn.rb +22 -0
- data/lib/facter/hardwareisa.rb +20 -0
- data/lib/facter/hardwaremodel.rb +67 -0
- data/lib/facter/hostname.rb +33 -0
- data/lib/facter/id.rb +21 -0
- data/lib/facter/interfaces.rb +46 -0
- data/lib/facter/ipaddress.rb +171 -0
- data/lib/facter/ipaddress6.rb +82 -0
- data/lib/facter/iphostnumber.rb +29 -0
- data/lib/facter/kernel.rb +22 -0
- data/lib/facter/kernelmajversion.rb +15 -0
- data/lib/facter/kernelrelease.rb +42 -0
- data/lib/facter/kernelversion.rb +22 -0
- data/lib/facter/ldom.rb +47 -0
- data/lib/facter/lsbdistcodename.rb +18 -0
- data/lib/facter/lsbdistdescription.rb +21 -0
- data/lib/facter/lsbdistid.rb +18 -0
- data/lib/facter/lsbdistrelease.rb +18 -0
- data/lib/facter/lsbmajdistrelease.rb +27 -0
- data/lib/facter/lsbrelease.rb +18 -0
- data/lib/facter/macaddress.rb +97 -0
- data/lib/facter/macosx.rb +56 -0
- data/lib/facter/manufacturer.rb +68 -0
- data/lib/facter/memory.rb +162 -0
- data/lib/facter/netmask.rb +42 -0
- data/lib/facter/network.rb +20 -0
- data/lib/facter/operatingsystem.rb +121 -0
- data/lib/facter/operatingsystemmajrelease.rb +33 -0
- data/lib/facter/operatingsystemrelease.rb +226 -0
- data/lib/facter/osfamily.rb +35 -0
- data/lib/facter/path.rb +14 -0
- data/lib/facter/physicalprocessorcount.rb +84 -0
- data/lib/facter/processor.rb +183 -0
- data/lib/facter/ps.rb +30 -0
- data/lib/facter/puppetversion.rb +20 -0
- data/lib/facter/rubysitedir.rb +12 -0
- data/lib/facter/rubyversion.rb +12 -0
- data/lib/facter/selinux.rb +99 -0
- data/lib/facter/ssh.rb +72 -0
- data/lib/facter/timezone.rb +14 -0
- data/lib/facter/uniqueid.rb +4 -0
- data/lib/facter/uptime.rb +34 -0
- data/lib/facter/uptime_days.rb +15 -0
- data/lib/facter/uptime_hours.rb +15 -0
- data/lib/facter/uptime_seconds.rb +24 -0
- data/lib/facter/util/architecture.rb +19 -0
- data/lib/facter/util/collection.rb +161 -0
- data/lib/facter/util/composite_loader.rb +12 -0
- data/lib/facter/util/config.rb +61 -0
- data/lib/facter/util/confine.rb +66 -0
- data/lib/facter/util/directory_loader.rb +83 -0
- data/lib/facter/util/ec2.rb +101 -0
- data/lib/facter/util/fact.rb +204 -0
- data/lib/facter/util/file_read.rb +37 -0
- data/lib/facter/util/formatter.rb +38 -0
- data/lib/facter/util/ip.rb +285 -0
- data/lib/facter/util/ip/windows.rb +215 -0
- data/lib/facter/util/loader.rb +146 -0
- data/lib/facter/util/macaddress.rb +43 -0
- data/lib/facter/util/macosx.rb +73 -0
- data/lib/facter/util/manufacturer.rb +104 -0
- data/lib/facter/util/memory.rb +228 -0
- data/lib/facter/util/monkey_patches.rb +8 -0
- data/lib/facter/util/netmask.rb +40 -0
- data/lib/facter/util/normalization.rb +94 -0
- data/lib/facter/util/nothing_loader.rb +12 -0
- data/lib/facter/util/parser.rb +158 -0
- data/lib/facter/util/plist.rb +24 -0
- data/lib/facter/util/plist/generator.rb +228 -0
- data/lib/facter/util/plist/parser.rb +226 -0
- data/lib/facter/util/processor.rb +291 -0
- data/lib/facter/util/registry.rb +11 -0
- data/lib/facter/util/resolution.rb +152 -0
- data/lib/facter/util/solaris_zones.rb +158 -0
- data/lib/facter/util/unix_root.rb +5 -0
- data/lib/facter/util/uptime.rb +81 -0
- data/lib/facter/util/values.rb +80 -0
- data/lib/facter/util/virtual.rb +151 -0
- data/lib/facter/util/vlans.rb +24 -0
- data/lib/facter/util/windows_root.rb +37 -0
- data/lib/facter/util/wmi.rb +16 -0
- data/lib/facter/util/xendomains.rb +10 -0
- data/lib/facter/version.rb +86 -0
- data/lib/facter/virtual.rb +262 -0
- data/lib/facter/vlans.rb +17 -0
- data/lib/facter/xendomains.rb +20 -0
- data/lib/facter/zfs_version.rb +10 -0
- data/lib/facter/zonename.rb +6 -0
- data/lib/facter/zones.rb +17 -0
- data/lib/facter/zpool_version.rb +10 -0
- data/spec/fixtures/cpuinfo/amd64dual +57 -0
- data/spec/fixtures/cpuinfo/amd64quad +79 -0
- data/spec/fixtures/cpuinfo/amd64solo +23 -0
- data/spec/fixtures/cpuinfo/amd64tri +86 -0
- data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
- data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
- data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
- data/spec/fixtures/cpuinfo/panda-armel +17 -0
- data/spec/fixtures/cpuinfo/ppc64 +19 -0
- data/spec/fixtures/cpuinfo/sparc +10 -0
- data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
- data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
- data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
- data/spec/fixtures/hpux/sched.models +174 -0
- data/spec/fixtures/hpux/unistd.h +1534 -0
- data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
- data/spec/fixtures/ifconfig/centos_5_5 +17 -0
- data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
- data/spec/fixtures/ifconfig/fedora_10 +36 -0
- data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_13 +18 -0
- data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_8 +38 -0
- data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
- data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
- data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
- data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
- data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
- data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
- data/spec/fixtures/ldom/ldom_v1 +6 -0
- data/spec/fixtures/netstat/centos_5_5 +5 -0
- data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
- data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
- data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
- data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
- data/spec/fixtures/netstat/fedora_10 +7 -0
- data/spec/fixtures/netstat/open_solaris_10 +16 -0
- data/spec/fixtures/netstat/open_solaris_b132 +17 -0
- data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
- data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
- data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
- data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
- data/spec/fixtures/unit/filesystems/linux +28 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
- data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
- data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
- data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
- data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
- data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
- data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
- data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
- data/spec/fixtures/unit/util/loader/nosuchfact.rb +1 -0
- data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
- data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
- data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
- data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
- data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
- data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
- data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
- data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
- data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
- data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
- data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
- data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
- data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
- data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
- data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
- data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
- data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
- data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
- data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
- data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
- data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
- data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
- data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
- data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
- data/spec/integration/facter_spec.rb +39 -0
- data/spec/lib/facter_spec/cpuinfo.rb +15 -0
- data/spec/lib/facter_spec/windows_network.rb +64 -0
- data/spec/puppetlabs_spec/files.rb +57 -0
- data/spec/puppetlabs_spec/fixtures.rb +49 -0
- data/spec/puppetlabs_spec/matchers.rb +87 -0
- data/spec/puppetlabs_spec/verbose.rb +9 -0
- data/spec/puppetlabs_spec_helper.rb +26 -0
- data/spec/shared_contexts/platform.rb +55 -0
- data/spec/shared_formats/parses.rb +3 -0
- data/spec/spec_helper.rb +75 -0
- data/spec/unit/application_spec.rb +101 -0
- data/spec/unit/architecture_spec.rb +63 -0
- data/spec/unit/blockdevices_spec.rb +109 -0
- data/spec/unit/core/aggregate_spec.rb +125 -0
- data/spec/unit/core/directed_graph_spec.rb +79 -0
- data/spec/unit/core/execution/base_spec.rb +119 -0
- data/spec/unit/core/execution/posix_spec.rb +86 -0
- data/spec/unit/core/execution/windows_spec.rb +106 -0
- data/spec/unit/core/execution_spec.rb +37 -0
- data/spec/unit/core/logging_spec.rb +104 -0
- data/spec/unit/core/resolvable_spec.rb +81 -0
- data/spec/unit/core/suitable_spec.rb +96 -0
- data/spec/unit/domain_spec.rb +310 -0
- data/spec/unit/ec2_spec.rb +187 -0
- data/spec/unit/facter_spec.rb +108 -0
- data/spec/unit/filesystems_spec.rb +50 -0
- data/spec/unit/hardwareisa_spec.rb +41 -0
- data/spec/unit/hardwaremodel_spec.rb +56 -0
- data/spec/unit/hostname_spec.rb +40 -0
- data/spec/unit/id_spec.rb +29 -0
- data/spec/unit/interfaces_spec.rb +57 -0
- data/spec/unit/ipaddress6_spec.rb +161 -0
- data/spec/unit/ipaddress_spec.rb +114 -0
- data/spec/unit/kernel_spec.rb +24 -0
- data/spec/unit/kernelmajversion_spec.rb +17 -0
- data/spec/unit/kernelrelease_spec.rb +53 -0
- data/spec/unit/kernelversion_spec.rb +32 -0
- data/spec/unit/ldom_spec.rb +74 -0
- data/spec/unit/lsbdistcodename_spec.rb +25 -0
- data/spec/unit/lsbdistdescription_spec.rb +25 -0
- data/spec/unit/lsbdistid_spec.rb +25 -0
- data/spec/unit/lsbdistrelease_spec.rb +25 -0
- data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
- data/spec/unit/lsbrelease_spec.rb +25 -0
- data/spec/unit/macaddress_spec.rb +61 -0
- data/spec/unit/manufacturer_spec.rb +115 -0
- data/spec/unit/memory_spec.rb +539 -0
- data/spec/unit/netmask_spec.rb +95 -0
- data/spec/unit/operatingsystem_spec.rb +141 -0
- data/spec/unit/operatingsystemmajrelease_spec.rb +16 -0
- data/spec/unit/operatingsystemrelease_spec.rb +226 -0
- data/spec/unit/physicalprocessorcount_spec.rb +76 -0
- data/spec/unit/processor_spec.rb +393 -0
- data/spec/unit/ps_spec.rb +42 -0
- data/spec/unit/selinux_spec.rb +114 -0
- data/spec/unit/ssh_spec.rb +77 -0
- data/spec/unit/uniqueid_spec.rb +27 -0
- data/spec/unit/uptime_spec.rb +110 -0
- data/spec/unit/util/collection_spec.rb +258 -0
- data/spec/unit/util/config_spec.rb +84 -0
- data/spec/unit/util/confine_spec.rb +148 -0
- data/spec/unit/util/directory_loader_spec.rb +88 -0
- data/spec/unit/util/ec2_spec.rb +180 -0
- data/spec/unit/util/fact_spec.rb +142 -0
- data/spec/unit/util/file_read_spec.rb +29 -0
- data/spec/unit/util/ip/windows_spec.rb +80 -0
- data/spec/unit/util/ip_spec.rb +463 -0
- data/spec/unit/util/loader_spec.rb +286 -0
- data/spec/unit/util/macaddress_spec.rb +141 -0
- data/spec/unit/util/macosx_spec.rb +113 -0
- data/spec/unit/util/manufacturer_spec.rb +179 -0
- data/spec/unit/util/normalization_spec.rb +113 -0
- data/spec/unit/util/parser_spec.rb +200 -0
- data/spec/unit/util/processor_spec.rb +92 -0
- data/spec/unit/util/registry_spec.rb +76 -0
- data/spec/unit/util/resolution_spec.rb +129 -0
- data/spec/unit/util/solaris_zones_spec.rb +127 -0
- data/spec/unit/util/uptime_spec.rb +126 -0
- data/spec/unit/util/values_spec.rb +131 -0
- data/spec/unit/util/virtual_spec.rb +294 -0
- data/spec/unit/util/vlans_spec.rb +12 -0
- data/spec/unit/util/wmi_spec.rb +19 -0
- data/spec/unit/util/xendomains_spec.rb +21 -0
- data/spec/unit/version_spec.rb +42 -0
- data/spec/unit/virtual_spec.rb +470 -0
- data/spec/unit/zfs_version_spec.rb +75 -0
- data/spec/unit/zonename_spec.rb +14 -0
- data/spec/unit/zones_spec.rb +55 -0
- data/spec/unit/zpool_version_spec.rb +75 -0
- data/spec/watchr.rb +125 -0
- metadata +674 -0
@@ -0,0 +1,179 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/manufacturer'
|
5
|
+
|
6
|
+
describe Facter::Manufacturer do
|
7
|
+
before :each do
|
8
|
+
Facter.clear
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should return the system DMI table" do
|
12
|
+
Facter::Manufacturer.should respond_to(:get_dmi_table)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return nil on non-supported operating systems" do
|
16
|
+
Facter.stubs(:value).with(:kernel).returns("SomeThing")
|
17
|
+
Facter::Manufacturer.get_dmi_table().should be_nil
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should parse prtdiag output on a sunfire v120" do
|
21
|
+
Facter::Core::Execution.stubs(:exec).returns(my_fixture_read("solaris_sunfire_v120_prtdiag"))
|
22
|
+
Facter::Manufacturer.prtdiag_sparc_find_system_info()
|
23
|
+
Facter.value(:manufacturer).should == "Sun Microsystems"
|
24
|
+
Facter.value(:productname).should == "Sun Fire V120 (UltraSPARC-IIe 648MHz)"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should parse prtdiag output on a t5220" do
|
28
|
+
Facter::Core::Execution.stubs(:exec).returns(my_fixture_read("solaris_t5220_prtdiag"))
|
29
|
+
Facter::Manufacturer.prtdiag_sparc_find_system_info()
|
30
|
+
Facter.value(:manufacturer).should == "Sun Microsystems"
|
31
|
+
Facter.value(:productname).should == "SPARC Enterprise T5220"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should not set manufacturer if prtdiag output is nil" do
|
35
|
+
# Stub kernel so we don't have windows fall through to its own mechanism
|
36
|
+
Facter.fact(:kernel).stubs(:value).returns("SunOS")
|
37
|
+
Facter.fact(:hardwareisa).stubs(:value).returns("sparc")
|
38
|
+
|
39
|
+
Facter::Core::Execution.stubs(:exec).with(regexp_matches(/prtdiag/)).returns(nil)
|
40
|
+
Facter::Manufacturer.prtdiag_sparc_find_system_info()
|
41
|
+
Facter.value(:manufacturer).should_not == "Sun Microsystems"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should strip white space on dmi output with spaces" do
|
45
|
+
dmidecode_output = my_fixture_read("linux_dmidecode_with_spaces")
|
46
|
+
Facter::Manufacturer.expects(:get_dmi_table).returns(dmidecode_output)
|
47
|
+
Facter.fact(:kernel).stubs(:value).returns("Linux")
|
48
|
+
|
49
|
+
query = { '[Ss]ystem [Ii]nformation' => [ { 'Product(?: Name)?:' => 'productname' } ] }
|
50
|
+
|
51
|
+
Facter::Manufacturer.dmi_find_system_info(query)
|
52
|
+
Facter.value(:productname).should == "MS-6754"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should handle output from smbios when run under sunos" do
|
56
|
+
smbios_output = my_fixture_read("opensolaris_smbios")
|
57
|
+
Facter::Manufacturer.expects(:get_dmi_table).returns(smbios_output)
|
58
|
+
Facter.fact(:kernel).stubs(:value).returns("SunOS")
|
59
|
+
|
60
|
+
query = { 'BIOS information' => [ { 'Release Date:' => 'reldate' } ] }
|
61
|
+
|
62
|
+
Facter::Manufacturer.dmi_find_system_info(query)
|
63
|
+
Facter.value(:reldate).should == "12/01/2006"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should not split on dmi keys containing the string Handle" do
|
67
|
+
dmidecode_output = <<-eos
|
68
|
+
Handle 0x1000, DMI type 16, 15 bytes
|
69
|
+
Physical Memory Array
|
70
|
+
Location: System Board Or Motherboard
|
71
|
+
Use: System Memory
|
72
|
+
Error Correction Type: None
|
73
|
+
Maximum Capacity: 4 GB
|
74
|
+
Error Information Handle: Not Provided
|
75
|
+
Number Of Devices: 123
|
76
|
+
|
77
|
+
Handle 0x001F
|
78
|
+
DMI type 127, 4 bytes.
|
79
|
+
End Of Table
|
80
|
+
eos
|
81
|
+
Facter::Manufacturer.expects(:get_dmi_table).returns(dmidecode_output)
|
82
|
+
Facter.fact(:kernel).stubs(:value).returns("Linux")
|
83
|
+
query = { 'Physical Memory Array' => [ { 'Number Of Devices:' => 'ramslots'}]}
|
84
|
+
Facter::Manufacturer.dmi_find_system_info(query)
|
85
|
+
Facter.value(:ramslots).should == "123"
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should match the key in the defined section and not the first one found" do
|
89
|
+
dmidecode_output = <<-eos
|
90
|
+
Handle 0x000C, DMI type 7, 19 bytes
|
91
|
+
Cache Information
|
92
|
+
Socket Designation: Internal L2 Cache
|
93
|
+
Configuration: Enabled, Socketed, Level 2
|
94
|
+
Operational Mode: Write Back
|
95
|
+
Location: Internal
|
96
|
+
Installed Size: 4096 KB
|
97
|
+
Maximum Size: 4096 KB
|
98
|
+
Supported SRAM Types:
|
99
|
+
Burst
|
100
|
+
Installed SRAM Type: Burst
|
101
|
+
Speed: Unknown
|
102
|
+
Error Correction Type: Single-bit ECC
|
103
|
+
System Type: Unified
|
104
|
+
Associativity: 8-way Set-associative
|
105
|
+
|
106
|
+
Handle 0x1000, DMI type 16, 15 bytes
|
107
|
+
Physical Memory Array
|
108
|
+
Location: System Board Or Motherboard
|
109
|
+
Use: System Memory
|
110
|
+
Error Correction Type: None
|
111
|
+
Maximum Capacity: 4 GB
|
112
|
+
Error Information Handle: Not Provided
|
113
|
+
Number Of Devices: 2
|
114
|
+
|
115
|
+
Handle 0x001F
|
116
|
+
DMI type 127, 4 bytes.
|
117
|
+
End Of Table
|
118
|
+
eos
|
119
|
+
Facter::Manufacturer.expects(:get_dmi_table).returns(dmidecode_output)
|
120
|
+
Facter.fact(:kernel).stubs(:value).returns("Linux")
|
121
|
+
query = { 'Physical Memory Array' => [ { 'Location:' => 'ramlocation'}]}
|
122
|
+
Facter::Manufacturer.dmi_find_system_info(query)
|
123
|
+
Facter.value(:ramlocation).should == "System Board Or Motherboard"
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should return an appropriate uuid on linux" do
|
127
|
+
Facter.fact(:kernel).stubs(:value).returns("Linux")
|
128
|
+
dmidecode = my_fixture_read("intel_linux_dmidecode")
|
129
|
+
Facter::Manufacturer.expects(:get_dmi_table).returns(dmidecode)
|
130
|
+
|
131
|
+
query = { '[Ss]ystem [Ii]nformation' => [ { 'UUID:' => 'uuid' } ] }
|
132
|
+
Facter::Manufacturer.dmi_find_system_info(query)
|
133
|
+
Facter.value(:uuid).should == "60A98BB3-95B6-E111-AF74-4C72B9247D28"
|
134
|
+
end
|
135
|
+
|
136
|
+
def find_product_name(os)
|
137
|
+
output_file = case os
|
138
|
+
when "FreeBSD" then my_fixture("freebsd_dmidecode")
|
139
|
+
when "SunOS" then my_fixture("opensolaris_smbios")
|
140
|
+
end
|
141
|
+
|
142
|
+
output = File.new(output_file).read()
|
143
|
+
query = { '[Ss]ystem [Ii]nformation' => [ { 'Product(?: Name)?:' => "product_name_#{os}" } ] }
|
144
|
+
|
145
|
+
Facter.fact(:kernel).stubs(:value).returns(os)
|
146
|
+
Facter::Manufacturer.expects(:get_dmi_table).returns(output)
|
147
|
+
|
148
|
+
Facter::Manufacturer.dmi_find_system_info(query)
|
149
|
+
|
150
|
+
return Facter.value("product_name_#{os}")
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should return the same result with smbios than with dmidecode" do
|
154
|
+
find_product_name("FreeBSD").should_not == nil
|
155
|
+
find_product_name("FreeBSD").should == find_product_name("SunOS")
|
156
|
+
end
|
157
|
+
|
158
|
+
it "should find information on Windows" do
|
159
|
+
Facter.fact(:kernel).stubs(:value).returns("windows")
|
160
|
+
require 'facter/util/wmi'
|
161
|
+
|
162
|
+
bios = stubs 'bios'
|
163
|
+
bios.stubs(:Manufacturer).returns("Phoenix Technologies LTD")
|
164
|
+
bios.stubs(:Serialnumber).returns("56 4d 40 2b 4d 81 94 d6-e6 c5 56 a4 56 0c 9e 9f")
|
165
|
+
|
166
|
+
product = stubs 'product'
|
167
|
+
product.stubs(:Name).returns("VMware Virtual Platform")
|
168
|
+
|
169
|
+
wmi = stubs 'wmi'
|
170
|
+
wmi.stubs(:ExecQuery).with("select * from Win32_Bios").returns([bios])
|
171
|
+
wmi.stubs(:ExecQuery).with("select * from Win32_Bios").returns([bios])
|
172
|
+
wmi.stubs(:ExecQuery).with("select * from Win32_ComputerSystemProduct").returns([product])
|
173
|
+
|
174
|
+
Facter::Util::WMI.stubs(:connect).returns(wmi)
|
175
|
+
Facter.value(:manufacturer).should == "Phoenix Technologies LTD"
|
176
|
+
Facter.value(:serialnumber).should == "56 4d 40 2b 4d 81 94 d6-e6 c5 56 a4 56 0c 9e 9f"
|
177
|
+
Facter.value(:productname).should == "VMware Virtual Platform"
|
178
|
+
end
|
179
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/normalization'
|
5
|
+
|
6
|
+
describe Facter::Util::Normalization do
|
7
|
+
|
8
|
+
subject { described_class }
|
9
|
+
|
10
|
+
def utf16(str)
|
11
|
+
if String.method_defined?(:encode) && defined?(::Encoding)
|
12
|
+
str.encode(Encoding::UTF_16LE)
|
13
|
+
else
|
14
|
+
str
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def utf8(str)
|
19
|
+
if String.method_defined?(:encode) && defined?(::Encoding)
|
20
|
+
str.encode(Encoding::UTF_8)
|
21
|
+
else
|
22
|
+
str
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "validating strings" do
|
27
|
+
describe "and string encoding is supported", :if => String.instance_methods.include?(:encoding) do
|
28
|
+
it "accepts strings that are ASCII and match their encoding and converts them to UTF-8" do
|
29
|
+
str = "ASCII".encode(Encoding::ASCII)
|
30
|
+
normalized_str = subject.normalize(str)
|
31
|
+
expect(normalized_str.encoding).to eq(Encoding::UTF_8)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "accepts strings that are UTF-8 and match their encoding" do
|
35
|
+
str = "let's make a ☃!".encode(Encoding::UTF_8)
|
36
|
+
expect(subject.normalize(str)).to eq(str)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "converts valid non UTF-8 strings to UTF-8" do
|
40
|
+
str = "let's make a ☃!".encode(Encoding::UTF_16LE)
|
41
|
+
enc = subject.normalize(str).encoding
|
42
|
+
expect(enc).to eq(Encoding::UTF_8)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "normalizes a frozen string returning a non-frozen string" do
|
46
|
+
str = "factvalue".encode(Encoding::UTF_16LE).freeze
|
47
|
+
normalized_str = subject.normalize(str)
|
48
|
+
expect(normalized_str.encoding).to eq(Encoding::UTF_8)
|
49
|
+
expect(normalized_str).to_not be_frozen
|
50
|
+
end
|
51
|
+
|
52
|
+
it "rejects strings that are not UTF-8 and do not match their claimed encoding" do
|
53
|
+
invalid_shift_jis = "\xFF\x5C!".force_encoding(Encoding::SHIFT_JIS)
|
54
|
+
expect {
|
55
|
+
subject.normalize(invalid_shift_jis)
|
56
|
+
}.to raise_error(Facter::Util::Normalization::NormalizationError, /String encoding Shift_JIS is not UTF-8 and could not be converted to UTF-8/)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "rejects strings that claim to be UTF-8 encoded but aren't" do
|
60
|
+
str = "\255ay!".force_encoding(Encoding::UTF_8)
|
61
|
+
expect {
|
62
|
+
subject.normalize(str)
|
63
|
+
}.to raise_error(Facter::Util::Normalization::NormalizationError, /String.*doesn't match the reported encoding UTF-8/)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "and string encoding is not supported", :unless => String.instance_methods.include?(:encoding) do
|
68
|
+
it "accepts strings that are UTF-8 and match their encoding" do
|
69
|
+
str = "let's make a ☃!"
|
70
|
+
expect(subject.normalize(str)).to eq(str)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "rejects strings that are not UTF-8" do
|
74
|
+
str = "let's make a \255\255\255!"
|
75
|
+
expect {
|
76
|
+
subject.normalize(str)
|
77
|
+
}.to raise_error(Facter::Util::Normalization::NormalizationError, /String .* is not valid UTF-8/)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "normalizing arrays" do
|
83
|
+
it "normalizes each element in the array" do
|
84
|
+
arr = [utf16('first'), utf16('second'), [utf16('third'), utf16('fourth')]]
|
85
|
+
expected_arr = [utf8('first'), utf8('second'), [utf8('third'), utf8('fourth')]]
|
86
|
+
|
87
|
+
expect(subject.normalize_array(arr)).to eq(expected_arr)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe "normalizing hashes" do
|
92
|
+
it "normalizes each element in the array" do
|
93
|
+
hsh = {utf16('first') => utf16('second'), utf16('third') => [utf16('fourth'), utf16('fifth')]}
|
94
|
+
expected_hsh = {utf8('first') => utf8('second'), utf8('third') => [utf8('fourth'), utf8('fifth')]}
|
95
|
+
|
96
|
+
expect(subject.normalize_hash(hsh)).to eq(expected_hsh)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
[1, 1.0, true, false, nil].each do |val|
|
101
|
+
it "accepts #{val.inspect}:#{val.class}" do
|
102
|
+
expect(subject.normalize(val)).to eq(val)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
[:sym, Object.new, Set.new].each do |val|
|
107
|
+
it "rejects #{val.inspect}:#{val.class}" do
|
108
|
+
expect {
|
109
|
+
subject.normalize(val)
|
110
|
+
}.to raise_error(Facter::Util::Normalization::NormalizationError, /Expected .*but was #{val.class}/ )
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,200 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/parser'
|
5
|
+
require 'tempfile'
|
6
|
+
require 'tmpdir.rb'
|
7
|
+
|
8
|
+
describe Facter::Util::Parser do
|
9
|
+
include PuppetlabsSpec::Files
|
10
|
+
|
11
|
+
describe "extension_matches? function" do
|
12
|
+
it "should match extensions when subclass uses match_extension" do
|
13
|
+
Facter::Util::Parser.extension_matches?("myfile.foobar", "foobar").should == true
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should match extensions when subclass uses match_extension with an array" do
|
17
|
+
Facter::Util::Parser.extension_matches?("myfile.ext1", ["ext1","ext2","ext3"]).should == true
|
18
|
+
Facter::Util::Parser.extension_matches?("myfile.ext2", ["ext1","ext2","ext3"]).should == true
|
19
|
+
Facter::Util::Parser.extension_matches?("myfile.ext3", ["ext1","ext2","ext3"]).should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should match extension ignoring case on file" do
|
23
|
+
Facter::Util::Parser.extension_matches?("myfile.EXT1", "ext1").should == true
|
24
|
+
Facter::Util::Parser.extension_matches?("myfile.ExT1", "ext1").should == true
|
25
|
+
Facter::Util::Parser.extension_matches?("myfile.exT1", "ext1").should == true
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should match extension ignoring case for match_extension" do
|
29
|
+
Facter::Util::Parser.extension_matches?("myfile.EXT1", "EXT1").should == true
|
30
|
+
Facter::Util::Parser.extension_matches?("myfile.ExT1", "EXT1").should == true
|
31
|
+
Facter::Util::Parser.extension_matches?("myfile.exT1", "EXT1").should == true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
let(:data) do {"one" => "two", "three" => "four"} end
|
36
|
+
|
37
|
+
describe "yaml" do
|
38
|
+
let(:data_in_yaml) { YAML.dump(data) }
|
39
|
+
let(:data_file) { "/tmp/foo.yaml" }
|
40
|
+
|
41
|
+
it "should return a hash of whatever is stored on disk" do
|
42
|
+
File.stubs(:read).with(data_file).returns(data_in_yaml)
|
43
|
+
described_class.parser_for(data_file).results.should == data
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should handle exceptions and warn" do
|
47
|
+
# YAML data with an error
|
48
|
+
File.stubs(:read).with(data_file).returns(data_in_yaml + "}")
|
49
|
+
Facter.expects(:warn).at_least_once
|
50
|
+
lambda { Facter::Util::Parser.parser_for(data_file).results }.should_not raise_error
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "json" do
|
55
|
+
let(:data_in_json) { JSON.dump(data) }
|
56
|
+
let(:data_file) { "/tmp/foo.json" }
|
57
|
+
|
58
|
+
it "should return a hash of whatever is stored on disk" do
|
59
|
+
pending("this test requires the json library") unless Facter.json?
|
60
|
+
File.stubs(:read).with(data_file).returns(data_in_json)
|
61
|
+
Facter::Util::Parser.parser_for(data_file).results.should == data
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "txt" do
|
66
|
+
let(:data_file) { "/tmp/foo.txt" }
|
67
|
+
|
68
|
+
shared_examples_for "txt parser" do
|
69
|
+
it "should return a hash of whatever is stored on disk" do
|
70
|
+
File.stubs(:read).with(data_file).returns(data_in_txt)
|
71
|
+
Facter::Util::Parser.parser_for(data_file).results.should == data
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context "well formed data" do
|
76
|
+
let(:data_in_txt) { "one=two\nthree=four\n" }
|
77
|
+
it_behaves_like "txt parser"
|
78
|
+
end
|
79
|
+
|
80
|
+
context "extra equal sign" do
|
81
|
+
let(:data_in_txt) { "one=two\nthree=four=five\n" }
|
82
|
+
let(:data) do {"one" => "two", "three" => "four=five"} end
|
83
|
+
it_behaves_like "txt parser"
|
84
|
+
end
|
85
|
+
|
86
|
+
context "extra data" do
|
87
|
+
let(:data_in_txt) { "one=two\nfive\nthree=four\n" }
|
88
|
+
it_behaves_like "txt parser"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "scripts" do
|
93
|
+
let(:ext) { Facter::Util::Config.is_windows? ? '.bat' : '.sh' }
|
94
|
+
let(:cmd) { "/tmp/foo#{ext}" }
|
95
|
+
let(:data_in_txt) { "one=two\nthree=four\n" }
|
96
|
+
|
97
|
+
def expects_script_to_return(path, content, result)
|
98
|
+
Facter::Core::Execution.stubs(:exec).with(path).returns(content)
|
99
|
+
File.stubs(:executable?).with(path).returns(true)
|
100
|
+
File.stubs(:file?).with(path).returns(true)
|
101
|
+
|
102
|
+
Facter::Util::Parser.parser_for(path).results.should == result
|
103
|
+
end
|
104
|
+
|
105
|
+
def expects_parser_to_return_nil_for_directory(path)
|
106
|
+
File.stubs(:file?).with(path).returns(false)
|
107
|
+
|
108
|
+
Facter::Util::Parser.parser_for(path).results.should be_nil
|
109
|
+
end
|
110
|
+
|
111
|
+
it "returns a hash of whatever is returned by the executable" do
|
112
|
+
expects_script_to_return(cmd, data_in_txt, data)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should not parse a directory" do
|
116
|
+
expects_parser_to_return_nil_for_directory(cmd)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "returns an empty hash when the script returns nil" do
|
120
|
+
expects_script_to_return(cmd, nil, {})
|
121
|
+
end
|
122
|
+
|
123
|
+
it "quotes scripts with spaces" do
|
124
|
+
path = "/h a s s p a c e s#{ext}"
|
125
|
+
|
126
|
+
Facter::Core::Execution.expects(:exec).with("\"#{path}\"").returns(data_in_txt)
|
127
|
+
|
128
|
+
expects_script_to_return(path, data_in_txt, data)
|
129
|
+
end
|
130
|
+
|
131
|
+
context "exe, bat, cmd, and com files" do
|
132
|
+
let :cmds do ["/tmp/foo.bat", "/tmp/foo.cmd", "/tmp/foo.exe", "/tmp/foo.com"] end
|
133
|
+
|
134
|
+
before :each do
|
135
|
+
cmds.each {|cmd|
|
136
|
+
File.stubs(:executable?).with(cmd).returns(true)
|
137
|
+
File.stubs(:file?).with(cmd).returns(true)
|
138
|
+
}
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should return nothing parser if not on windows" do
|
142
|
+
Facter::Util::Config.stubs(:is_windows?).returns(false)
|
143
|
+
cmds.each {|cmd| Facter::Util::Parser.parser_for(cmd).should be_an_instance_of(Facter::Util::Parser::NothingParser) }
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should return script parser if on windows" do
|
147
|
+
Facter::Util::Config.stubs(:is_windows?).returns(true)
|
148
|
+
cmds.each {|cmd| Facter::Util::Parser.parser_for(cmd).should be_an_instance_of(Facter::Util::Parser::ScriptParser) }
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
context "exe, bat, cmd, and com files" do
|
153
|
+
let :cmds do ["/tmp/foo.bat", "/tmp/foo.cmd", "/tmp/foo.exe", "/tmp/foo.com"] end
|
154
|
+
|
155
|
+
before :each do
|
156
|
+
cmds.each {|cmd|
|
157
|
+
File.stubs(:executable?).with(cmd).returns(true)
|
158
|
+
File.stubs(:file?).with(cmd).returns(true)
|
159
|
+
}
|
160
|
+
end
|
161
|
+
|
162
|
+
it "should return nothing parser if not on windows" do
|
163
|
+
Facter::Util::Config.stubs(:is_windows?).returns(false)
|
164
|
+
cmds.each {|cmd| Facter::Util::Parser.parser_for(cmd).should be_an_instance_of(Facter::Util::Parser::NothingParser) }
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should return script parser if on windows" do
|
168
|
+
Facter::Util::Config.stubs(:is_windows?).returns(true)
|
169
|
+
cmds.each {|cmd| Facter::Util::Parser.parser_for(cmd).should be_an_instance_of(Facter::Util::Parser::ScriptParser) }
|
170
|
+
end
|
171
|
+
|
172
|
+
end
|
173
|
+
|
174
|
+
describe "powershell parser" do
|
175
|
+
let(:ps1) { "/tmp/foo.ps1" }
|
176
|
+
|
177
|
+
def expects_to_parse_powershell(cmd, content, result)
|
178
|
+
Facter::Util::Config.stubs(:is_windows?).returns(true)
|
179
|
+
Facter::Core::Execution.stubs(:exec).returns(content)
|
180
|
+
File.stubs(:file?).with(ps1).returns(true)
|
181
|
+
|
182
|
+
Facter::Util::Parser.parser_for(cmd).results.should == result
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should not parse a directory" do
|
186
|
+
expects_parser_to_return_nil_for_directory(ps1)
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should parse output from powershell" do
|
190
|
+
expects_to_parse_powershell(ps1, data_in_txt, data)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
describe "nothing parser" do
|
196
|
+
it "uses the nothing parser when there is no other parser" do
|
197
|
+
Facter::Util::Parser.parser_for("this.is.not.valid").results.should be_nil
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|