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,84 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Facter::Util::Config do
6
+ include PuppetlabsSpec::Files
7
+
8
+ describe "is_windows? function" do
9
+ it "should detect windows if Ruby RbConfig::CONFIG['host_os'] returns a windows OS" do
10
+ host_os = ["mswin","win32","dos","mingw","cygwin"]
11
+ host_os.each do |h|
12
+ RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
13
+ Facter::Util::Config.is_windows?.should be_true
14
+ end
15
+ end
16
+
17
+ it "should not detect windows if Ruby RbConfig::CONFIG['host_os'] returns a non-windows OS" do
18
+ host_os = ["darwin","linux"]
19
+ host_os.each do |h|
20
+ RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
21
+ Facter::Util::Config.is_windows?.should be_false
22
+ end
23
+ end
24
+ end
25
+
26
+ describe "is_mac? function" do
27
+ it "should detect mac if Ruby RbConfig::CONFIG['host_os'] returns darwin" do
28
+ host_os = ["darwin"]
29
+ host_os.each do |h|
30
+ RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
31
+ Facter::Util::Config.is_mac?.should be_true
32
+ end
33
+ end
34
+ end
35
+
36
+ describe "external_facts_dirs" do
37
+ before :each do
38
+ Facter::Util::Root.stubs(:root?).returns(true)
39
+ end
40
+
41
+ it "should return the default value for linux" do
42
+ Facter::Util::Config.stubs(:is_windows?).returns(false)
43
+ Facter::Util::Config.stubs(:windows_data_dir).returns(nil)
44
+ Facter::Util::Config.setup_default_ext_facts_dirs
45
+ Facter::Util::Config.external_facts_dirs.should == ["/etc/facter/facts.d", "/etc/puppetlabs/facter/facts.d"]
46
+ end
47
+
48
+ it "should return the default value for windows 2008" do
49
+ Facter::Util::Config.stubs(:is_windows?).returns(true)
50
+ Facter::Util::Config.stubs(:windows_data_dir).returns("C:\\ProgramData")
51
+ Facter::Util::Config.setup_default_ext_facts_dirs
52
+ Facter::Util::Config.external_facts_dirs.should == [File.join("C:\\ProgramData", 'PuppetLabs', 'facter', 'facts.d')]
53
+ end
54
+
55
+ it "should return the default value for windows 2003R2" do
56
+ Facter::Util::Config.stubs(:is_windows?).returns(true)
57
+ Facter::Util::Config.stubs(:windows_data_dir).returns("C:\\Documents")
58
+ Facter::Util::Config.setup_default_ext_facts_dirs
59
+ Facter::Util::Config.external_facts_dirs.should == [File.join("C:\\Documents", 'PuppetLabs', 'facter', 'facts.d')]
60
+ end
61
+
62
+ it "returns the users home directory when not root" do
63
+ Facter::Util::Root.stubs(:root?).returns(false)
64
+ Facter::Util::Config.setup_default_ext_facts_dirs
65
+ Facter::Util::Config.external_facts_dirs.should == [File.expand_path(File.join("~", ".facter", "facts.d"))]
66
+ end
67
+
68
+ it "includes additional values when user appends to the list" do
69
+ Facter::Util::Config.setup_default_ext_facts_dirs
70
+ original_values = Facter::Util::Config.external_facts_dirs.dup
71
+ new_value = '/usr/share/newdir'
72
+ Facter::Util::Config.external_facts_dirs << new_value
73
+ Facter::Util::Config.external_facts_dirs.should == original_values + [new_value]
74
+ end
75
+
76
+ it "should only output new values when explicitly set" do
77
+ Facter::Util::Config.setup_default_ext_facts_dirs
78
+ new_value = ['/usr/share/newdir']
79
+ Facter::Util::Config.external_facts_dirs = new_value
80
+ Facter::Util::Config.external_facts_dirs.should == new_value
81
+ end
82
+
83
+ end
84
+ end
@@ -0,0 +1,148 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/confine'
5
+ require 'facter/util/values'
6
+
7
+ include Facter::Util::Values
8
+
9
+ describe Facter::Util::Confine do
10
+ it "should require a fact name" do
11
+ Facter::Util::Confine.new("yay", true).fact.should == "yay"
12
+ end
13
+
14
+ it "should accept a value specified individually" do
15
+ Facter::Util::Confine.new("yay", "test").values.should == ["test"]
16
+ end
17
+
18
+ it "should accept multiple values specified at once" do
19
+ Facter::Util::Confine.new("yay", "test", "other").values.should == ["test", "other"]
20
+ end
21
+
22
+ it "should fail if no fact name is provided" do
23
+ lambda { Facter::Util::Confine.new(nil, :test) }.should raise_error(ArgumentError)
24
+ end
25
+
26
+ it "should fail if no values were provided" do
27
+ lambda { Facter::Util::Confine.new("yay") }.should raise_error(ArgumentError)
28
+ end
29
+
30
+ it "should have a method for testing whether it matches" do
31
+ Facter::Util::Confine.new("yay", :test).should respond_to(:true?)
32
+ end
33
+
34
+ describe "when evaluating" do
35
+ def confined(fact_value, *confines)
36
+ @fact.stubs(:value).returns fact_value
37
+ Facter::Util::Confine.new("yay", *confines).true?
38
+ end
39
+
40
+ before do
41
+ @fact = mock 'fact'
42
+ Facter.stubs(:[]).returns @fact
43
+ end
44
+
45
+ it "should return false if the fact does not exist" do
46
+ Facter.expects(:[]).with("yay").returns nil
47
+
48
+ Facter::Util::Confine.new("yay", "test").true?.should be_false
49
+ end
50
+
51
+ it "should use the returned fact to get the value" do
52
+ Facter.expects(:[]).with("yay").returns @fact
53
+
54
+ @fact.expects(:value).returns nil
55
+
56
+ Facter::Util::Confine.new("yay", "test").true?
57
+ end
58
+
59
+ it "should return false if the fact has no value" do
60
+ confined(nil, "test").should be_false
61
+ end
62
+
63
+ it "should return true if any of the provided values matches the fact's value" do
64
+ confined("two", "two").should be_true
65
+ end
66
+
67
+ it "should return true if any of the provided symbol values matches the fact's value" do
68
+ confined(:xy, :xy).should be_true
69
+ end
70
+
71
+ it "should return true if any of the provided integer values matches the fact's value" do
72
+ confined(1, 1).should be_true
73
+ end
74
+
75
+ it "should return true if any of the provided boolan values matches the fact's value" do
76
+ confined(true, true).should be_true
77
+ end
78
+
79
+ it "should return true if any of the provided array values matches the fact's value" do
80
+ confined([3,4], [3,4]).should be_true
81
+ end
82
+
83
+ it "should return true if any of the provided symbol values matches the fact's string value" do
84
+ confined(:one, "one").should be_true
85
+ end
86
+
87
+ it "should return true if any of the provided string values matches case-insensitive the fact's value" do
88
+ confined("four", "Four").should be_true
89
+ end
90
+
91
+ it "should return true if any of the provided symbol values matches case-insensitive the fact's string value" do
92
+ confined(:four, "Four").should be_true
93
+ end
94
+
95
+ it "should return true if any of the provided symbol values matches the fact's string value" do
96
+ confined("xy", :xy).should be_true
97
+ end
98
+
99
+ it "should return true if any of the provided regexp values matches the fact's string value" do
100
+ confined("abc", /abc/).should be_true
101
+ end
102
+
103
+ it "should return true if any of the provided ranges matches the fact's value" do
104
+ confined(6, (5..7)).should be_true
105
+ end
106
+
107
+ it "should return false if none of the provided values matches the fact's value" do
108
+ confined("three", "two", "four").should be_false
109
+ end
110
+
111
+ it "should return false if none of the provided integer values matches the fact's value" do
112
+ confined(2, 1, [3,4], (5..7)).should be_false
113
+ end
114
+
115
+ it "should return false if none of the provided boolan values matches the fact's value" do
116
+ confined(false, true).should be_false
117
+ end
118
+
119
+ it "should return false if none of the provided array values matches the fact's value" do
120
+ confined([1,2], [3,4]).should be_false
121
+ end
122
+
123
+ it "should return false if none of the provided ranges matches the fact's value" do
124
+ confined(8, (5..7)).should be_false
125
+ end
126
+
127
+ it "should accept and evaluate a block argument against the fact" do
128
+ @fact.expects(:value).returns 'foo'
129
+ confine = Facter::Util::Confine.new :yay do |f| f === 'foo' end
130
+ confine.true?.should be_true
131
+ end
132
+
133
+ it "should return false if the block raises a StandardError when checking a fact" do
134
+ @fact.stubs(:value).returns 'foo'
135
+ confine = Facter::Util::Confine.new :yay do |f| raise StandardError end
136
+ confine.true?.should be_false
137
+ end
138
+
139
+ it "should accept and evaluate only a block argument" do
140
+ Facter::Util::Confine.new { true }.true?.should be_true
141
+ Facter::Util::Confine.new { false }.true?.should be_false
142
+ end
143
+
144
+ it "should return false if the block raises a StandardError" do
145
+ Facter::Util::Confine.new { raise StandardError }.true?.should be_false
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ require 'facter/util/directory_loader'
6
+
7
+ describe Facter::Util::DirectoryLoader do
8
+ include PuppetlabsSpec::Files
9
+ include FacterSpec::ConfigHelper
10
+
11
+ subject { Facter::Util::DirectoryLoader.new(tmpdir('directory_loader')) }
12
+ let(:collection) { Facter::Util::Collection.new(mock("internal loader"), subject) }
13
+
14
+ it "should make the directory available" do
15
+ subject.directory.should be_instance_of(String)
16
+ end
17
+
18
+ it "can be created with a given directory" do
19
+ Facter::Util::DirectoryLoader.loader_for("ext").directory.should == "ext"
20
+ end
21
+
22
+ it "raises an error when the directory does not exist" do
23
+ missing_dir = "missing"
24
+ File.stubs(:directory?).with(missing_dir).returns(false)
25
+ expect { Facter::Util::DirectoryLoader.loader_for(missing_dir) }.to raise_error Facter::Util::DirectoryLoader::NoSuchDirectoryError
26
+ end
27
+
28
+ it "should do nothing bad when dir doesn't exist" do
29
+ fakepath = "/foobar/path"
30
+ my_loader = Facter::Util::DirectoryLoader.new(fakepath)
31
+ FileTest.exists?(my_loader.directory).should be_false
32
+ expect { my_loader.load(collection) }.to_not raise_error
33
+ end
34
+
35
+ describe "when loading facts from disk" do
36
+ it "should be able to load files from disk and set facts" do
37
+ data = {"f1" => "one", "f2" => "two"}
38
+ write_to_file("data.yaml", YAML.dump(data))
39
+
40
+ subject.load(collection)
41
+
42
+ collection.value("f1").should == "one"
43
+ collection.value("f2").should == "two"
44
+ end
45
+
46
+ it "should ignore files that begin with '.'" do
47
+ not_to_be_used_collection = mock("collection should not be used")
48
+ not_to_be_used_collection.expects(:add).never
49
+
50
+ data = {"f1" => "one", "f2" => "two"}
51
+ write_to_file(".data.yaml", YAML.dump(data))
52
+
53
+ subject.load(not_to_be_used_collection)
54
+ end
55
+
56
+ %w{bak orig}.each do |ext|
57
+ it "should ignore files with an extension of '#{ext}'" do
58
+ Facter.expects(:warn).with(regexp_matches(/#{ext}/))
59
+ write_to_file("data" + ".#{ext}", "foo=bar")
60
+
61
+ subject.load(collection)
62
+ end
63
+ end
64
+
65
+ it "should warn when trying to parse unknown file types" do
66
+ write_to_file("file.unknownfiletype", "stuff=bar")
67
+
68
+ Facter.expects(:warn).with(regexp_matches(/file.unknownfiletype/))
69
+
70
+ subject.load(collection)
71
+ end
72
+
73
+ it "external facts should almost always precedence over all other facts" do
74
+ Facter.add("f1", :value => "lower_weight_fact") { has_weight(Facter::Util::DirectoryLoader::EXTERNAL_FACT_WEIGHT - 1) }
75
+ data = {"f1" => "external_fact"}
76
+ write_to_file("data.yaml", YAML.dump(data))
77
+
78
+ subject.load(collection)
79
+
80
+ collection.value("f1").should == "external_fact"
81
+ end
82
+ end
83
+
84
+ def write_to_file(file_name, to_write)
85
+ file = File.join(subject.directory, file_name)
86
+ File.open(file, "w") { |f| f.print to_write}
87
+ end
88
+ end
@@ -0,0 +1,180 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/ec2'
5
+
6
+ describe Facter::Util::EC2 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 "is_ec2_arp? method" do
12
+ describe "on linux" do
13
+ before :each do
14
+ # Return fake kernel
15
+ Facter.stubs(:value).with(:kernel).returns("linux")
16
+ end
17
+
18
+ it "should succeed if arp table contains fe:ff:ff:ff:ff:ff" do
19
+ ec2arp = my_fixture_read("linux-arp-ec2.out")
20
+ Facter::Core::Execution.expects(:exec).with("arp -an").\
21
+ at_least_once.returns(ec2arp)
22
+ Facter::Util::EC2.has_ec2_arp?.should == true
23
+ end
24
+
25
+ it "should succeed if arp table contains FE:FF:FF:FF:FF:FF" do
26
+ ec2arp = my_fixture_read("centos-arp-ec2.out")
27
+ Facter::Core::Execution.expects(:exec).with("arp -an").\
28
+ at_least_once.returns(ec2arp)
29
+ Facter::Util::EC2.has_ec2_arp?.should == true
30
+ end
31
+
32
+ it "should fail if arp table does not contain fe:ff:ff:ff:ff:ff" do
33
+ ec2arp = my_fixture_read("linux-arp-not-ec2.out")
34
+ Facter::Core::Execution.expects(:exec).with("arp -an").
35
+ at_least_once.returns(ec2arp)
36
+ Facter::Util::EC2.has_ec2_arp?.should == false
37
+ end
38
+ end
39
+
40
+ describe "on windows" do
41
+ before :each do
42
+ # Return fake kernel
43
+ Facter.stubs(:value).with(:kernel).returns("windows")
44
+ end
45
+
46
+ it "should succeed if arp table contains fe-ff-ff-ff-ff-ff" do
47
+ ec2arp = my_fixture_read("windows-2008-arp-a.out")
48
+ Facter::Core::Execution.expects(:exec).with("arp -a").\
49
+ at_least_once.returns(ec2arp)
50
+ Facter::Util::EC2.has_ec2_arp?.should == true
51
+ end
52
+
53
+ it "should fail if arp table does not contain fe-ff-ff-ff-ff-ff" do
54
+ ec2arp = my_fixture_read("windows-2008-arp-a-not-ec2.out")
55
+ Facter::Core::Execution.expects(:exec).with("arp -a").
56
+ at_least_once.returns(ec2arp)
57
+ Facter::Util::EC2.has_ec2_arp?.should == false
58
+ end
59
+ end
60
+
61
+ describe "on solaris" do
62
+ before :each do
63
+ Facter.stubs(:value).with(:kernel).returns("SunOS")
64
+ end
65
+
66
+ it "should fail if arp table does not contain fe:ff:ff:ff:ff:ff" do
67
+ ec2arp = my_fixture_read("solaris8_arp_a_not_ec2.out")
68
+
69
+ Facter::Core::Execution.expects(:exec).with("arp -a").
70
+ at_least_once.returns(ec2arp)
71
+
72
+ Facter::Util::EC2.has_ec2_arp?.should == false
73
+ end
74
+ end
75
+ end
76
+
77
+ describe "is_euca_mac? method" do
78
+ it "should return true when the mac is a eucalyptus one" do
79
+ Facter.expects(:value).with(:macaddress).\
80
+ at_least_once.returns("d0:0d:1a:b0:a1:00")
81
+
82
+ Facter::Util::EC2.has_euca_mac?.should == true
83
+ end
84
+
85
+ it "should return false when the mac is not a eucalyptus one" do
86
+ Facter.expects(:value).with(:macaddress).\
87
+ at_least_once.returns("0c:1d:a0:bc:aa:02")
88
+
89
+ Facter::Util::EC2.has_euca_mac?.should == false
90
+ end
91
+ end
92
+
93
+ describe "is_openstack_mac? method" do
94
+ it "should return true when the mac is an openstack one" do
95
+ Facter.expects(:value).with(:macaddress).\
96
+ at_least_once.returns("02:16:3e:54:89:fd")
97
+
98
+ Facter::Util::EC2.has_openstack_mac?.should == true
99
+ end
100
+
101
+ it "should return true when the mac is a newer openstack mac" do
102
+ # https://github.com/openstack/nova/commit/b684d651f540fc512ced58acd5ae2ef4d55a885c#nova/utils.py
103
+ Facter.expects(:value).with(:macaddress).\
104
+ at_least_once.returns("fa:16:3e:54:89:fd")
105
+
106
+ Facter::Util::EC2.has_openstack_mac?.should == true
107
+ end
108
+
109
+ it "should return true when the mac is a newer openstack mac and returned in upper case" do
110
+ # https://github.com/openstack/nova/commit/b684d651f540fc512ced58acd5ae2ef4d55a885c#nova/utils.py
111
+ Facter.expects(:value).with(:macaddress).\
112
+ at_least_once.returns("FA:16:3E:54:89:FD")
113
+
114
+ Facter::Util::EC2.has_openstack_mac?.should == true
115
+ end
116
+
117
+ it "should return false when the mac is not a openstack one" do
118
+ Facter.expects(:value).with(:macaddress).\
119
+ at_least_once.returns("0c:1d:a0:bc:aa:02")
120
+
121
+ Facter::Util::EC2.has_openstack_mac?.should == false
122
+ end
123
+ end
124
+
125
+ describe "can_connect? method" do
126
+ it "returns true if api responds" do
127
+ # Return something upon connecting to the root
128
+ Module.any_instance.expects(:open).with("#{api_prefix}:80/").
129
+ at_least_once.returns("2008-02-01\nlatest")
130
+
131
+ Facter::Util::EC2.can_connect?.should be_true
132
+ end
133
+
134
+ describe "when connection times out" do
135
+ it "should return false" do
136
+ # Emulate a timeout when connecting by throwing an exception
137
+ Module.any_instance.expects(:open).with("#{api_prefix}:80/").
138
+ at_least_once.raises(RuntimeError)
139
+
140
+ Facter::Util::EC2.can_connect?.should be_false
141
+ end
142
+ end
143
+
144
+ describe "when connection is refused" do
145
+ it "should return false" do
146
+ # Emulate a connection refused
147
+ Module.any_instance.expects(:open).with("#{api_prefix}:80/").
148
+ at_least_once.raises(Errno::ECONNREFUSED)
149
+
150
+ Facter::Util::EC2.can_connect?.should be_false
151
+ end
152
+ end
153
+ end
154
+
155
+ describe "Facter::Util::EC2.userdata" do
156
+ let :not_found_error do
157
+ OpenURI::HTTPError.new("404 Not Found", StringIO.new)
158
+ end
159
+
160
+ let :example_userdata do
161
+ "owner=jeff@puppetlabs.com\ngroup=platform_team"
162
+ end
163
+
164
+ it 'returns nil when no userdata is present' do
165
+ Facter::Util::EC2.stubs(:read_uri).raises(not_found_error)
166
+ Facter::Util::EC2.userdata.should be_nil
167
+ end
168
+
169
+ it "returns the string containing the body" do
170
+ Facter::Util::EC2.stubs(:read_uri).returns(example_userdata)
171
+ Facter::Util::EC2.userdata.should == example_userdata
172
+ end
173
+
174
+ it "uses the specified API version" do
175
+ expected_uri = "http://169.254.169.254/2008-02-01/user-data/"
176
+ Facter::Util::EC2.expects(:read_uri).with(expected_uri).returns(example_userdata)
177
+ Facter::Util::EC2.userdata('2008-02-01').should == example_userdata
178
+ end
179
+ end
180
+ end