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,81 @@
1
+ require 'spec_helper'
2
+ require 'facter/core/resolvable'
3
+
4
+ describe Facter::Core::Resolvable do
5
+
6
+ class ResolvableClass
7
+ def initialize(name)
8
+ @name = name
9
+ @fact = Facter::Util::Fact.new("stub fact")
10
+ end
11
+ attr_accessor :name, :resolve_value
12
+ attr_reader :fact
13
+ include Facter::Core::Resolvable
14
+ end
15
+
16
+ subject { ResolvableClass.new('resolvable') }
17
+
18
+ it "has a default timeout of 0 seconds" do
19
+ expect(subject.limit).to eq 0
20
+ end
21
+
22
+ it "can specify a custom timeout" do
23
+ subject.timeout = 10
24
+ expect(subject.limit).to eq 10
25
+ end
26
+
27
+ describe "generating a value" do
28
+ it "returns the results of #resolve_value" do
29
+ subject.resolve_value = 'stuff'
30
+ expect(subject.value).to eq 'stuff'
31
+ end
32
+
33
+ it "normalizes the resolved value" do
34
+ Facter::Util::Normalization.expects(:normalize).returns 'stuff'
35
+ subject.resolve_value = 'stuff'
36
+ expect(subject.value).to eq('stuff')
37
+ end
38
+
39
+ it "logs a warning if an exception was raised" do
40
+ subject.expects(:resolve_value).raises RuntimeError, "kaboom!"
41
+ Facter.expects(:warn).with(regexp_matches(/Could not retrieve .*: kaboom!/))
42
+ expect(subject.value).to eq nil
43
+ end
44
+ end
45
+
46
+ describe "timing out" do
47
+ it "uses #limit instead of #timeout to determine the timeout period" do
48
+ subject.expects(:timeout).never
49
+ subject.expects(:limit).returns 25
50
+
51
+ Timeout.expects(:timeout).with(25)
52
+ subject.value
53
+ end
54
+
55
+ it "returns nil if the timeout was reached" do
56
+ Facter.expects(:warn).with(regexp_matches(/Timed out after 0\.1 seconds while resolving/))
57
+ Timeout.expects(:timeout).raises Timeout::Error
58
+
59
+ subject.timeout = 0.1
60
+
61
+ expect(subject.value).to be_nil
62
+ end
63
+ end
64
+
65
+ describe 'callbacks when flushing facts' do
66
+ class FlushFakeError < StandardError; end
67
+
68
+ context '#on_flush' do
69
+ it 'accepts a block with on_flush' do
70
+ subject.on_flush() { raise NotImplementedError }
71
+ end
72
+ end
73
+
74
+ context '#flush' do
75
+ it 'calls the block passed to on_flush' do
76
+ subject.on_flush() { raise FlushFakeError }
77
+ expect { subject.flush }.to raise_error FlushFakeError
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+ require 'facter/core/suitable'
3
+
4
+ describe Facter::Core::Suitable do
5
+
6
+ class SuitableClass
7
+ def initialize
8
+ @confines = []
9
+ end
10
+ attr_reader :confines
11
+ include Facter::Core::Suitable
12
+ end
13
+
14
+ subject { SuitableClass.new }
15
+
16
+ describe "confining on facts" do
17
+ it "can add confines with a fact and a single value" do
18
+ subject.confine :kernel => 'Linux'
19
+ end
20
+
21
+ it "creates a Facter::Util::Confine object for the confine call" do
22
+ subject.confine :kernel => 'Linux'
23
+ conf = subject.confines.first
24
+ expect(conf).to be_a_kind_of Facter::Util::Confine
25
+ expect(conf.fact).to eq :kernel
26
+ expect(conf.values).to eq ['Linux']
27
+ end
28
+ end
29
+
30
+ describe "confining on blocks" do
31
+ it "can add a single fact with a block parameter" do
32
+ subject.confine(:one) { true }
33
+ end
34
+
35
+ it "creates a Util::Confine instance for the provided fact with block parameter" do
36
+ block = lambda { true }
37
+ Facter::Util::Confine.expects(:new).with("one")
38
+
39
+ subject.confine("one", &block)
40
+ end
41
+
42
+ it "should accept a single block parameter" do
43
+ subject.confine() { true }
44
+ end
45
+
46
+ it "should create a Util::Confine instance for the provided block parameter" do
47
+ block = lambda { true }
48
+ Facter::Util::Confine.expects(:new)
49
+
50
+ subject.confine(&block)
51
+ end
52
+ end
53
+
54
+ describe "determining weight" do
55
+ it "is zero if no confines are set" do
56
+ expect(subject.weight).to eq 0
57
+ end
58
+
59
+ it "defaults to the number of confines" do
60
+ subject.confine :kernel => 'Linux'
61
+ expect(subject.weight).to eq 1
62
+ end
63
+
64
+ it "can be explicitly set" do
65
+ subject.has_weight 10
66
+ expect(subject.weight).to eq 10
67
+ end
68
+
69
+ it "prefers an explicit weight over the number of confines" do
70
+ subject.confine :kernel => 'Linux'
71
+ subject.has_weight 11
72
+ expect(subject.weight).to eq 11
73
+ end
74
+ end
75
+
76
+ describe "determining suitability" do
77
+ it "is true if all confines for the object evaluate to true" do
78
+ subject.confine :kernel => 'Linux'
79
+ subject.confine :operatingsystem => 'Redhat'
80
+
81
+ subject.confines.each { |confine| confine.stubs(:true?).returns true }
82
+
83
+ expect(subject).to be_suitable
84
+ end
85
+
86
+ it "is false if any confines for the object evaluate to false" do
87
+ subject.confine :kernel => 'Linux'
88
+ subject.confine :operatingsystem => 'Redhat'
89
+
90
+ subject.confines.first.stubs(:true?).returns true
91
+ subject.confines.first.stubs(:true?).returns false
92
+
93
+ expect(subject).to_not be_suitable
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,310 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'stringio'
5
+
6
+ describe "Domain name facts" do
7
+
8
+ def resolv_conf_contains(*lines)
9
+ file_handle = StringIO.new(lines.join("\n"))
10
+ FileTest.stubs(:exists?).with("/etc/resolv.conf").returns(true)
11
+ File.stubs(:open).with("/etc/resolv.conf").yields(file_handle)
12
+ end
13
+
14
+ [
15
+ { :kernel => "Linux", :hostname_command => "hostname -f 2> /dev/null" },
16
+ { :kernel => "SunOS", :hostname_command => "hostname 2> /dev/null" },
17
+ { :kernel => "Darwin", :hostname_command => "hostname -f 2> /dev/null" },
18
+ { :kernel => "FreeBSD", :hostname_command => "hostname -f 2> /dev/null" },
19
+ { :kernel => "HP-UX", :hostname_command => "hostname 2> /dev/null" },
20
+ ].each do |scenario|
21
+
22
+ describe "on #{scenario[:kernel]}" do
23
+ let(:hostname_command) { scenario[:hostname_command] }
24
+ let(:dnsdomain_command) { "dnsdomainname 2> /dev/null" }
25
+
26
+ def the_hostname_is(value)
27
+ Facter::Core::Execution.stubs(:exec).with(hostname_command).returns(value)
28
+ end
29
+
30
+ def the_dnsdomainname_is(value)
31
+ Facter::Core::Execution.stubs(:exec).with(dnsdomain_command).returns(value)
32
+ end
33
+
34
+ before do
35
+ Facter.fact(:kernel).stubs(:value).returns(scenario[:kernel])
36
+ end
37
+
38
+ it "should use the hostname binary" do
39
+ the_hostname_is("test.example.com")
40
+
41
+ Facter.fact(:domain).value.should == "example.com"
42
+ end
43
+
44
+ it "should fall back to the dnsdomainname binary" do
45
+ the_hostname_is("myhost")
46
+ the_dnsdomainname_is("example.com")
47
+
48
+ Facter.fact(:domain).value.should == "example.com"
49
+ end
50
+
51
+ it "should fall back to /etc/resolv.conf" do
52
+ the_hostname_is("myhost")
53
+ the_dnsdomainname_is("")
54
+
55
+ resolv_conf_contains("domain testing.com")
56
+
57
+ Facter.fact(:domain).value.should == "testing.com"
58
+ end
59
+
60
+ describe "Top level domain" do
61
+ it "should find the domain name" do
62
+ the_hostname_is("ns01.tld")
63
+
64
+ Facter.fact(:domain).value.should == "tld"
65
+ end
66
+ end
67
+
68
+ describe "when using /etc/resolv.conf" do
69
+ before do
70
+ the_hostname_is("")
71
+ the_dnsdomainname_is("")
72
+ end
73
+
74
+ it "should use the domain field over the search field" do
75
+ resolv_conf_contains(
76
+ "nameserver 4.2.2.1",
77
+ "search example.org",
78
+ "domain example.com"
79
+ )
80
+
81
+ Facter.fact(:domain).value.should == 'example.com'
82
+ end
83
+
84
+ it "should fall back to the search field" do
85
+ resolv_conf_contains(
86
+ "nameserver 4.2.2.1",
87
+ "search example.org"
88
+ )
89
+
90
+ Facter.fact(:domain).value.should == 'example.org'
91
+ end
92
+
93
+ it "should use the first domain in the search field" do
94
+ resolv_conf_contains("search example.org example.net")
95
+
96
+ Facter.fact(:domain).value.should == 'example.org'
97
+ end
98
+
99
+ # Test permutations of domain and search, where 'domain' can be a value of
100
+ # the search keyword and the domain keyword
101
+ # and also where 'search' can be a value of the search keyword and the
102
+ # domain keyword
103
+ # For example, /etc/resolv.conf may look like:
104
+ # domain domain
105
+ # or
106
+ # search search
107
+ # or
108
+ # domain search
109
+ #
110
+ #
111
+ # Why someone would have their machines named 'www.domain' or 'www.search', I
112
+ # don't know, but we'll at least handle it properly
113
+ [
114
+ [["domain domain"], "domain"],
115
+ [["domain search"], "search"],
116
+ [["search domain"], "domain"],
117
+ [["search search"], "search"],
118
+ [["search domain notdomain"], "domain"],
119
+ [["#search notdomain", "search search"], "search"],
120
+ [["# search notdomain", "search search"], "search"],
121
+ [["#domain notdomain", "domain domain"], "domain"],
122
+ [["# domain notdomain", "domain domain"], "domain"],
123
+ ].each do |tuple|
124
+ conf = tuple[0]
125
+ expect = tuple[1]
126
+ it "should return #{expect} from \"#{conf}\"" do
127
+ resolv_conf_contains(*conf)
128
+
129
+ Facter.fact(:domain).value.should == expect
130
+ end
131
+ end
132
+ end
133
+ end
134
+ end
135
+
136
+ describe "on Windows" do
137
+ before(:each) do
138
+ Facter.fact(:kernel).stubs(:value).returns("windows")
139
+ require 'facter/util/registry'
140
+ end
141
+
142
+ describe "with primary dns suffix" do
143
+ before(:each) do
144
+ Facter::Util::Registry.stubs(:hklm_read).returns('baz.com')
145
+ end
146
+
147
+ it "should get the primary dns suffix" do
148
+ Facter.fact(:domain).value.should == 'baz.com'
149
+ end
150
+
151
+ it "should not execute the wmi query" do
152
+ require 'facter/util/wmi'
153
+ Facter::Util::WMI.expects(:execquery).never
154
+ Facter.fact(:domain).value
155
+ end
156
+ end
157
+
158
+ describe "without primary dns suffix" do
159
+ before(:each) do
160
+ Facter::Util::Registry.stubs(:hklm_read).returns('')
161
+ end
162
+
163
+ def expects_dnsdomains(domains)
164
+ nics = []
165
+
166
+ domains.each do |domain|
167
+ nic = stubs 'nic'
168
+ nic.stubs(:DNSDomain).returns(domain)
169
+ nics << nic
170
+ end
171
+
172
+ require 'facter/util/wmi'
173
+ Facter::Util::WMI.stubs(:execquery).with("select DNSDomain from Win32_NetworkAdapterConfiguration where IPEnabled = True").returns(nics)
174
+ end
175
+
176
+ it "uses the first DNSDomain" do
177
+ expects_dnsdomains(['foo.com', 'bar.com'])
178
+
179
+ Facter.fact(:domain).value.should == 'foo.com'
180
+ end
181
+
182
+ it "uses the first non-nil DNSDomain" do
183
+ expects_dnsdomains([nil, 'bar.com'])
184
+
185
+ Facter.fact(:domain).value.should == 'bar.com'
186
+ end
187
+
188
+ it "uses the first non-empty DNSDomain" do
189
+ expects_dnsdomains(['', 'bar.com'])
190
+
191
+ Facter.fact(:domain).value.should == 'bar.com'
192
+ end
193
+
194
+ context "without any network adapters with a specified DNSDomain" do
195
+ let(:hostname_command) { 'hostname > NUL' }
196
+
197
+ it "should return nil" do
198
+ expects_dnsdomains([nil])
199
+
200
+ Facter::Core::Execution.stubs(:exec).with(hostname_command).returns('sometest')
201
+ FileTest.stubs(:exists?).with("/etc/resolv.conf").returns(false)
202
+
203
+ Facter.fact(:domain).value.should be_nil
204
+ end
205
+ end
206
+ end
207
+ end
208
+
209
+ describe "with trailing dots" do
210
+ describe "on Windows" do
211
+ before do
212
+ Facter.fact(:kernel).stubs(:value).returns("windows")
213
+ require 'facter/util/registry'
214
+ require 'facter/util/wmi'
215
+ end
216
+
217
+ [{:registry => 'testdomain.', :wmi => '', :expect => 'testdomain'},
218
+ {:registry => '', :wmi => 'testdomain.', :expect => 'testdomain'},
219
+ ].each do |scenario|
220
+
221
+ describe "scenarios" do
222
+ before(:each) do
223
+ Facter::Util::Registry.stubs(:hklm_read).returns(scenario[:registry])
224
+ nic = stubs 'nic'
225
+ nic.stubs(:DNSDomain).returns(scenario[:wmi])
226
+ Facter::Util::WMI.stubs(:execquery).with("select DNSDomain from Win32_NetworkAdapterConfiguration where IPEnabled = True").returns([nic])
227
+ end
228
+
229
+ it "should return #{scenario[:expect]}" do
230
+ Facter.fact(:domain).value.should == scenario[:expect]
231
+ end
232
+
233
+ it "should remove trailing dots" do
234
+ Facter.fact(:domain).value.should_not =~ /\.$/
235
+ end
236
+ end
237
+ end
238
+ end
239
+
240
+ describe "on everything else" do
241
+ before do
242
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
243
+ FileTest.stubs(:exists?).with("/etc/resolv.conf").returns(true)
244
+ end
245
+
246
+ [
247
+ {
248
+ :scenario => 'when there is only a hostname',
249
+ :hostname => 'host.testdomain.',
250
+ :dnsdomainname => '',
251
+ :resolve_domain => '',
252
+ :resolve_search => '',
253
+ :expect => 'testdomain'
254
+ },
255
+ {
256
+ :scenario => 'when there is only a domain name',
257
+ :hostname => '',
258
+ :dnsdomainname => 'testdomain.',
259
+ :resolve_domain => '',
260
+ :resolve_search => '',
261
+ :expect => 'testdomain'
262
+ },
263
+ {
264
+ :scenario => 'when there is only a resolve domain',
265
+ :hostname => '',
266
+ :dnsdomainname => '',
267
+ :resolve_domain => 'testdomain.',
268
+ :resolve_search => '',
269
+ :expect => 'testdomain'
270
+ },
271
+ {
272
+ :scenario => 'when there is only a resolve search',
273
+ :hostname => '',
274
+ :dnsdomainname => '',
275
+ :resolve_domain => '',
276
+ :resolve_search => 'testdomain.',
277
+ :expect => 'testdomain'
278
+ },
279
+ {
280
+ :scenario => 'when there is no information available',
281
+ :hostname => '',
282
+ :dnsdomainname => '',
283
+ :resolve_domain => '',
284
+ :resolve_search => '',
285
+ :expect => nil
286
+ }
287
+ ].each do |scenario|
288
+
289
+ describe scenario[:scenario] do
290
+ before(:each) do
291
+ Facter::Core::Execution.stubs(:exec).with("hostname -f 2> /dev/null").returns(scenario[:hostname])
292
+ Facter::Core::Execution.stubs(:exec).with("dnsdomainname 2> /dev/null").returns(scenario[:dnsdomainname])
293
+ resolv_conf_contains(
294
+ "search #{scenario[:resolve_search]}",
295
+ "domain #{scenario[:resolve_domain]}"
296
+ )
297
+ end
298
+
299
+ it "should remove trailing dots" do
300
+ Facter.fact(:domain).value.should_not =~ /\.$/
301
+ end
302
+
303
+ it "should return #{scenario[:expect]}" do
304
+ Facter.fact(:domain).value.should == scenario[:expect]
305
+ end
306
+ end
307
+ end
308
+ end
309
+ end
310
+ end