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,119 @@
1
+ require 'spec_helper'
2
+ require 'facter/core/execution'
3
+
4
+ describe Facter::Core::Execution::Base do
5
+
6
+ describe "#with_env" do
7
+ it "should execute the caller's block with the specified env vars" do
8
+ test_env = { "LANG" => "C", "FOO" => "BAR" }
9
+ subject.with_env test_env do
10
+ test_env.keys.each do |key|
11
+ ENV[key].should == test_env[key]
12
+ end
13
+ end
14
+ end
15
+
16
+ it "should restore pre-existing environment variables to their previous values" do
17
+ orig_env = {}
18
+ new_env = {}
19
+ # an arbitrary sentinel value to use to temporarily set the environment vars to
20
+ sentinel_value = "Abracadabra"
21
+
22
+ # grab some values from the existing ENV (arbitrarily choosing 3 here)
23
+ ENV.keys.first(3).each do |key|
24
+ # save the original values so that we can test against them later
25
+ orig_env[key] = ENV[key]
26
+ # create bogus temp values for the chosen keys
27
+ new_env[key] = sentinel_value
28
+ end
29
+
30
+ # verify that, during the 'with_env', the new values are used
31
+ subject.with_env new_env do
32
+ orig_env.keys.each do |key|
33
+ ENV[key].should == new_env[key]
34
+ end
35
+ end
36
+
37
+ # verify that, after the 'with_env', the old values are restored
38
+ orig_env.keys.each do |key|
39
+ ENV[key].should == orig_env[key]
40
+ end
41
+ end
42
+
43
+ it "should not be affected by a 'return' statement in the yield block" do
44
+ @sentinel_var = :resolution_test_foo.to_s
45
+
46
+ # the intent of this test case is to test a yield block that contains a return statement. However, it's illegal
47
+ # to use a return statement outside of a method, so we need to create one here to give scope to the 'return'
48
+ def handy_method()
49
+ ENV[@sentinel_var] = "foo"
50
+ new_env = { @sentinel_var => "bar" }
51
+
52
+ subject.with_env new_env do
53
+ ENV[@sentinel_var].should == "bar"
54
+ return
55
+ end
56
+ end
57
+
58
+ handy_method()
59
+
60
+ ENV[@sentinel_var].should == "foo"
61
+
62
+ end
63
+ end
64
+
65
+ describe "#exec" do
66
+
67
+ it "switches LANG to C when executing the command" do
68
+ subject.expects(:with_env).with('LANG' => 'C')
69
+ subject.exec('foo')
70
+ end
71
+
72
+ it "switches LC_ALL to C when executing the command"
73
+
74
+ it "expands the command before running it" do
75
+ subject.stubs(:`).returns ''
76
+ subject.expects(:expand_command).with('foo').returns '/bin/foo'
77
+ subject.exec('foo')
78
+ end
79
+
80
+ it "returns an empty string when the command could not be expanded" do
81
+ subject.expects(:expand_command).with('foo').returns nil
82
+ expect(subject.exec('foo')).to be_empty
83
+ end
84
+
85
+ it "logs a warning and returns an empty string when the command execution fails" do
86
+ subject.expects(:`).with("/bin/foo").raises "kaboom!"
87
+ Facter.expects(:warn).with("kaboom!")
88
+
89
+ subject.expects(:expand_command).with('foo').returns '/bin/foo'
90
+
91
+ expect(subject.exec("foo")).to be_empty
92
+ end
93
+
94
+ it "launches a thread to wait on children if the command was interrupted" do
95
+ subject.expects(:`).with("/bin/foo").raises "kaboom!"
96
+ subject.expects(:expand_command).with('foo').returns '/bin/foo'
97
+
98
+ Facter.stubs(:warn)
99
+ Thread.expects(:new).yields
100
+ Process.expects(:waitall).once
101
+
102
+ subject.exec("foo")
103
+ end
104
+
105
+ it "returns the output of the command" do
106
+ subject.expects(:`).with("/bin/foo").returns 'hi'
107
+ subject.expects(:expand_command).with('foo').returns '/bin/foo'
108
+
109
+ expect(subject.exec("foo")).to eq 'hi'
110
+ end
111
+
112
+ it "strips off trailing newlines" do
113
+ subject.expects(:`).with("/bin/foo").returns "hi\n"
114
+ subject.expects(:expand_command).with('foo').returns '/bin/foo'
115
+
116
+ expect(subject.exec("foo")).to eq 'hi'
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ describe Facter::Core::Execution::Posix, :as_plaform => :posix do
4
+
5
+ describe "#search_paths" do
6
+ it "should use the PATH environment variable plus /sbin and /usr/sbin on unix" do
7
+ ENV.expects(:[]).with('PATH').returns "/bin:/usr/bin"
8
+ subject.search_paths.should == %w{/bin /usr/bin /sbin /usr/sbin}
9
+ end
10
+ end
11
+
12
+ describe "#which" do
13
+ before :each do
14
+ subject.stubs(:search_paths).returns [ '/bin', '/sbin', '/usr/sbin']
15
+ end
16
+
17
+ context "and provided with an absolute path" do
18
+ it "should return the binary if executable" do
19
+ File.expects(:executable?).with('/opt/foo').returns true
20
+ subject.which('/opt/foo').should == '/opt/foo'
21
+ end
22
+
23
+ it "should return nil if the binary is not executable" do
24
+ File.expects(:executable?).with('/opt/foo').returns false
25
+ subject.which('/opt/foo').should be_nil
26
+ end
27
+ end
28
+
29
+ context "and not provided with an absolute path" do
30
+ it "should return the absolute path if found" do
31
+ File.expects(:executable?).with('/bin/foo').returns false
32
+ File.expects(:executable?).with('/sbin/foo').returns true
33
+ File.expects(:executable?).with('/usr/sbin/foo').never
34
+ subject.which('foo').should == '/sbin/foo'
35
+ end
36
+
37
+ it "should return nil if not found" do
38
+ File.expects(:executable?).with('/bin/foo').returns false
39
+ File.expects(:executable?).with('/sbin/foo').returns false
40
+ File.expects(:executable?).with('/usr/sbin/foo').returns false
41
+ subject.which('foo').should be_nil
42
+ end
43
+ end
44
+ end
45
+
46
+ describe "#expand_command" do
47
+ it "should expand binary" do
48
+ subject.expects(:which).with('foo').returns '/bin/foo'
49
+ subject.expand_command('foo -a | stuff >> /dev/null').should == '/bin/foo -a | stuff >> /dev/null'
50
+ end
51
+
52
+ it "should expand double quoted binary" do
53
+ subject.expects(:which).with('/tmp/my foo').returns '/tmp/my foo'
54
+ subject.expand_command(%q{"/tmp/my foo" bar}).should == %q{'/tmp/my foo' bar}
55
+ end
56
+
57
+ it "should expand single quoted binary" do
58
+ subject.expects(:which).with('my foo').returns '/home/bob/my path/my foo'
59
+ subject.expand_command(%q{'my foo' -a}).should == %q{'/home/bob/my path/my foo' -a}
60
+ end
61
+
62
+ it "should quote expanded binary if found in path with spaces" do
63
+ subject.expects(:which).with('foo.sh').returns '/home/bob/my tools/foo.sh'
64
+ subject.expand_command('foo.sh /a /b').should == %q{'/home/bob/my tools/foo.sh' /a /b}
65
+ end
66
+
67
+ it "should return nil if not found" do
68
+ subject.expects(:which).with('foo').returns nil
69
+ subject.expand_command('foo -a | stuff >> /dev/null').should be_nil
70
+ end
71
+ end
72
+
73
+ describe "#absolute_path?" do
74
+ %w[/ /foo /foo/../bar //foo //Server/Foo/Bar //?/C:/foo/bar /\Server/Foo /foo//bar/baz].each do |path|
75
+ it "should return true for #{path}" do
76
+ subject.should be_absolute_path(path)
77
+ end
78
+ end
79
+
80
+ %w[. ./foo \foo C:/foo \\Server\Foo\Bar \\?\C:\foo\bar \/?/foo\bar \/Server/foo foo//bar/baz].each do |path|
81
+ it "should return false for #{path}" do
82
+ subject.should_not be_absolute_path(path)
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,106 @@
1
+ require 'spec_helper'
2
+
3
+ describe Facter::Core::Execution::Windows, :as_platform => :windows do
4
+
5
+ describe "#search_paths" do
6
+ it "should use the PATH environment variable to determine locations" do
7
+ ENV.expects(:[]).with('PATH').returns 'C:\Windows;C:\Windows\System32'
8
+ subject.search_paths.should == %w{C:\Windows C:\Windows\System32}
9
+ end
10
+ end
11
+
12
+ describe "#which" do
13
+ before :each do
14
+ subject.stubs(:search_paths).returns ['C:\Windows\system32', 'C:\Windows', 'C:\Windows\System32\Wbem' ]
15
+ ENV.stubs(:[]).with('PATHEXT').returns nil
16
+ end
17
+
18
+ context "and provided with an absolute path" do
19
+ it "should return the binary if executable" do
20
+ File.expects(:executable?).with('C:\Tools\foo.exe').returns true
21
+ File.expects(:executable?).with('\\\\remote\dir\foo.exe').returns true
22
+ subject.which('C:\Tools\foo.exe').should == 'C:\Tools\foo.exe'
23
+ subject.which('\\\\remote\dir\foo.exe').should == '\\\\remote\dir\foo.exe'
24
+ end
25
+
26
+ it "should return nil if the binary is not executable" do
27
+ File.expects(:executable?).with('C:\Tools\foo.exe').returns false
28
+ File.expects(:executable?).with('\\\\remote\dir\foo.exe').returns false
29
+ subject.which('C:\Tools\foo.exe').should be_nil
30
+ subject.which('\\\\remote\dir\foo.exe').should be_nil
31
+ end
32
+ end
33
+
34
+ context "and not provided with an absolute path" do
35
+ it "should return the absolute path if found" do
36
+ File.expects(:executable?).with('C:\Windows\system32\foo.exe').returns false
37
+ File.expects(:executable?).with('C:\Windows\foo.exe').returns true
38
+ File.expects(:executable?).with('C:\Windows\System32\Wbem\foo.exe').never
39
+ subject.which('foo.exe').should == 'C:\Windows\foo.exe'
40
+ end
41
+
42
+ it "should return the absolute path with file extension if found" do
43
+ ['.COM', '.EXE', '.BAT', '.CMD', '' ].each do |ext|
44
+ File.stubs(:executable?).with('C:\Windows\system32\foo'+ext).returns false
45
+ File.stubs(:executable?).with('C:\Windows\System32\Wbem\foo'+ext).returns false
46
+ end
47
+ ['.COM', '.BAT', '.CMD', '' ].each do |ext|
48
+ File.stubs(:executable?).with('C:\Windows\foo'+ext).returns false
49
+ end
50
+ File.stubs(:executable?).with('C:\Windows\foo.EXE').returns true
51
+
52
+ subject.which('foo').should == 'C:\Windows\foo.EXE'
53
+ end
54
+
55
+ it "should return nil if not found" do
56
+ File.expects(:executable?).with('C:\Windows\system32\foo.exe').returns false
57
+ File.expects(:executable?).with('C:\Windows\foo.exe').returns false
58
+ File.expects(:executable?).with('C:\Windows\System32\Wbem\foo.exe').returns false
59
+ subject.which('foo.exe').should be_nil
60
+ end
61
+ end
62
+ end
63
+
64
+ describe "#expand_command" do
65
+ it "should expand binary" do
66
+ subject.expects(:which).with('cmd').returns 'C:\Windows\System32\cmd'
67
+ subject.expand_command(
68
+ 'cmd /c echo foo > C:\bar'
69
+ ).should == 'C:\Windows\System32\cmd /c echo foo > C:\bar'
70
+ end
71
+
72
+ it "should expand double quoted binary" do
73
+ subject.expects(:which).with('my foo').returns 'C:\My Tools\my foo.exe'
74
+ subject.expand_command('"my foo" /a /b').should == '"C:\My Tools\my foo.exe" /a /b'
75
+ end
76
+
77
+ it "should not expand single quoted binary" do
78
+ subject.expects(:which).with('\'C:\My').returns nil
79
+ subject.expand_command('\'C:\My Tools\foo.exe\' /a /b').should be_nil
80
+ end
81
+
82
+ it "should quote expanded binary if found in path with spaces" do
83
+ subject.expects(:which).with('foo').returns 'C:\My Tools\foo.exe'
84
+ subject.expand_command('foo /a /b').should == '"C:\My Tools\foo.exe" /a /b'
85
+ end
86
+
87
+ it "should return nil if not found" do
88
+ subject.expects(:which).with('foo').returns nil
89
+ subject.expand_command('foo /a | stuff >> NUL').should be_nil
90
+ end
91
+ end
92
+
93
+ describe "#absolute_path?" do
94
+ %w[C:/foo C:\foo \\\\Server\Foo\Bar \\\\?\C:\foo\bar //Server/Foo/Bar //?/C:/foo/bar /\?\C:/foo\bar \/Server\Foo/Bar c:/foo//bar//baz].each do |path|
95
+ it "should return true for #{path}" do
96
+ subject.should be_absolute_path(path)
97
+ end
98
+ end
99
+
100
+ %w[/ . ./foo \foo /foo /foo/../bar //foo C:foo/bar foo//bar/baz].each do |path|
101
+ it "should return false for #{path}" do
102
+ subject.should_not be_absolute_path(path)
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+ require 'facter/core/execution'
3
+
4
+ describe Facter::Core::Execution do
5
+ subject { described_class}
6
+ let(:impl) { described_class.impl }
7
+
8
+ it "delegates #search_paths to the implementation" do
9
+ impl.expects(:search_paths)
10
+ subject.search_paths
11
+ end
12
+
13
+ it "delegates #which to the implementation" do
14
+ impl.expects(:which).with('waffles')
15
+ subject.which('waffles')
16
+ end
17
+
18
+ it "delegates #absolute_path? to the implementation" do
19
+ impl.expects(:absolute_path?).with('waffles', nil)
20
+ subject.absolute_path?('waffles')
21
+ end
22
+
23
+ it "delegates #absolute_path? with an optional platform to the implementation" do
24
+ impl.expects(:absolute_path?).with('waffles', :windows)
25
+ subject.absolute_path?('waffles', :windows)
26
+ end
27
+
28
+ it "delegates #expand_command to the implementation" do
29
+ impl.expects(:expand_command).with('waffles')
30
+ subject.expand_command('waffles')
31
+ end
32
+
33
+ it "delegates #exec to the implementation" do
34
+ impl.expects(:exec).with('waffles')
35
+ subject.exec('waffles')
36
+ end
37
+ end
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+ require 'facter/core/logging'
3
+
4
+ describe Facter::Core::Logging do
5
+
6
+ subject { described_class }
7
+
8
+ after(:all) do
9
+ subject.debugging(false)
10
+ subject.timing(false)
11
+ end
12
+
13
+ describe "emitting debug messages" do
14
+ it "doesn't log a message when debugging is disabled" do
15
+ subject.debugging(false)
16
+ subject.expects(:puts).never
17
+ subject.debug("foo")
18
+ end
19
+
20
+ describe "and debugging is enabled" do
21
+ before { subject.debugging(true) }
22
+ it "emits a warning when called with nil" do
23
+ subject.expects(:warn).with { |msg| expect(msg).to match /invalid message nil:NilClass/ }
24
+ subject.debug(nil)
25
+ end
26
+
27
+ it "emits a warning when called with an empty string" do
28
+ subject.expects(:warn).with { |msg| expect(msg).to match /invalid message "":String/ }
29
+ subject.debug("")
30
+ end
31
+
32
+ it "prints the message when logging is enabled" do
33
+ subject.expects(:puts).with { |msg| expect(msg).to match /foo/ }
34
+ subject.debug("foo")
35
+ end
36
+ end
37
+ end
38
+
39
+ describe "when warning" do
40
+ it "emits a warning when given a string" do
41
+ subject.debugging(true)
42
+ Kernel.expects(:warn).with('foo')
43
+ subject.warn('foo')
44
+ end
45
+
46
+ it "emits a warning regardless of log level" do
47
+ subject.debugging(false)
48
+ Kernel.expects(:warn).with "foo"
49
+ subject.warn "foo"
50
+ end
51
+
52
+ it "emits a warning if nil is passed" do
53
+ Kernel.expects(:warn).with { |msg| expect(msg).to match /invalid message nil:NilClass/ }
54
+ subject.warn(nil)
55
+ end
56
+
57
+ it "emits a warning if an empty string is passed" do
58
+ Kernel.expects(:warn).with { |msg| expect(msg).to match /invalid message "":String/ }
59
+ subject.warn('')
60
+ end
61
+ end
62
+
63
+ describe "when warning once" do
64
+ it "only logs a given warning string once" do
65
+ subject.expects(:warn).with('foo').once
66
+ subject.warnonce('foo')
67
+ subject.warnonce('foo')
68
+ end
69
+ end
70
+
71
+ describe "when setting the debugging mode" do
72
+ it "is enabled when the given value is true" do
73
+ subject.debugging(true)
74
+ expect(subject.debugging?).to be_true
75
+ end
76
+
77
+ it "is disabled when the given value is false" do
78
+ subject.debugging(false)
79
+ expect(subject.debugging?).to be_false
80
+ end
81
+
82
+ it "is disabled when the given value is nil" do
83
+ subject.debugging(nil)
84
+ expect(subject.debugging?).to be_false
85
+ end
86
+ end
87
+
88
+ describe "when setting the timing mode" do
89
+ it "is enabled when the given value is true" do
90
+ subject.timing(true)
91
+ expect(subject.timing?).to be_true
92
+ end
93
+
94
+ it "is disabled when the given value is false" do
95
+ subject.timing(false)
96
+ expect(subject.timing?).to be_false
97
+ end
98
+
99
+ it "is disabled when the given value is nil" do
100
+ subject.timing(nil)
101
+ expect(subject.timing?).to be_false
102
+ end
103
+ end
104
+ end