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.

Files changed (379) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +194 -0
  3. data/CONTRIBUTING.md +65 -0
  4. data/Gemfile +43 -0
  5. data/LICENSE +15 -0
  6. data/README.md +33 -0
  7. data/Rakefile +79 -0
  8. data/bin/facter +16 -0
  9. data/etc/facter.conf +5 -0
  10. data/ext/build_defaults.yaml +24 -0
  11. data/ext/debian/changelog.erb +59 -0
  12. data/ext/debian/compat +1 -0
  13. data/ext/debian/control +14 -0
  14. data/ext/debian/copyright +19 -0
  15. data/ext/debian/docs +1 -0
  16. data/ext/debian/lintian-overrides +0 -0
  17. data/ext/debian/rules +10 -0
  18. data/ext/debian/source/format +1 -0
  19. data/ext/facter-diff +74 -0
  20. data/ext/ips/facter.p5m.erb +10 -0
  21. data/ext/ips/rules +7 -0
  22. data/ext/ips/transforms +18 -0
  23. data/ext/osx/file_mapping.yaml +27 -0
  24. data/ext/osx/preflight.erb +33 -0
  25. data/ext/osx/prototype.plist.erb +38 -0
  26. data/ext/project_data.yaml +33 -0
  27. data/ext/redhat/facter.spec.erb +220 -0
  28. data/ext/solaris/pkginfo +7 -0
  29. data/install.rb +380 -0
  30. data/lib/facter.rb +262 -0
  31. data/lib/facter/Cfkey.rb +42 -0
  32. data/lib/facter/application.rb +204 -0
  33. data/lib/facter/architecture.rb +50 -0
  34. data/lib/facter/augeasversion.rb +28 -0
  35. data/lib/facter/blockdevices.rb +105 -0
  36. data/lib/facter/core/aggregate.rb +220 -0
  37. data/lib/facter/core/directed_graph.rb +46 -0
  38. data/lib/facter/core/execution.rb +100 -0
  39. data/lib/facter/core/execution/base.rb +73 -0
  40. data/lib/facter/core/execution/posix.rb +50 -0
  41. data/lib/facter/core/execution/windows.rb +57 -0
  42. data/lib/facter/core/logging.rb +169 -0
  43. data/lib/facter/core/resolvable.rb +94 -0
  44. data/lib/facter/core/suitable.rb +117 -0
  45. data/lib/facter/domain.rb +99 -0
  46. data/lib/facter/ec2.rb +37 -0
  47. data/lib/facter/facterversion.rb +15 -0
  48. data/lib/facter/filesystems.rb +38 -0
  49. data/lib/facter/fqdn.rb +22 -0
  50. data/lib/facter/hardwareisa.rb +20 -0
  51. data/lib/facter/hardwaremodel.rb +67 -0
  52. data/lib/facter/hostname.rb +33 -0
  53. data/lib/facter/id.rb +21 -0
  54. data/lib/facter/interfaces.rb +46 -0
  55. data/lib/facter/ipaddress.rb +171 -0
  56. data/lib/facter/ipaddress6.rb +82 -0
  57. data/lib/facter/iphostnumber.rb +29 -0
  58. data/lib/facter/kernel.rb +22 -0
  59. data/lib/facter/kernelmajversion.rb +15 -0
  60. data/lib/facter/kernelrelease.rb +42 -0
  61. data/lib/facter/kernelversion.rb +22 -0
  62. data/lib/facter/ldom.rb +47 -0
  63. data/lib/facter/lsbdistcodename.rb +18 -0
  64. data/lib/facter/lsbdistdescription.rb +21 -0
  65. data/lib/facter/lsbdistid.rb +18 -0
  66. data/lib/facter/lsbdistrelease.rb +18 -0
  67. data/lib/facter/lsbmajdistrelease.rb +27 -0
  68. data/lib/facter/lsbrelease.rb +18 -0
  69. data/lib/facter/macaddress.rb +97 -0
  70. data/lib/facter/macosx.rb +56 -0
  71. data/lib/facter/manufacturer.rb +68 -0
  72. data/lib/facter/memory.rb +162 -0
  73. data/lib/facter/netmask.rb +42 -0
  74. data/lib/facter/network.rb +20 -0
  75. data/lib/facter/operatingsystem.rb +121 -0
  76. data/lib/facter/operatingsystemmajrelease.rb +33 -0
  77. data/lib/facter/operatingsystemrelease.rb +226 -0
  78. data/lib/facter/osfamily.rb +35 -0
  79. data/lib/facter/path.rb +14 -0
  80. data/lib/facter/physicalprocessorcount.rb +84 -0
  81. data/lib/facter/processor.rb +183 -0
  82. data/lib/facter/ps.rb +30 -0
  83. data/lib/facter/puppetversion.rb +20 -0
  84. data/lib/facter/rubysitedir.rb +12 -0
  85. data/lib/facter/rubyversion.rb +12 -0
  86. data/lib/facter/selinux.rb +99 -0
  87. data/lib/facter/ssh.rb +72 -0
  88. data/lib/facter/timezone.rb +14 -0
  89. data/lib/facter/uniqueid.rb +4 -0
  90. data/lib/facter/uptime.rb +34 -0
  91. data/lib/facter/uptime_days.rb +15 -0
  92. data/lib/facter/uptime_hours.rb +15 -0
  93. data/lib/facter/uptime_seconds.rb +24 -0
  94. data/lib/facter/util/architecture.rb +19 -0
  95. data/lib/facter/util/collection.rb +161 -0
  96. data/lib/facter/util/composite_loader.rb +12 -0
  97. data/lib/facter/util/config.rb +61 -0
  98. data/lib/facter/util/confine.rb +66 -0
  99. data/lib/facter/util/directory_loader.rb +83 -0
  100. data/lib/facter/util/ec2.rb +101 -0
  101. data/lib/facter/util/fact.rb +204 -0
  102. data/lib/facter/util/file_read.rb +37 -0
  103. data/lib/facter/util/formatter.rb +38 -0
  104. data/lib/facter/util/ip.rb +285 -0
  105. data/lib/facter/util/ip/windows.rb +215 -0
  106. data/lib/facter/util/loader.rb +146 -0
  107. data/lib/facter/util/macaddress.rb +43 -0
  108. data/lib/facter/util/macosx.rb +73 -0
  109. data/lib/facter/util/manufacturer.rb +104 -0
  110. data/lib/facter/util/memory.rb +228 -0
  111. data/lib/facter/util/monkey_patches.rb +8 -0
  112. data/lib/facter/util/netmask.rb +40 -0
  113. data/lib/facter/util/normalization.rb +94 -0
  114. data/lib/facter/util/nothing_loader.rb +12 -0
  115. data/lib/facter/util/parser.rb +158 -0
  116. data/lib/facter/util/plist.rb +24 -0
  117. data/lib/facter/util/plist/generator.rb +228 -0
  118. data/lib/facter/util/plist/parser.rb +226 -0
  119. data/lib/facter/util/processor.rb +291 -0
  120. data/lib/facter/util/registry.rb +11 -0
  121. data/lib/facter/util/resolution.rb +152 -0
  122. data/lib/facter/util/solaris_zones.rb +158 -0
  123. data/lib/facter/util/unix_root.rb +5 -0
  124. data/lib/facter/util/uptime.rb +81 -0
  125. data/lib/facter/util/values.rb +80 -0
  126. data/lib/facter/util/virtual.rb +151 -0
  127. data/lib/facter/util/vlans.rb +24 -0
  128. data/lib/facter/util/windows_root.rb +37 -0
  129. data/lib/facter/util/wmi.rb +16 -0
  130. data/lib/facter/util/xendomains.rb +10 -0
  131. data/lib/facter/version.rb +86 -0
  132. data/lib/facter/virtual.rb +262 -0
  133. data/lib/facter/vlans.rb +17 -0
  134. data/lib/facter/xendomains.rb +20 -0
  135. data/lib/facter/zfs_version.rb +10 -0
  136. data/lib/facter/zonename.rb +6 -0
  137. data/lib/facter/zones.rb +17 -0
  138. data/lib/facter/zpool_version.rb +10 -0
  139. data/spec/fixtures/cpuinfo/amd64dual +57 -0
  140. data/spec/fixtures/cpuinfo/amd64quad +79 -0
  141. data/spec/fixtures/cpuinfo/amd64solo +23 -0
  142. data/spec/fixtures/cpuinfo/amd64tri +86 -0
  143. data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
  144. data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
  145. data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
  146. data/spec/fixtures/cpuinfo/panda-armel +17 -0
  147. data/spec/fixtures/cpuinfo/ppc64 +19 -0
  148. data/spec/fixtures/cpuinfo/sparc +10 -0
  149. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
  150. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
  151. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
  152. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
  153. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
  154. data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
  155. data/spec/fixtures/hpux/sched.models +174 -0
  156. data/spec/fixtures/hpux/unistd.h +1534 -0
  157. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
  158. data/spec/fixtures/ifconfig/centos_5_5 +17 -0
  159. data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
  160. data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
  161. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
  162. data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
  163. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
  164. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
  165. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
  166. data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
  167. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
  168. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
  169. data/spec/fixtures/ifconfig/fedora_10 +36 -0
  170. data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
  171. data/spec/fixtures/ifconfig/fedora_13 +18 -0
  172. data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
  173. data/spec/fixtures/ifconfig/fedora_8 +38 -0
  174. data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
  175. data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
  176. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
  177. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
  178. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
  179. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
  180. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
  181. data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
  182. data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
  183. data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
  184. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
  185. data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
  186. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
  187. data/spec/fixtures/ldom/ldom_v1 +6 -0
  188. data/spec/fixtures/netstat/centos_5_5 +5 -0
  189. data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
  190. data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
  191. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
  192. data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
  193. data/spec/fixtures/netstat/fedora_10 +7 -0
  194. data/spec/fixtures/netstat/open_solaris_10 +16 -0
  195. data/spec/fixtures/netstat/open_solaris_b132 +17 -0
  196. data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
  197. data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
  198. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
  199. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
  200. data/spec/fixtures/unit/filesystems/linux +28 -0
  201. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
  202. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
  203. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
  204. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
  205. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
  206. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
  207. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
  208. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
  209. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
  210. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
  211. data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
  212. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
  213. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
  214. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
  215. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
  216. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
  217. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
  218. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
  219. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
  220. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
  221. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
  222. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
  223. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
  224. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
  225. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
  226. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
  227. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
  228. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
  229. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
  230. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
  231. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
  232. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
  233. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
  234. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
  235. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
  236. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
  237. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
  238. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
  239. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
  240. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
  241. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
  242. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
  243. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
  244. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
  245. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
  246. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
  247. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
  248. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
  249. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
  250. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
  251. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
  252. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
  253. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
  254. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
  255. data/spec/fixtures/unit/util/loader/nosuchfact.rb +1 -0
  256. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
  257. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
  258. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
  259. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
  260. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
  261. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
  262. data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
  263. data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
  264. data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
  265. data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
  266. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
  267. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
  268. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
  269. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  270. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  271. data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
  272. data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
  273. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  274. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
  275. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
  276. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
  277. data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
  278. data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
  279. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
  280. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
  281. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
  282. data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
  283. data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
  284. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
  285. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
  286. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
  287. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
  288. data/spec/integration/facter_spec.rb +39 -0
  289. data/spec/lib/facter_spec/cpuinfo.rb +15 -0
  290. data/spec/lib/facter_spec/windows_network.rb +64 -0
  291. data/spec/puppetlabs_spec/files.rb +57 -0
  292. data/spec/puppetlabs_spec/fixtures.rb +49 -0
  293. data/spec/puppetlabs_spec/matchers.rb +87 -0
  294. data/spec/puppetlabs_spec/verbose.rb +9 -0
  295. data/spec/puppetlabs_spec_helper.rb +26 -0
  296. data/spec/shared_contexts/platform.rb +55 -0
  297. data/spec/shared_formats/parses.rb +3 -0
  298. data/spec/spec_helper.rb +75 -0
  299. data/spec/unit/application_spec.rb +101 -0
  300. data/spec/unit/architecture_spec.rb +63 -0
  301. data/spec/unit/blockdevices_spec.rb +109 -0
  302. data/spec/unit/core/aggregate_spec.rb +125 -0
  303. data/spec/unit/core/directed_graph_spec.rb +79 -0
  304. data/spec/unit/core/execution/base_spec.rb +119 -0
  305. data/spec/unit/core/execution/posix_spec.rb +86 -0
  306. data/spec/unit/core/execution/windows_spec.rb +106 -0
  307. data/spec/unit/core/execution_spec.rb +37 -0
  308. data/spec/unit/core/logging_spec.rb +104 -0
  309. data/spec/unit/core/resolvable_spec.rb +81 -0
  310. data/spec/unit/core/suitable_spec.rb +96 -0
  311. data/spec/unit/domain_spec.rb +310 -0
  312. data/spec/unit/ec2_spec.rb +187 -0
  313. data/spec/unit/facter_spec.rb +108 -0
  314. data/spec/unit/filesystems_spec.rb +50 -0
  315. data/spec/unit/hardwareisa_spec.rb +41 -0
  316. data/spec/unit/hardwaremodel_spec.rb +56 -0
  317. data/spec/unit/hostname_spec.rb +40 -0
  318. data/spec/unit/id_spec.rb +29 -0
  319. data/spec/unit/interfaces_spec.rb +57 -0
  320. data/spec/unit/ipaddress6_spec.rb +161 -0
  321. data/spec/unit/ipaddress_spec.rb +114 -0
  322. data/spec/unit/kernel_spec.rb +24 -0
  323. data/spec/unit/kernelmajversion_spec.rb +17 -0
  324. data/spec/unit/kernelrelease_spec.rb +53 -0
  325. data/spec/unit/kernelversion_spec.rb +32 -0
  326. data/spec/unit/ldom_spec.rb +74 -0
  327. data/spec/unit/lsbdistcodename_spec.rb +25 -0
  328. data/spec/unit/lsbdistdescription_spec.rb +25 -0
  329. data/spec/unit/lsbdistid_spec.rb +25 -0
  330. data/spec/unit/lsbdistrelease_spec.rb +25 -0
  331. data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
  332. data/spec/unit/lsbrelease_spec.rb +25 -0
  333. data/spec/unit/macaddress_spec.rb +61 -0
  334. data/spec/unit/manufacturer_spec.rb +115 -0
  335. data/spec/unit/memory_spec.rb +539 -0
  336. data/spec/unit/netmask_spec.rb +95 -0
  337. data/spec/unit/operatingsystem_spec.rb +141 -0
  338. data/spec/unit/operatingsystemmajrelease_spec.rb +16 -0
  339. data/spec/unit/operatingsystemrelease_spec.rb +226 -0
  340. data/spec/unit/physicalprocessorcount_spec.rb +76 -0
  341. data/spec/unit/processor_spec.rb +393 -0
  342. data/spec/unit/ps_spec.rb +42 -0
  343. data/spec/unit/selinux_spec.rb +114 -0
  344. data/spec/unit/ssh_spec.rb +77 -0
  345. data/spec/unit/uniqueid_spec.rb +27 -0
  346. data/spec/unit/uptime_spec.rb +110 -0
  347. data/spec/unit/util/collection_spec.rb +258 -0
  348. data/spec/unit/util/config_spec.rb +84 -0
  349. data/spec/unit/util/confine_spec.rb +148 -0
  350. data/spec/unit/util/directory_loader_spec.rb +88 -0
  351. data/spec/unit/util/ec2_spec.rb +180 -0
  352. data/spec/unit/util/fact_spec.rb +142 -0
  353. data/spec/unit/util/file_read_spec.rb +29 -0
  354. data/spec/unit/util/ip/windows_spec.rb +80 -0
  355. data/spec/unit/util/ip_spec.rb +463 -0
  356. data/spec/unit/util/loader_spec.rb +286 -0
  357. data/spec/unit/util/macaddress_spec.rb +141 -0
  358. data/spec/unit/util/macosx_spec.rb +113 -0
  359. data/spec/unit/util/manufacturer_spec.rb +179 -0
  360. data/spec/unit/util/normalization_spec.rb +113 -0
  361. data/spec/unit/util/parser_spec.rb +200 -0
  362. data/spec/unit/util/processor_spec.rb +92 -0
  363. data/spec/unit/util/registry_spec.rb +76 -0
  364. data/spec/unit/util/resolution_spec.rb +129 -0
  365. data/spec/unit/util/solaris_zones_spec.rb +127 -0
  366. data/spec/unit/util/uptime_spec.rb +126 -0
  367. data/spec/unit/util/values_spec.rb +131 -0
  368. data/spec/unit/util/virtual_spec.rb +294 -0
  369. data/spec/unit/util/vlans_spec.rb +12 -0
  370. data/spec/unit/util/wmi_spec.rb +19 -0
  371. data/spec/unit/util/xendomains_spec.rb +21 -0
  372. data/spec/unit/version_spec.rb +42 -0
  373. data/spec/unit/virtual_spec.rb +470 -0
  374. data/spec/unit/zfs_version_spec.rb +75 -0
  375. data/spec/unit/zonename_spec.rb +14 -0
  376. data/spec/unit/zones_spec.rb +55 -0
  377. data/spec/unit/zpool_version_spec.rb +75 -0
  378. data/spec/watchr.rb +125 -0
  379. 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