facter 2.0.1.rc1-x86-mingw32
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 +758 -0
@@ -0,0 +1,286 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/loader'
|
5
|
+
|
6
|
+
describe Facter::Util::Loader do
|
7
|
+
before :each do
|
8
|
+
Facter::Util::Loader.any_instance.unstub(:load_all)
|
9
|
+
end
|
10
|
+
|
11
|
+
def loader_from(places)
|
12
|
+
env = places[:env] || {}
|
13
|
+
search_path = places[:search_path] || []
|
14
|
+
loader = Facter::Util::Loader.new(env)
|
15
|
+
loader.stubs(:search_path).returns search_path
|
16
|
+
loader
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should have a method for loading individual facts by name" do
|
20
|
+
Facter::Util::Loader.new.should respond_to(:load)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should have a method for loading all facts" do
|
24
|
+
Facter::Util::Loader.new.should respond_to(:load_all)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should have a method for returning directories containing facts" do
|
28
|
+
Facter::Util::Loader.new.should respond_to(:search_path)
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#valid_seach_path?" do
|
32
|
+
let(:loader) { Facter::Util::Loader.new }
|
33
|
+
|
34
|
+
# Used to have test for " " as a directory since that should
|
35
|
+
# be a relative directory, but on Windows in both 1.8.7 and
|
36
|
+
# 1.9.3 it is an absolute directory (WTF Windows). Considering
|
37
|
+
# we didn't have a valid use case for a " " directory, the
|
38
|
+
# test was removed.
|
39
|
+
|
40
|
+
[
|
41
|
+
'.',
|
42
|
+
'..',
|
43
|
+
'...',
|
44
|
+
'.foo',
|
45
|
+
'../foo',
|
46
|
+
'foo',
|
47
|
+
'foo/bar',
|
48
|
+
'foo/../bar',
|
49
|
+
' /',
|
50
|
+
' \/',
|
51
|
+
].each do |dir|
|
52
|
+
it "should be false for relative path #{dir}" do
|
53
|
+
loader.should_not be_valid_search_path dir
|
54
|
+
end
|
55
|
+
end
|
56
|
+
[
|
57
|
+
'/.',
|
58
|
+
'/..',
|
59
|
+
'/...',
|
60
|
+
'/.foo',
|
61
|
+
'/../foo',
|
62
|
+
'/foo',
|
63
|
+
'/foo/bar',
|
64
|
+
'/foo/../bar',
|
65
|
+
'/ ',
|
66
|
+
'/ /..',
|
67
|
+
].each do |dir|
|
68
|
+
it "should be true for absolute path #{dir}" do
|
69
|
+
loader.should be_valid_search_path dir
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "when determining the search path" do
|
75
|
+
let(:loader) { Facter::Util::Loader.new }
|
76
|
+
|
77
|
+
it "should include the facter subdirectory of all paths in ruby LOAD_PATH" do
|
78
|
+
dirs = $LOAD_PATH.collect { |d| File.expand_path('facter', d) }
|
79
|
+
loader.stubs(:valid_search_path?).returns(true)
|
80
|
+
File.stubs(:directory?).returns true
|
81
|
+
|
82
|
+
paths = loader.search_path
|
83
|
+
|
84
|
+
dirs.each do |dir|
|
85
|
+
paths.should be_include(dir)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should exclude invalid search paths" do
|
90
|
+
dirs = $LOAD_PATH.collect { |d| File.join(d, "facter") }
|
91
|
+
loader.stubs(:valid_search_path?).returns(false)
|
92
|
+
paths = loader.search_path
|
93
|
+
dirs.each do |dir|
|
94
|
+
paths.should_not be_include(dir)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should include all search paths registered with Facter" do
|
99
|
+
Facter.expects(:search_path).returns %w{/one /two}
|
100
|
+
loader.stubs(:valid_search_path?).returns true
|
101
|
+
|
102
|
+
File.stubs(:directory?).returns false
|
103
|
+
File.stubs(:directory?).with('/one').returns true
|
104
|
+
File.stubs(:directory?).with('/two').returns true
|
105
|
+
|
106
|
+
paths = loader.search_path
|
107
|
+
paths.should be_include("/one")
|
108
|
+
paths.should be_include("/two")
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should warn on invalid search paths registered with Facter" do
|
112
|
+
Facter.expects(:search_path).returns %w{/one two/three}
|
113
|
+
loader.stubs(:valid_search_path?).returns false
|
114
|
+
loader.stubs(:valid_search_path?).with('/one').returns true
|
115
|
+
loader.stubs(:valid_search_path?).with('two/three').returns false
|
116
|
+
Facter.expects(:warn).with('Excluding two/three from search path. Fact file paths must be an absolute directory').once
|
117
|
+
|
118
|
+
File.stubs(:directory?).returns false
|
119
|
+
File.stubs(:directory?).with('/one').returns true
|
120
|
+
|
121
|
+
paths = loader.search_path
|
122
|
+
paths.should be_include("/one")
|
123
|
+
paths.should_not be_include("two/three")
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should strip paths that are valid paths but not are not present" do
|
127
|
+
Facter.expects(:search_path).returns %w{/one /two}
|
128
|
+
loader.stubs(:valid_search_path?).returns false
|
129
|
+
loader.stubs(:valid_search_path?).with('/one').returns true
|
130
|
+
loader.stubs(:valid_search_path?).with('/two').returns true
|
131
|
+
|
132
|
+
File.stubs(:directory?).returns false
|
133
|
+
File.stubs(:directory?).with('/one').returns true
|
134
|
+
File.stubs(:directory?).with('/two').returns false
|
135
|
+
|
136
|
+
paths = loader.search_path
|
137
|
+
paths.should be_include("/one")
|
138
|
+
paths.should_not be_include('/two')
|
139
|
+
end
|
140
|
+
|
141
|
+
describe "and the FACTERLIB environment variable is set" do
|
142
|
+
it "should include all paths in FACTERLIB" do
|
143
|
+
loader = Facter::Util::Loader.new("FACTERLIB" => "/one/path#{File::PATH_SEPARATOR}/two/path")
|
144
|
+
|
145
|
+
File.stubs(:directory?).returns false
|
146
|
+
File.stubs(:directory?).with('/one/path').returns true
|
147
|
+
File.stubs(:directory?).with('/two/path').returns true
|
148
|
+
|
149
|
+
loader.stubs(:valid_search_path?).returns true
|
150
|
+
paths = loader.search_path
|
151
|
+
%w{/one/path /two/path}.each do |dir|
|
152
|
+
paths.should be_include(dir)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe "when loading facts" do
|
159
|
+
it "should load values from the matching environment variable if one is present" do
|
160
|
+
loader = loader_from(:env => { "facter_testing" => "yayness" })
|
161
|
+
|
162
|
+
Facter.expects(:add).with("testing")
|
163
|
+
|
164
|
+
loader.load(:testing)
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should load any files in the search path with names matching the fact name" do
|
168
|
+
loader = loader_from(:search_path => %w{/one/dir /two/dir})
|
169
|
+
|
170
|
+
loader.expects(:search_path).returns %w{/one/dir /two/dir}
|
171
|
+
File.stubs(:file?).returns false
|
172
|
+
File.expects(:file?).with("/one/dir/testing.rb").returns true
|
173
|
+
|
174
|
+
Kernel.expects(:load).with("/one/dir/testing.rb")
|
175
|
+
|
176
|
+
loader.load(:testing)
|
177
|
+
end
|
178
|
+
|
179
|
+
it 'should not load any ruby files from subdirectories matching the fact name in the search path' do
|
180
|
+
loader = Facter::Util::Loader.new
|
181
|
+
File.stubs(:file?).returns false
|
182
|
+
File.expects(:file?).with("/one/dir/testing.rb").returns true
|
183
|
+
Kernel.expects(:load).with("/one/dir/testing.rb")
|
184
|
+
|
185
|
+
File.stubs(:directory?).with("/one/dir/testing").returns true
|
186
|
+
loader.stubs(:search_path).returns %w{/one/dir}
|
187
|
+
|
188
|
+
Dir.stubs(:entries).with("/one/dir/testing").returns %w{foo.rb bar.rb}
|
189
|
+
%w{/one/dir/testing/foo.rb /one/dir/testing/bar.rb}.each do |f|
|
190
|
+
File.stubs(:directory?).with(f).returns false
|
191
|
+
Kernel.stubs(:load).with(f)
|
192
|
+
end
|
193
|
+
|
194
|
+
loader.load(:testing)
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should not load files that don't end in '.rb'" do
|
198
|
+
loader = Facter::Util::Loader.new
|
199
|
+
loader.expects(:search_path).returns %w{/one/dir}
|
200
|
+
File.stubs(:file?).returns false
|
201
|
+
File.expects(:file?).with("/one/dir/testing.rb").returns false
|
202
|
+
File.expects(:exist?).with("/one/dir/testing").never
|
203
|
+
Kernel.expects(:load).never
|
204
|
+
|
205
|
+
loader.load(:testing)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
describe "when loading all facts" do
|
210
|
+
let(:loader) { Facter::Util::Loader.new }
|
211
|
+
|
212
|
+
before :each do
|
213
|
+
loader.stubs(:search_path).returns []
|
214
|
+
|
215
|
+
File.stubs(:directory?).returns true
|
216
|
+
end
|
217
|
+
|
218
|
+
it "should load all files in all search paths" do
|
219
|
+
loader = loader_from(:search_path => %w{/one/dir /two/dir})
|
220
|
+
|
221
|
+
Dir.expects(:glob).with('/one/dir/*.rb').returns %w{/one/dir/a.rb /one/dir/b.rb}
|
222
|
+
Dir.expects(:glob).with('/two/dir/*.rb').returns %w{/two/dir/c.rb /two/dir/d.rb}
|
223
|
+
|
224
|
+
%w{/one/dir/a.rb /one/dir/b.rb /two/dir/c.rb /two/dir/d.rb}.each do |f|
|
225
|
+
File.expects(:file?).with(f).returns true
|
226
|
+
Kernel.expects(:load).with(f)
|
227
|
+
end
|
228
|
+
|
229
|
+
loader.load_all
|
230
|
+
end
|
231
|
+
|
232
|
+
it "should not try to load subdirectories of search paths" do
|
233
|
+
loader.expects(:search_path).returns %w{/one/dir /two/dir}
|
234
|
+
|
235
|
+
# a.rb is a directory
|
236
|
+
Dir.expects(:glob).with('/one/dir/*.rb').returns %w{/one/dir/a.rb /one/dir/b.rb}
|
237
|
+
File.expects(:file?).with('/one/dir/a.rb').returns false
|
238
|
+
File.expects(:file?).with('/one/dir/b.rb').returns true
|
239
|
+
Kernel.expects(:load).with('/one/dir/b.rb')
|
240
|
+
|
241
|
+
# c.rb is a directory
|
242
|
+
Dir.expects(:glob).with('/two/dir/*.rb').returns %w{/two/dir/c.rb /two/dir/d.rb}
|
243
|
+
File.expects(:file?).with('/two/dir/c.rb').returns false
|
244
|
+
File.expects(:file?).with('/two/dir/d.rb').returns true
|
245
|
+
Kernel.expects(:load).with('/two/dir/d.rb')
|
246
|
+
|
247
|
+
loader.load_all
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should not raise an exception when a file is unloadable" do
|
251
|
+
loader.expects(:search_path).returns %w{/one/dir}
|
252
|
+
|
253
|
+
Dir.expects(:glob).with('/one/dir/*.rb').returns %w{/one/dir/a.rb}
|
254
|
+
File.expects(:file?).with('/one/dir/a.rb').returns true
|
255
|
+
|
256
|
+
Kernel.expects(:load).with("/one/dir/a.rb").raises(LoadError)
|
257
|
+
Facter.expects(:warn)
|
258
|
+
|
259
|
+
expect { loader.load_all }.to_not raise_error
|
260
|
+
end
|
261
|
+
|
262
|
+
it "should load all facts from the environment" do
|
263
|
+
Facter::Util::Resolution.with_env "facter_one" => "yayness", "facter_two" => "boo" do
|
264
|
+
loader.load_all
|
265
|
+
end
|
266
|
+
Facter.value(:one).should == 'yayness'
|
267
|
+
Facter.value(:two).should == 'boo'
|
268
|
+
end
|
269
|
+
|
270
|
+
it "should only load all facts one time" do
|
271
|
+
loader = loader_from(:env => {})
|
272
|
+
loader.expects(:load_env).once
|
273
|
+
|
274
|
+
loader.load_all
|
275
|
+
loader.load_all
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
it "should load facts on the facter search path only once" do
|
280
|
+
facterlibdir = File.expand_path(File.dirname(__FILE__) + '../../../fixtures/unit/util/loader')
|
281
|
+
|
282
|
+
Facter::Util::Loader.new('FACTERLIB' => facterlibdir).load_all
|
283
|
+
|
284
|
+
Facter.value(:nosuchfact).should be_nil
|
285
|
+
end
|
286
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/macaddress'
|
5
|
+
|
6
|
+
describe "standardized MAC address" do
|
7
|
+
it "should have zeroes added if missing" do
|
8
|
+
Facter::Util::Macaddress::standardize("0:ab:cd:e:12:3").should == "00:ab:cd:0e:12:03"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be identical if each octet already has two digits" do
|
12
|
+
Facter::Util::Macaddress::standardize("00:ab:cd:0e:12:03").should == "00:ab:cd:0e:12:03"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should be nil if input is nil" do
|
16
|
+
proc { result = Facter::Util::Macaddress.standardize(nil) }.should_not raise_error
|
17
|
+
Facter::Util::Macaddress.standardize(nil).should be_nil
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "Darwin", :unless => Facter::Util::Config.is_windows? do
|
22
|
+
test_cases = [
|
23
|
+
# version, iface, real macaddress, fallback macaddress
|
24
|
+
["9.8.0", 'en0', "00:17:f2:06:e4:2e", "00:17:f2:06:e4:2e"],
|
25
|
+
["10.3.0", 'en0', "00:17:f2:06:e3:c2", "00:17:f2:06:e3:c2"],
|
26
|
+
["10.6.4", 'en1', "58:b0:35:7f:25:b3", "58:b0:35:fa:08:b1"],
|
27
|
+
["10.6.6_dualstack", "en1", "00:25:00:48:19:ef", "00:25:4b:ca:56:72"]
|
28
|
+
]
|
29
|
+
|
30
|
+
test_cases.each do |version, default_iface, macaddress, fallback_macaddress|
|
31
|
+
netstat_file = fixtures("netstat", "darwin_#{version.tr('.', '_')}")
|
32
|
+
ifconfig_file_no_iface = fixtures("ifconfig", "darwin_#{version.tr('.', '_')}")
|
33
|
+
ifconfig_file = "#{ifconfig_file_no_iface}_#{default_iface}"
|
34
|
+
|
35
|
+
describe "version #{version}" do
|
36
|
+
describe Facter::Util::Macaddress::Darwin do
|
37
|
+
describe ".default_interface" do
|
38
|
+
describe "when netstat has a default interface" do
|
39
|
+
before do
|
40
|
+
Facter::Util::Macaddress::Darwin.stubs(:netstat_command).returns("cat \"#{netstat_file}\"")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return the default interface name" do
|
44
|
+
Facter::Util::Macaddress::Darwin.default_interface.should == default_iface
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe ".macaddress" do
|
50
|
+
describe "when netstat has a default interface" do
|
51
|
+
before do
|
52
|
+
Facter.stubs(:warn)
|
53
|
+
Facter::Util::Macaddress::Darwin.stubs(:default_interface).returns('')
|
54
|
+
Facter::Util::Macaddress::Darwin.stubs(:ifconfig_command).returns("cat \"#{ifconfig_file}\"")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return the macaddress of the default interface" do
|
58
|
+
Facter::Util::Macaddress::Darwin.macaddress.should == macaddress
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "when netstat does not have a default interface" do
|
63
|
+
before do
|
64
|
+
Facter::Util::Macaddress::Darwin.stubs(:default_interface).returns("")
|
65
|
+
Facter::Util::Macaddress::Darwin.stubs(:ifconfig_command).returns("cat \"#{ifconfig_file_no_iface}\"")
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should warn about the lack of default" do
|
69
|
+
Facter.expects(:warn).with("Could not find a default route. Using first non-loopback interface")
|
70
|
+
Facter::Util::Macaddress::Darwin.macaddress
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should return the macaddress of the first non-loopback interface" do
|
74
|
+
Facter.expects(:warn).with("Could not find a default route. Using first non-loopback interface")
|
75
|
+
Facter::Util::Macaddress::Darwin.macaddress.should == fallback_macaddress
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "The macaddress fact" do
|
85
|
+
context "on Windows" do
|
86
|
+
require 'facter/util/wmi'
|
87
|
+
require 'facter/util/registry'
|
88
|
+
require 'facter_spec/windows_network'
|
89
|
+
|
90
|
+
include FacterSpec::WindowsNetwork
|
91
|
+
|
92
|
+
before :each do
|
93
|
+
Facter.fact(:kernel).stubs(:value).returns('windows')
|
94
|
+
Facter::Util::Registry.stubs(:hklm_read).returns(nic_bindings)
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "when you have no active network adapter" do
|
98
|
+
it "should return nil if there are no active (or any) network adapters" do
|
99
|
+
Facter::Util::WMI.expects(:execquery).returns([])
|
100
|
+
|
101
|
+
Facter.value(:macaddress).should == nil
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "when you have one network adapter" do
|
106
|
+
it "should return properly" do
|
107
|
+
nic = given_a_valid_windows_nic_with_ipv4_and_ipv6
|
108
|
+
Facter::Util::WMI.expects(:execquery).returns([nic])
|
109
|
+
|
110
|
+
Facter.value(:macaddress).should == macAddress0
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "when you have more than one network adapter" do
|
115
|
+
it "should return the macaddress of the adapter with the lowest IP connection metric (best connection)" do
|
116
|
+
nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
|
117
|
+
nics[:nic1].expects(:IPConnectionMetric).returns(5)
|
118
|
+
Facter::Util::WMI.expects(:execquery).returns(nics.values)
|
119
|
+
|
120
|
+
Facter.value(:macaddress).should == macAddress1
|
121
|
+
end
|
122
|
+
|
123
|
+
context "when the IP connection metric is the same" do
|
124
|
+
it "should return the macaddress of the adapter with the lowest binding order" do
|
125
|
+
nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
|
126
|
+
Facter::Util::WMI.expects(:execquery).returns(nics.values)
|
127
|
+
|
128
|
+
Facter.value(:macaddress).should == macAddress0
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should return the macaddress of the adapter with the lowest MACAddress when multiple adapters have the same IP connection metric when the lowest MACAddress is not first" do
|
132
|
+
nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
|
133
|
+
Facter::Util::WMI.expects(:execquery).returns(nics.values)
|
134
|
+
Facter::Util::Registry.stubs(:hklm_read).returns(["\\Device\\#{settingId1}", "\\Device\\#{settingId0}" ])
|
135
|
+
|
136
|
+
Facter.value(:macaddress).should == macAddress1
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'facter/util/macosx'
|
5
|
+
|
6
|
+
describe Facter::Util::Macosx do
|
7
|
+
let(:badplist) do
|
8
|
+
'<?xml version="1.0" encoding="UTF-8"?>
|
9
|
+
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
|
10
|
+
<plist version="1.0">
|
11
|
+
<dict>
|
12
|
+
<key>test</key>
|
13
|
+
<string>file</string>
|
14
|
+
</dict>
|
15
|
+
</plist>'
|
16
|
+
end
|
17
|
+
|
18
|
+
let(:goodplist) do
|
19
|
+
'<?xml version="1.0" encoding="UTF-8"?>
|
20
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
21
|
+
<plist version="1.0">
|
22
|
+
<dict>
|
23
|
+
<key>test</key>
|
24
|
+
<string>file</string>
|
25
|
+
</dict>
|
26
|
+
</plist>'
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should be able to retrieve profiler data as xml for a given data field" do
|
30
|
+
Facter::Core::Execution.expects(:exec).with("/usr/sbin/system_profiler -xml foo").returns "yay"
|
31
|
+
Facter::Util::Macosx.profiler_xml("foo").should == "yay"
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should correct a bad XML doctype string' do
|
35
|
+
Facter.expects(:debug).with('Had to fix plist with incorrect DOCTYPE declaration')
|
36
|
+
Facter::Util::Macosx.intern_xml(badplist)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should return a hash given XML data' do
|
40
|
+
test_hash = { 'test' => 'file' }
|
41
|
+
Facter::Util::Macosx.intern_xml(goodplist).should == test_hash
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should fail when trying to read invalid XML' do
|
45
|
+
STDERR.stubs(:<<)
|
46
|
+
expect {
|
47
|
+
Facter::Util::Macosx.intern_xml('<bad}|%-->xml<--->')
|
48
|
+
}.to raise_error(RuntimeError, /A plist file could not be properly read by CFPropertyList/)
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "when collecting profiler data" do
|
52
|
+
it "should return the first value in the '_items' hash in the first value of the results of the system_profiler data, with the '_name' field removed, if the profiler returns data" do
|
53
|
+
@result = [
|
54
|
+
'_items' => [
|
55
|
+
{'_name' => "foo", "yay" => "bar"}
|
56
|
+
]
|
57
|
+
]
|
58
|
+
Facter::Util::Macosx.expects(:profiler_xml).with("foo").returns "eh"
|
59
|
+
Facter::Util::Macosx.expects(:intern_xml).with("eh").returns @result
|
60
|
+
Facter::Util::Macosx.profiler_data("foo").should == {"yay" => "bar"}
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should return nil if an exception is thrown during parsing of xml" do
|
64
|
+
Facter::Util::Macosx.expects(:profiler_xml).with("foo").returns "eh"
|
65
|
+
Facter::Util::Macosx.expects(:intern_xml).with("eh").raises "boo!"
|
66
|
+
Facter::Util::Macosx.profiler_data("foo").should be_nil
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should return the profiler data for 'SPHardwareDataType' as the hardware information" do
|
71
|
+
Facter::Util::Macosx.expects(:profiler_data).with("SPHardwareDataType").returns "eh"
|
72
|
+
Facter::Util::Macosx.hardware_overview.should == "eh"
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should return the profiler data for 'SPSoftwareDataType' as the os information" do
|
76
|
+
Facter::Util::Macosx.expects(:profiler_data).with("SPSoftwareDataType").returns "eh"
|
77
|
+
Facter::Util::Macosx.os_overview.should == "eh"
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "when working out software version" do
|
81
|
+
|
82
|
+
before do
|
83
|
+
Facter::Core::Execution.expects(:exec).with("/usr/bin/sw_vers -productName").returns "Mac OS X"
|
84
|
+
Facter::Core::Execution.expects(:exec).with("/usr/bin/sw_vers -buildVersion").returns "9J62"
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should have called sw_vers three times when determining software version" do
|
88
|
+
Facter::Core::Execution.expects(:exec).with("/usr/bin/sw_vers -productVersion").returns "10.5.7"
|
89
|
+
Facter::Util::Macosx.sw_vers
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should return a hash with the correct keys when determining software version" do
|
93
|
+
Facter::Core::Execution.expects(:exec).with("/usr/bin/sw_vers -productVersion").returns "10.5.7"
|
94
|
+
Facter::Util::Macosx.sw_vers.keys.sort.should == ["macosx_productName",
|
95
|
+
"macosx_buildVersion",
|
96
|
+
"macosx_productversion_minor",
|
97
|
+
"macosx_productversion_major",
|
98
|
+
"macosx_productVersion"].sort
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should split a product version of 'x.y.z' into separate hash entries correctly" do
|
102
|
+
Facter::Core::Execution.expects(:exec).with("/usr/bin/sw_vers -productVersion").returns "1.2.3"
|
103
|
+
sw_vers = Facter::Util::Macosx.sw_vers
|
104
|
+
sw_vers["macosx_productversion_major"].should == "1.2"
|
105
|
+
sw_vers["macosx_productversion_minor"].should == "3"
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should treat a product version of 'x.y' as 'x.y.0" do
|
109
|
+
Facter::Core::Execution.expects(:exec).with("/usr/bin/sw_vers -productVersion").returns "2.3"
|
110
|
+
Facter::Util::Macosx.sw_vers["macosx_productversion_minor"].should == "0"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|