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.

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 +674 -0
@@ -0,0 +1,187 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/ec2'
5
+
6
+ describe "ec2 facts" do
7
+ # This is the standard prefix for making an API call in EC2 (or fake)
8
+ # environments.
9
+ let(:api_prefix) { "http://169.254.169.254" }
10
+
11
+ describe "when running on ec2" do
12
+ before :each do
13
+ # This is an ec2 instance, not a eucalyptus instance
14
+ Facter::Util::EC2.stubs(:has_euca_mac?).returns(false)
15
+ Facter::Util::EC2.stubs(:has_openstack_mac?).returns(false)
16
+ Facter::Util::EC2.stubs(:has_ec2_arp?).returns(true)
17
+
18
+ # Assume we can connect
19
+ Facter::Util::EC2.stubs(:can_connect?).returns(true)
20
+ end
21
+
22
+ it "should create flat meta-data facts" do
23
+ Object.any_instance.expects(:open).
24
+ with("#{api_prefix}/2008-02-01/meta-data/").
25
+ at_least_once.returns(StringIO.new("foo"))
26
+
27
+ Object.any_instance.expects(:open).
28
+ with("#{api_prefix}/2008-02-01/meta-data/foo").
29
+ at_least_once.returns(StringIO.new("bar"))
30
+
31
+ Facter.collection.internal_loader.load(:ec2)
32
+
33
+ Facter.fact(:ec2_foo).value.should == "bar"
34
+ end
35
+
36
+ it "should create flat meta-data facts with comma seperation" do
37
+ Object.any_instance.expects(:open).
38
+ with("#{api_prefix}/2008-02-01/meta-data/").
39
+ at_least_once.returns(StringIO.new("foo"))
40
+
41
+ Object.any_instance.expects(:open).
42
+ with("#{api_prefix}/2008-02-01/meta-data/foo").
43
+ at_least_once.returns(StringIO.new("bar\nbaz"))
44
+
45
+ Facter.collection.internal_loader.load(:ec2)
46
+
47
+ Facter.fact(:ec2_foo).value.should == "bar,baz"
48
+ end
49
+
50
+ it "should create structured meta-data facts" do
51
+ Object.any_instance.expects(:open).
52
+ with("#{api_prefix}/2008-02-01/meta-data/").
53
+ at_least_once.returns(StringIO.new("foo/"))
54
+
55
+ Object.any_instance.expects(:open).
56
+ with("#{api_prefix}/2008-02-01/meta-data/foo/").
57
+ at_least_once.returns(StringIO.new("bar"))
58
+
59
+ Object.any_instance.expects(:open).
60
+ with("#{api_prefix}/2008-02-01/meta-data/foo/bar").
61
+ at_least_once.returns(StringIO.new("baz"))
62
+
63
+ Facter.collection.internal_loader.load(:ec2)
64
+
65
+ Facter.fact(:ec2_foo_bar).value.should == "baz"
66
+ end
67
+
68
+ it "should create ec2_user_data fact" do
69
+ # No meta-data
70
+ Object.any_instance.expects(:open).
71
+ with("#{api_prefix}/2008-02-01/meta-data/").
72
+ at_least_once.returns(StringIO.new(""))
73
+
74
+ Facter::Util::EC2.stubs(:read_uri).
75
+ with("#{api_prefix}/latest/user-data/").
76
+ returns("test")
77
+
78
+ Facter.collection.internal_loader.load(:ec2)
79
+ Facter.fact(:ec2_userdata).value.should == ["test"]
80
+ end
81
+ end
82
+
83
+ describe "when running on eucalyptus" do
84
+ before :each do
85
+ # Return false for ec2, true for eucalyptus
86
+ Facter::Util::EC2.stubs(:has_euca_mac?).returns(true)
87
+ Facter::Util::EC2.stubs(:has_openstack_mac?).returns(false)
88
+ Facter::Util::EC2.stubs(:has_ec2_arp?).returns(false)
89
+
90
+ # Assume we can connect
91
+ Facter::Util::EC2.stubs(:can_connect?).returns(true)
92
+ end
93
+
94
+ it "should create ec2_user_data fact" do
95
+ # No meta-data
96
+ Object.any_instance.expects(:open).\
97
+ with("#{api_prefix}/2008-02-01/meta-data/").\
98
+ at_least_once.returns(StringIO.new(""))
99
+
100
+ Facter::Util::EC2.stubs(:read_uri).
101
+ with("#{api_prefix}/latest/user-data/").
102
+ returns("test")
103
+
104
+ # Force a fact load
105
+ Facter.collection.internal_loader.load(:ec2)
106
+
107
+ Facter.fact(:ec2_userdata).value.should == ["test"]
108
+ end
109
+ end
110
+
111
+ describe "when running on openstack" do
112
+ before :each do
113
+ # Return false for ec2, true for eucalyptus
114
+ Facter::Util::EC2.stubs(:has_openstack_mac?).returns(true)
115
+ Facter::Util::EC2.stubs(:has_euca_mac?).returns(false)
116
+ Facter::Util::EC2.stubs(:has_ec2_arp?).returns(false)
117
+
118
+ # Assume we can connect
119
+ Facter::Util::EC2.stubs(:can_connect?).returns(true)
120
+ end
121
+
122
+ it "should create ec2_user_data fact" do
123
+ # No meta-data
124
+ Object.any_instance.expects(:open).\
125
+ with("#{api_prefix}/2008-02-01/meta-data/").\
126
+ at_least_once.returns(StringIO.new(""))
127
+
128
+ Facter::Util::EC2.stubs(:read_uri).
129
+ with("#{api_prefix}/latest/user-data/").
130
+ returns("test")
131
+
132
+ # Force a fact load
133
+ Facter.collection.internal_loader.load(:ec2)
134
+
135
+ Facter.fact(:ec2_userdata).value.should == ["test"]
136
+ end
137
+
138
+ it "should return nil if open fails" do
139
+ Facter.stubs(:warn) # do not pollute test output
140
+ Facter.expects(:warn).with('Could not retrieve ec2 metadata: host unreachable')
141
+
142
+ Object.any_instance.expects(:open).
143
+ with("#{api_prefix}/2008-02-01/meta-data/").
144
+ at_least_once.raises(RuntimeError, 'host unreachable')
145
+
146
+ Facter::Util::EC2.stubs(:read_uri).
147
+ with("#{api_prefix}/latest/user-data/").
148
+ raises(RuntimeError, 'host unreachable')
149
+
150
+ # Force a fact load
151
+ Facter.collection.internal_loader.load(:ec2)
152
+
153
+ Facter.fact(:ec2_userdata).value.should be_nil
154
+ end
155
+
156
+ end
157
+
158
+ describe "when api connect test fails" do
159
+ before :each do
160
+ Facter.stubs(:warnonce)
161
+ end
162
+
163
+ it "should not populate ec2_userdata" do
164
+ # Emulate ec2 for now as it matters little to this test
165
+ Facter::Util::EC2.stubs(:has_euca_mac?).returns(true)
166
+ Facter::Util::EC2.stubs(:has_ec2_arp?).never
167
+ Facter::Util::EC2.expects(:can_connect?).at_least_once.returns(false)
168
+
169
+ # The API should never be called at this point
170
+ Object.any_instance.expects(:open).
171
+ with("#{api_prefix}/2008-02-01/meta-data/").never
172
+ Object.any_instance.expects(:open).
173
+ with("#{api_prefix}/2008-02-01/user-data/").never
174
+
175
+ # Force a fact load
176
+ Facter.collection.internal_loader.load(:ec2)
177
+
178
+ Facter.fact(:ec2_userdata).should == nil
179
+ end
180
+
181
+ it "should rescue the exception" do
182
+ Facter::Util::EC2.expects(:open).with("#{api_prefix}:80/").raises(Timeout::Error)
183
+
184
+ Facter::Util::EC2.should_not be_can_connect
185
+ end
186
+ end
187
+ end
@@ -0,0 +1,108 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Facter do
6
+ it "caches the collection" do
7
+ Facter.collection.should equal(Facter.collection)
8
+ end
9
+
10
+ describe "methods on the collection" do
11
+ it "delegates the :flush method to the collection" do
12
+ Facter.collection.expects(:flush)
13
+ Facter.flush
14
+ end
15
+
16
+ it "delegates the :fact method to the collection" do
17
+ Facter.collection.expects(:fact).with("afact")
18
+ Facter.fact("afact")
19
+ end
20
+
21
+ it "delegates the :list method to the collection" do
22
+ Facter.collection.expects(:list)
23
+ Facter.list
24
+ end
25
+
26
+ it "loads all facts when listing" do
27
+ Facter.collection.expects(:load_all)
28
+ Facter.list
29
+ end
30
+
31
+ it "delegates the :to_hash method to the collection" do
32
+ Facter.collection.expects(:to_hash)
33
+ Facter.to_hash
34
+ end
35
+
36
+ it "loads all facts when calling :to_hash" do
37
+ Facter.collection.expects(:load_all)
38
+ Facter.collection.stubs(:to_hash)
39
+ Facter.to_hash
40
+ end
41
+
42
+ it "delegates the :value method to the collection" do
43
+ Facter.collection.expects(:value).with("myvaluefact")
44
+ Facter.value("myvaluefact")
45
+ end
46
+
47
+ it "delegates the :each method to the collection" do
48
+ Facter.collection.expects(:each)
49
+ Facter.each
50
+ end
51
+
52
+ it "delegates the :add method to the collection" do
53
+ Facter.collection.expects(:add).with("factname", {})
54
+ Facter.add("factname")
55
+ end
56
+
57
+ it "delegates the :define_fact method to the collection" do
58
+ Facter.collection.expects(:define_fact).with("factname", {})
59
+ Facter.define_fact("factname")
60
+ end
61
+
62
+ it "loads all facts when calling :each" do
63
+ Facter.collection.expects(:load_all)
64
+ Facter.collection.stubs(:each)
65
+ Facter.each
66
+ end
67
+ end
68
+
69
+ it "yields to the block when using :each" do
70
+ Facter.collection.stubs(:load_all)
71
+ Facter.collection.stubs(:each).yields "foo"
72
+ result = []
73
+ Facter.each { |f| result << f }
74
+ result.should == %w{foo}
75
+ end
76
+
77
+ describe "when registering directories to search" do
78
+ after { Facter.reset_search_path! }
79
+
80
+ it "allows registration of a directory" do
81
+ Facter.search "/my/dir"
82
+ end
83
+
84
+ it "allows registration of multiple directories" do
85
+ Facter.search "/my/dir", "/other/dir"
86
+ end
87
+
88
+ it "returns all registered directories when asked" do
89
+ Facter.search "/my/dir", "/other/dir"
90
+ Facter.search_path.should == %w{/my/dir /other/dir}
91
+ end
92
+ end
93
+
94
+ describe "when registering directories to search for external facts" do
95
+ it "allows registration of a directory" do
96
+ Facter.search_external ["/my/dir"]
97
+ end
98
+
99
+ it "allows registration of multiple directories" do
100
+ Facter.search_external ["/my/dir", "/other/dir"]
101
+ end
102
+
103
+ it "returns all registered directories when asked" do
104
+ Facter.search_external ["/my/dir", "/other/dir"]
105
+ Facter.search_external_path.should include("/my/dir", "/other/dir")
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,50 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe 'Filesystem facts' do
6
+ describe 'on non-Linux OS' do
7
+ it 'should not exist' do
8
+ Facter.fact(:kernel).stubs(:value).returns('SunOS')
9
+ Facter.fact(:filesystems).value.should == nil
10
+ end
11
+ end
12
+
13
+ describe 'on Linux' do
14
+ before :each do
15
+ Facter.fact(:kernel).stubs(:value).returns('Linux')
16
+ fixture_data = my_fixture_read('linux')
17
+ Facter::Core::Execution.expects(:exec) \
18
+ .with('cat /proc/filesystems 2> /dev/null').returns(fixture_data)
19
+ Facter.collection.internal_loader.load(:filesystems)
20
+ end
21
+
22
+ after :each do
23
+ Facter.clear
24
+ end
25
+
26
+ it 'should exist' do
27
+ Facter.fact(:filesystems).value.should_not == nil
28
+ end
29
+
30
+ it 'should detect the correct number of filesystems' do
31
+ Facter.fact(:filesystems).value.split(',').length.should == 6
32
+ end
33
+
34
+ # Check that lines from /proc/filesystems that start with 'nodev' are
35
+ # skipped
36
+ it 'should not detect sysfs' do
37
+ Facter.fact(:filesystems).value.split(',').should_not include('sysfs')
38
+ end
39
+
40
+ # Check that all other lines are counted as valid filesystems
41
+ it 'should detect ext4' do
42
+ Facter.fact(:filesystems).value.split(',').should include('ext4')
43
+ end
44
+
45
+ # fuseblk is never included in the filesystem list
46
+ it 'should not detect fuseblk' do
47
+ Facter.fact(:filesystems).value.split(',').should_not include('fuseblk')
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter'
5
+
6
+ describe "Hardwareisa fact" do
7
+ it "should match uname -p on Linux" do
8
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
9
+ Facter::Core::Execution.stubs(:exec).with("uname -p").returns("Inky")
10
+
11
+ Facter.fact(:hardwareisa).value.should == "Inky"
12
+ end
13
+
14
+ it "should match uname -p on Darwin" do
15
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
16
+ Facter::Core::Execution.stubs(:exec).with("uname -p").returns("Blinky")
17
+
18
+ Facter.fact(:hardwareisa).value.should == "Blinky"
19
+ end
20
+
21
+ it "should match uname -p on SunOS" do
22
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
23
+ Facter::Core::Execution.stubs(:exec).with("uname -p").returns("Pinky")
24
+
25
+ Facter.fact(:hardwareisa).value.should == "Pinky"
26
+ end
27
+
28
+ it "should match uname -p on FreeBSD" do
29
+ Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
30
+ Facter::Core::Execution.stubs(:exec).with("uname -p").returns("Clyde")
31
+
32
+ Facter.fact(:hardwareisa).value.should == "Clyde"
33
+ end
34
+
35
+ it "should match uname -m on HP-UX" do
36
+ Facter.fact(:kernel).stubs(:value).returns("HP-UX")
37
+ Facter::Core::Execution.stubs(:exec).with("uname -m").returns("Pac-Man")
38
+
39
+ Facter.fact(:hardwareisa).value.should == "Pac-Man"
40
+ end
41
+ end
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter'
5
+
6
+ describe "Hardwaremodel fact" do
7
+ it "should match uname -m by default" do
8
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
9
+ Facter::Core::Execution.stubs(:exec).with("uname -m").returns("Inky")
10
+
11
+ Facter.fact(:hardwaremodel).value.should == "Inky"
12
+ end
13
+
14
+ describe "on Windows" do
15
+ require 'facter/util/wmi'
16
+ before :each do
17
+ Facter.fact(:kernel).stubs(:value).returns("windows")
18
+ end
19
+
20
+ it "should detect i486" do
21
+ cpu = mock('cpu', :Architecture => 0)
22
+ cpu.expects(:Level).returns(4).twice
23
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
24
+
25
+ Facter.fact(:hardwaremodel).value.should == "i486"
26
+ end
27
+
28
+ it "should detect i686" do
29
+ cpu = mock('cpu', :Architecture => 0, :Level => 6)
30
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
31
+
32
+ Facter.fact(:hardwaremodel).value.should == "i686"
33
+ end
34
+
35
+ it "should detect x64" do
36
+ cpu = mock('cpu', :Architecture => 9, :AddressWidth => 64, :Level => 6)
37
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
38
+
39
+ Facter.fact(:hardwaremodel).value.should == "x64"
40
+ end
41
+
42
+ it "(#16948) reports i686 when a 32 bit OS is running on a 64 bit CPU" do
43
+ cpu = mock('cpu', :Architecture => 9, :AddressWidth => 32, :Level => 6)
44
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
45
+
46
+ Facter.fact(:hardwaremodel).value.should == "i686"
47
+ end
48
+
49
+ it "(#20989) should report i686 when a 32 bit OS is running on a 64 bit CPU and when level is greater than 6 (and not something like i1586)" do
50
+ cpu = mock('cpu', :Architecture => 9, :AddressWidth => 32, :Level => 15)
51
+ Facter::Util::WMI.expects(:execquery).returns([cpu])
52
+
53
+ Facter.fact(:hardwaremodel).value.should == "i686"
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,40 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "Hostname facts" do
6
+
7
+ describe "on linux" do
8
+ before do
9
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
10
+ Facter.fact(:kernelrelease).stubs(:value).returns("2.6")
11
+ end
12
+
13
+ it "should use the hostname command" do
14
+ Facter::Core::Execution.expects(:exec).with('hostname').at_least_once
15
+ Facter.fact(:hostname).value.should be_nil
16
+ end
17
+
18
+ it "should use hostname as the fact if unqualified" do
19
+ Facter::Core::Execution.stubs(:exec).with('hostname').returns('host1')
20
+ Facter.fact(:hostname).value.should == "host1"
21
+ end
22
+
23
+ it "should truncate the domain name if qualified" do
24
+ Facter::Core::Execution.stubs(:exec).with('hostname').returns('host1.example.com')
25
+ Facter.fact(:hostname).value.should == "host1"
26
+ end
27
+ end
28
+
29
+ describe "on darwin release R7" do
30
+ before do
31
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
32
+ Facter.fact(:kernelrelease).stubs(:value).returns("R7")
33
+ end
34
+
35
+ it "should use scutil to get the hostname" do
36
+ Facter::Core::Execution.expects(:exec).with('/usr/sbin/scutil --get LocalHostName').returns("host1")
37
+ Facter.fact(:hostname).value.should == "host1"
38
+ end
39
+ end
40
+ end