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,101 @@
1
+ require 'spec_helper'
2
+ require 'facter/application'
3
+
4
+ describe Facter::Application do
5
+ describe '.parse' do
6
+ it 'returns an empty hash when given no options' do
7
+ Facter::Application.parse([]).should == {}
8
+ Facter::Application.parse(['architecture', 'kernel']).should == {}
9
+ end
10
+
11
+ [:yaml, :json].each do |option_key|
12
+ it "sets options[:#{option_key}] when given --#{option_key}" do
13
+ options = Facter::Application.parse(["--#{option_key}"])
14
+ options[option_key].should be_true
15
+ end
16
+ end
17
+
18
+ [['-y', :yaml], ['-j', :json]].each do |option, key|
19
+ it "sets options[:#{key}] when given #{option}" do
20
+ options = Facter::Application.parse([option])
21
+ options[key].should be_true
22
+ end
23
+ end
24
+
25
+ ['-d', '--debug'].each do |option|
26
+ it "enables debugging when given #{option}" do
27
+ Facter.debugging(false)
28
+ Facter::Application.parse([option])
29
+ Facter.should be_debugging
30
+ Facter.debugging(false)
31
+ end
32
+ end
33
+
34
+ it "enables tracing when given --trace" do
35
+ Facter.trace(false)
36
+ Facter::Application.parse(['--trace'])
37
+ Facter.should be_trace
38
+ Facter.trace(false)
39
+ end
40
+
41
+ ['-t', '--timing'].each do |option|
42
+ it "enables timing when given #{option}" do
43
+ Facter.timing(false)
44
+ Facter::Application.parse([option])
45
+ Facter.should be_timing
46
+ Facter.timing(false)
47
+ end
48
+ end
49
+
50
+ ['-p', '--puppet'].each do |option|
51
+ it "calls load_puppet when given #{option}" do
52
+ Facter::Application.expects(:load_puppet)
53
+ Facter::Application.parse([option])
54
+ end
55
+ end
56
+
57
+ it 'mutates argv so that non-option arguments are left' do
58
+ argv = ['-y', '--trace', 'uptime', 'virtual']
59
+ Facter::Application.parse(argv)
60
+ argv.should == ['uptime', 'virtual']
61
+ end
62
+
63
+ after(:all) do
64
+ Facter.debugging(false)
65
+ Facter.timing(false)
66
+ Facter.trace(false)
67
+ end
68
+ end
69
+
70
+ describe "formatting facts" do
71
+ before do
72
+ Facter.stubs(:to_hash)
73
+ Facter.stubs(:value)
74
+ Facter::Application.stubs(:puts)
75
+ end
76
+
77
+ it "delegates YAML formatting" do
78
+ Facter::Util::Formatter.expects(:format_yaml)
79
+ Facter::Application.stubs(:exit).with(0)
80
+ Facter::Application.run(['--yaml'])
81
+ end
82
+
83
+ it "delegates JSON formatting", :if => Facter.json? do
84
+ Facter::Util::Formatter.expects(:format_json)
85
+ Facter::Application.stubs(:exit).with(0)
86
+ Facter::Application.run(['--json'])
87
+ end
88
+
89
+ it "delegates plaintext formatting" do
90
+ Facter::Util::Formatter.expects(:format_plaintext)
91
+ Facter::Application.stubs(:exit).with(0)
92
+ Facter::Application.run(['--plaintext'])
93
+ end
94
+
95
+ it "defaults to plaintext" do
96
+ Facter::Util::Formatter.expects(:format_plaintext)
97
+ Facter::Application.stubs(:exit).with(0)
98
+ Facter::Application.run([])
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,63 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/architecture'
5
+
6
+ describe "Architecture fact" do
7
+
8
+ it "should default to the hardware model" do
9
+ Facter.fact(:hardwaremodel).stubs(:value).returns("NonSpecialCasedHW")
10
+
11
+ Facter.fact(:architecture).value.should == "NonSpecialCasedHW"
12
+ end
13
+
14
+ os_archs = Hash.new
15
+ os_archs = {
16
+ ["Debian","x86_64"] => "amd64",
17
+ ["Gentoo","x86_64"] => "amd64",
18
+ ["GNU/kFreeBSD","x86_64"] => "amd64",
19
+ ["Ubuntu","x86_64"] => "amd64",
20
+ ["Gentoo","i386"] => "x86",
21
+ ["Gentoo","i486"] => "x86",
22
+ ["Gentoo","i586"] => "x86",
23
+ ["Gentoo","i686"] => "x86",
24
+ ["Gentoo","pentium"] => "x86",
25
+ ["windows","i386"] => "x86",
26
+ ["windows","i686"] => "x86",
27
+ ["windows","x64"] => "x64",
28
+ }
29
+ generic_archs = Hash.new
30
+ generic_archs = {
31
+ "i386" => "i386",
32
+ "i486" => "i386",
33
+ "i586" => "i386",
34
+ "i686" => "i386",
35
+ "pentium" => "i386",
36
+ }
37
+
38
+ os_archs.each do |pair, result|
39
+ it "should be #{result} if os is #{pair[0]} and hardwaremodel is #{pair[1]}" do
40
+ Facter.fact(:operatingsystem).stubs(:value).returns(pair[0])
41
+ Facter.fact(:hardwaremodel).stubs(:value).returns(pair[1])
42
+
43
+ Facter.fact(:architecture).value.should == result
44
+ end
45
+ end
46
+
47
+ generic_archs.each do |hw, result|
48
+ it "should be #{result} if hardwaremodel is #{hw}" do
49
+ Facter.fact(:hardwaremodel).stubs(:value).returns(hw)
50
+ Facter.fact(:operatingsystem).stubs(:value).returns("NonSpecialCasedOS")
51
+
52
+ Facter.fact(:architecture).value.should == result
53
+ end
54
+ end
55
+
56
+ it "(#16081) should be PowerPC_POWER7 if os is AIX" do
57
+ Facter.fact(:kernel).stubs(:value).returns("AIX")
58
+ Facter::Util::Architecture.stubs(:lsattr).returns("type PowerPC_POWER7 Processor type False")
59
+ Facter.fact(:hardwaremodel).stubs(:value).returns("IBM,8233-E8B")
60
+ Facter.fact(:architecture).value.should == "PowerPC_POWER7"
61
+ end
62
+
63
+ end
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter'
5
+ require 'facter/util/nothing_loader'
6
+
7
+ describe "Block device facts" do
8
+
9
+ describe "on non-Linux OS" do
10
+
11
+ it "should not exist when kernel isn't Linux" do
12
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
13
+ Facter.fact(:blockdevices).should == nil
14
+ end
15
+
16
+ end
17
+
18
+ describe "on Linux" do
19
+
20
+ describe "with /sys/block/" do
21
+
22
+ describe "with valid entries" do
23
+ before :each do
24
+ Facter::Util::Config.ext_fact_loader = Facter::Util::NothingLoader.new
25
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
26
+ File.stubs(:exist?).with('/sys/block/').returns(true)
27
+
28
+ Dir.stubs(:entries).with("/sys/block/").returns([".", "..", "hda", "sda", "sdb"])
29
+
30
+ File.stubs(:exist?).with("/sys/block/./device").returns(false)
31
+ File.stubs(:exist?).with("/sys/block/../device").returns(false)
32
+
33
+ stubdevices = [
34
+ #device, size, vendor, model
35
+ ["hda"],
36
+ ["sda", "976773168", "ATA", "WDC WD5000AAKS-0"],
37
+ ["sdb", "8787591168", "DELL", "PERC H700"]
38
+ ]
39
+
40
+ stubdevices.each do |device, size, vendor, model|
41
+ stubdir = "/sys/block/#{device}"
42
+ File.stubs(:exist?).with(stubdir + "/device").returns(true)
43
+ File.stubs(:exist?).with(stubdir + "/size").returns(size ? true : false)
44
+ File.stubs(:exist?).with(stubdir + "/device/model").returns(model ? true : false)
45
+ File.stubs(:exist?).with(stubdir + "/device/vendor").returns(vendor ? true : false)
46
+ IO.stubs(:read).with(stubdir + "/size").returns(size) if size
47
+ IO.stubs(:read).with(stubdir + "/device/vendor").returns(vendor) if vendor
48
+ IO.stubs(:read).with(stubdir + "/device/model").returns(model) if model
49
+ end
50
+ end
51
+
52
+ it "should report three block devices, hda, sda, and sdb, with accurate information from sda and sdb, and without invalid . or .. entries" do
53
+ Facter.fact(:blockdevices).value.should == "hda,sda,sdb"
54
+
55
+ # handle facts that should not exist
56
+ %w{ . .. hda }.each do |device|
57
+ Facter.fact("blockdevice_#{device}_size".to_sym).should == nil
58
+ Facter.fact("blockdevice_#{device}_vendor".to_sym).should == nil
59
+ Facter.fact("blockdevice_#{device}_model".to_sym).should == nil
60
+ end
61
+
62
+ # handle facts that should exist
63
+ %w{ sda sdb }.each do |device|
64
+ Facter.fact("blockdevice_#{device}_size".to_sym).should_not == nil
65
+ Facter.fact("blockdevice_#{device}_vendor".to_sym).should_not == nil
66
+ Facter.fact("blockdevice_#{device}_model".to_sym).should_not == nil
67
+ end
68
+
69
+ Facter.fact(:blockdevice_sda_model).value.should == "WDC WD5000AAKS-0"
70
+ Facter.fact(:blockdevice_sda_vendor).value.should == "ATA"
71
+ Facter.fact(:blockdevice_sda_size).value.should == 500107862016
72
+
73
+ Facter.fact(:blockdevice_sdb_model).value.should == "PERC H700"
74
+ Facter.fact(:blockdevice_sdb_vendor).value.should == "DELL"
75
+ Facter.fact(:blockdevice_sdb_size).value.should == 4499246678016
76
+
77
+ end
78
+
79
+ end
80
+ describe "with invalid entries in /sys/block" do
81
+ before :each do
82
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
83
+ File.stubs(:exist?).with('/sys/block/').returns(true)
84
+
85
+ Dir.stubs(:entries).with("/sys/block/").returns([".", "..", "xda", "ydb"])
86
+
87
+ File.stubs(:exist?).with("/sys/block/./device").returns(false)
88
+ File.stubs(:exist?).with("/sys/block/../device").returns(false)
89
+ File.stubs(:exist?).with("/sys/block/xda/device").returns(false)
90
+ File.stubs(:exist?).with("/sys/block/ydb/device").returns(false)
91
+ end
92
+
93
+ it "should not exist with invalid entries in /sys/block" do
94
+ Facter.fact(:blockdevices).should == nil
95
+ end
96
+ end
97
+ end
98
+ describe "without /sys/block/" do
99
+
100
+ it "should not exist without /sys/block/ on Linux" do
101
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
102
+ File.stubs(:exist?).with('/sys/block/').returns(false)
103
+ Facter.fact(:blockdevices).should == nil
104
+ end
105
+
106
+ end
107
+
108
+ end
109
+ end
@@ -0,0 +1,125 @@
1
+ require 'spec_helper'
2
+ require 'facter/core/aggregate'
3
+
4
+ describe Facter::Core::Aggregate do
5
+
6
+ let(:fact) { stub('stub_fact', :name => 'stub_fact') }
7
+
8
+ subject { obj = described_class.new('aggregated', fact) }
9
+
10
+ it "can be resolved" do
11
+ expect(subject).to be_a_kind_of Facter::Core::Resolvable
12
+ end
13
+
14
+ it "can be confined and weighted" do
15
+ expect(subject).to be_a_kind_of Facter::Core::Suitable
16
+ end
17
+
18
+ describe "setting options" do
19
+
20
+ it "can set the timeout" do
21
+ subject.set_options(:timeout => 314)
22
+ expect(subject.limit).to eq 314
23
+ end
24
+
25
+ it "can set the weight" do
26
+ subject.set_options(:weight => 27)
27
+ expect(subject.weight).to eq 27
28
+ end
29
+
30
+ it "can set the name" do
31
+ subject.set_options(:name => 'something')
32
+ expect(subject.name).to eq 'something'
33
+ end
34
+
35
+ it "fails on unhandled options" do
36
+ expect do
37
+ subject.set_options(:foo => 'bar')
38
+ end.to raise_error(ArgumentError, /Invalid aggregate options .*foo/)
39
+ end
40
+ end
41
+
42
+ describe "declaring chunks" do
43
+ it "requires that an chunk is given a block" do
44
+ expect { subject.chunk(:fail) }.to raise_error(ArgumentError, /requires a block/)
45
+ end
46
+
47
+ it "allows an chunk to have a list of requirements" do
48
+ subject.chunk(:data, :require => [:other]) { }
49
+ expect(subject.deps[:data]).to eq [:other]
50
+ end
51
+
52
+ it "converts a single chunk requirement to an array" do
53
+ subject.chunk(:data, :require => :other) { }
54
+ expect(subject.deps[:data]).to eq [:other]
55
+ end
56
+
57
+ it "raises an error when an unhandled option is passed" do
58
+ expect {
59
+ subject.chunk(:data, :before => [:other]) { }
60
+ }.to raise_error(ArgumentError, /Unexpected options.*#chunk: .*before/)
61
+ end
62
+ end
63
+
64
+ describe "handling interactions between chunks" do
65
+ it "generates a warning when there is a dependency cycle in chunks" do
66
+ subject.chunk(:first, :require => [:second]) { }
67
+ subject.chunk(:second, :require => [:first]) { }
68
+
69
+ Facter.expects(:warn) do |msg|
70
+ expect(msg).to match /dependency cycles: .*[:first, :second]/
71
+ end
72
+
73
+ subject.value
74
+ end
75
+
76
+ it "passes all requested chunk results to the depending chunk" do
77
+ subject.chunk(:first) { ['foo'] }
78
+ subject.chunk(:second, :require => [:first]) do |first|
79
+ [first[0] + ' bar']
80
+ end
81
+
82
+ output = subject.value
83
+ expect(output).to include 'foo'
84
+ expect(output).to include 'foo bar'
85
+ end
86
+
87
+ it "clones and freezes chunk results passed to other chunks" do
88
+ subject.chunk(:first) { 'foo' }
89
+ subject.chunk(:second, :require => [:first]) do |first|
90
+ expect(first).to be_frozen
91
+ end
92
+
93
+ subject.aggregate do |chunks|
94
+ chunks.values.each do |chunk|
95
+ expect(chunk).to be_frozen
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ describe "aggregating chunks" do
102
+ it "passes all chunk results as a hash to the aggregate block" do
103
+ subject.chunk(:data) { 'data chunk' }
104
+ subject.chunk(:datum) { 'datum chunk' }
105
+
106
+ subject.aggregate do |chunks|
107
+ expect(chunks).to eq(:data => 'data chunk', :datum => 'datum chunk')
108
+ end
109
+
110
+ subject.value
111
+ end
112
+
113
+ it "uses the result of the aggregate block as the value" do
114
+ subject.aggregate { "who needs chunks anyways" }
115
+ expect(subject.value).to eq "who needs chunks anyways"
116
+ end
117
+ end
118
+
119
+ describe "evaluating" do
120
+ it "evaluates the block in the context of the aggregate" do
121
+ subject.expects(:has_weight).with(5)
122
+ subject.evaluate { has_weight(5) }
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+ require 'facter/core/directed_graph'
3
+
4
+ describe Facter::Core::DirectedGraph do
5
+ subject(:graph) { described_class.new }
6
+
7
+ describe "detecting cycles" do
8
+ it "is acyclic if the graph is empty" do
9
+ expect(graph).to be_acyclic
10
+ end
11
+
12
+ it "is acyclic if the graph has no edges" do
13
+ graph[:one] = []
14
+ graph[:two] = []
15
+
16
+ expect(graph).to be_acyclic
17
+ end
18
+
19
+ it "is acyclic if a vertex has an edge to itself" do
20
+ graph[:one] = [:one]
21
+ expect(graph).to be_acyclic
22
+ end
23
+
24
+ it "is acyclic if there are no loops in the graph" do
25
+ graph[:one] = [:two, :three]
26
+ graph[:two] = [:four]
27
+ graph[:three] = [:four]
28
+ graph[:four] = []
29
+
30
+ expect(graph).to be_acyclic
31
+ end
32
+
33
+ it "is cyclic if there is a loop in the graph" do
34
+ graph[:one] = [:two]
35
+ graph[:two] = [:one]
36
+ expect(graph).to_not be_acyclic
37
+ end
38
+
39
+ it "can return the cycles in the graph" do
40
+ graph[:one] = [:two]
41
+ graph[:two] = [:one]
42
+
43
+ graph[:three] = [:four]
44
+ graph[:four] = [:three]
45
+
46
+ first_cycle = graph.cycles.find { |cycle| cycle.include? :one }
47
+ second_cycle = graph.cycles.find { |cycle| cycle.include? :three }
48
+
49
+ expect(first_cycle).to include :two
50
+ expect(second_cycle).to include :four
51
+ end
52
+ end
53
+
54
+ describe "sorting" do
55
+ it "returns the vertices in topologically sorted order" do
56
+ graph[:one] = [:two, :three]
57
+ graph[:two] = [:three]
58
+ graph[:three] = []
59
+ expect(graph.tsort).to eq [:three, :two, :one]
60
+ end
61
+
62
+ it "raises an error if there is a cycle in the graph" do
63
+ graph[:one] = [:two]
64
+ graph[:two] = [:one]
65
+
66
+ expect {
67
+ graph.tsort
68
+ }.to raise_error(Facter::Core::DirectedGraph::CycleError, /found the following cycles:/)
69
+ end
70
+
71
+ it "raises an error if there is an edge to a non-existent vertex" do
72
+ graph[:one] = [:two, :three]
73
+ graph[:two] = [:three]
74
+ expect {
75
+ graph.tsort
76
+ }.to raise_error(Facter::Core::DirectedGraph::MissingVertex, /missing elements.*three/)
77
+ end
78
+ end
79
+ end