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,15 @@
1
+ require 'spec_helper'
2
+
3
+ module FacterSpec::Cpuinfo
4
+ def cpuinfo_fixtures(filename)
5
+ fixtures('cpuinfo', filename)
6
+ end
7
+
8
+ def cpuinfo_fixture_read(filename)
9
+ File.read(cpuinfo_fixtures(filename))
10
+ end
11
+
12
+ def cpuinfo_fixture_readlines(filename)
13
+ cpuinfo_fixture_read(filename).split(/\n/)
14
+ end
15
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ module FacterSpec::WindowsNetwork
4
+
5
+ def settingId0
6
+ '{4AE6B55C-6DD6-427D-A5BB-13535D4BE926}'
7
+ end
8
+
9
+ def settingId1
10
+ '{38762816-7957-42AC-8DAA-3B08D0C857C7}'
11
+ end
12
+
13
+ def nic_bindings
14
+ ["\\Device\\#{settingId0}", "\\Device\\#{settingId1}" ]
15
+ end
16
+
17
+ def macAddress0
18
+ '23:24:df:12:12:00'
19
+ end
20
+
21
+ def macAddress1
22
+ '00:0C:29:0C:9E:9F'
23
+ end
24
+
25
+ def ipAddress0
26
+ '12.123.12.12'
27
+ end
28
+
29
+ def ipAddress1
30
+ '12.123.12.13'
31
+ end
32
+
33
+ def subnet0
34
+ '255.255.255.0'
35
+ end
36
+
37
+ def subnet1
38
+ '255.255.0.0'
39
+ end
40
+
41
+ def ipv6Address0
42
+ '2011:0:4137:9e76:2087:77a:53ef:7527'
43
+ end
44
+
45
+ def ipv6Address1
46
+ '2013:0:4137:9e76:2087:77a:53ef:7527'
47
+ end
48
+
49
+ def ipv6LinkLocal
50
+ 'fe80::2db2:5b42:4e30:b508'
51
+ end
52
+
53
+ def given_a_valid_windows_nic_with_ipv4_and_ipv6
54
+ stub('network0', :IPAddress => [ipAddress0, ipv6Address0], :SettingID => settingId0, :IPConnectionMetric => 10,:MACAddress => macAddress0,:IPSubnet => [subnet0, '48','2'])
55
+ end
56
+
57
+ def given_two_valid_windows_nics_with_ipv4_and_ipv6
58
+ {
59
+ :nic0 => given_a_valid_windows_nic_with_ipv4_and_ipv6,
60
+ :nic1 => stub('network1', :IPAddress => [ipAddress1, ipv6Address1], :SettingID => settingId1, :IPConnectionMetric => 10,:MACAddress => macAddress1,:IPSubnet => [subnet1, '48','2'])
61
+ }
62
+ end
63
+
64
+ end
@@ -0,0 +1,57 @@
1
+ require 'fileutils'
2
+ require 'tempfile'
3
+ require 'pathname'
4
+
5
+ # A support module for testing files.
6
+ module PuppetlabsSpec::Files
7
+ # This code exists only to support tests that run as root, pretty much.
8
+ # Once they have finally been eliminated this can all go... --daniel 2011-04-08
9
+ def self.in_tmp(path)
10
+ tempdir = Dir.tmpdir
11
+
12
+ Pathname.new(path).ascend do |dir|
13
+ return true if File.identical?(tempdir, dir)
14
+ end
15
+
16
+ false
17
+ end
18
+
19
+ def self.cleanup
20
+ $global_tempfiles ||= []
21
+ while path = $global_tempfiles.pop do
22
+ fail "Not deleting tmpfile #{path} outside regular tmpdir" unless in_tmp(path)
23
+
24
+ begin
25
+ FileUtils.rm_r path, :secure => true
26
+ rescue Errno::ENOENT
27
+ # nothing to do
28
+ end
29
+ end
30
+ end
31
+
32
+ def make_absolute(path)
33
+ path = File.expand_path(path)
34
+ path[0] = 'c' if Puppet.features.microsoft_windows?
35
+ path
36
+ end
37
+
38
+ def tmpfilename(name)
39
+ # Generate a temporary file, just for the name...
40
+ source = Tempfile.new(name)
41
+ path = source.path
42
+ source.close!
43
+
44
+ # ...record it for cleanup,
45
+ $global_tempfiles ||= []
46
+ $global_tempfiles << File.expand_path(path)
47
+
48
+ # ...and bam.
49
+ path
50
+ end
51
+
52
+ def tmpdir(name)
53
+ path = tmpfilename(name)
54
+ FileUtils.mkdir_p(path)
55
+ path
56
+ end
57
+ end
@@ -0,0 +1,49 @@
1
+ # This module provides some helper methods to assist with fixtures. It's
2
+ # methods are designed to help when you have a conforming fixture layout so we
3
+ # get project consistency.
4
+ module PuppetlabsSpec::Fixtures
5
+
6
+ # Returns the joined path of the global FIXTURE_DIR plus any path given to it
7
+ def fixtures(*rest)
8
+ File.join(PuppetlabsSpec::FIXTURE_DIR, *rest)
9
+ end
10
+
11
+ # Returns the path to your relative fixture dir. So if your spec test is
12
+ # <project>/spec/unit/facter/foo_spec.rb then your relative dir will be
13
+ # <project>/spec/fixture/unit/facter/foo
14
+ def my_fixture_dir
15
+ callers = caller
16
+ while line = callers.shift do
17
+ next unless found = line.match(%r{/spec/(.*)_spec\.rb:})
18
+ return fixtures(found[1])
19
+ end
20
+ fail "sorry, I couldn't work out your path from the caller stack!"
21
+ end
22
+
23
+ # Given a name, returns the full path of a file from your relative fixture
24
+ # dir as returned by my_fixture_dir.
25
+ def my_fixture(name)
26
+ file = File.join(my_fixture_dir, name)
27
+ unless File.readable? file then
28
+ fail "fixture '#{name}' for #{my_fixture_dir} is not readable"
29
+ end
30
+ return file
31
+ end
32
+
33
+ # Return the contents of the file using read when given a name. Uses
34
+ # my_fixture to work out the relative path.
35
+ def my_fixture_read(name)
36
+ File.read(my_fixture(name))
37
+ end
38
+
39
+ # Provides a block mechanism for iterating across the files in your fixture
40
+ # area.
41
+ def my_fixtures(glob = '*', flags = 0)
42
+ files = Dir.glob(File.join(my_fixture_dir, glob), flags)
43
+ unless files.length > 0 then
44
+ fail "fixture '#{glob}' for #{my_fixture_dir} had no files!"
45
+ end
46
+ block_given? and files.each do |file| yield file end
47
+ files
48
+ end
49
+ end
@@ -0,0 +1,87 @@
1
+ require 'stringio'
2
+
3
+ ########################################################################
4
+ # Backward compatibility for Jenkins outdated environment.
5
+ module RSpec
6
+ module Matchers
7
+ module BlockAliases
8
+ alias_method :to, :should unless method_defined? :to
9
+ alias_method :to_not, :should_not unless method_defined? :to_not
10
+ alias_method :not_to, :should_not unless method_defined? :not_to
11
+ end
12
+ end
13
+ end
14
+
15
+
16
+ ########################################################################
17
+ # Custom matchers...
18
+ RSpec::Matchers.define :have_matching_element do |expected|
19
+ match do |actual|
20
+ actual.any? { |item| item =~ expected }
21
+ end
22
+ end
23
+
24
+
25
+ RSpec::Matchers.define :exit_with do |expected|
26
+ actual = nil
27
+ match do |block|
28
+ begin
29
+ block.call
30
+ rescue SystemExit => e
31
+ actual = e.status
32
+ end
33
+ actual and actual == expected
34
+ end
35
+ failure_message_for_should do |block|
36
+ "expected exit with code #{expected} but " +
37
+ (actual.nil? ? " exit was not called" : "we exited with #{actual} instead")
38
+ end
39
+ failure_message_for_should_not do |block|
40
+ "expected that exit would not be called with #{expected}"
41
+ end
42
+ description do
43
+ "expect exit with #{expected}"
44
+ end
45
+ end
46
+
47
+
48
+ RSpec::Matchers.define :have_printed do |expected|
49
+ match do |block|
50
+ $stderr = $stdout = StringIO.new
51
+
52
+ begin
53
+ block.call
54
+ ensure
55
+ $stdout.rewind
56
+ @actual = $stdout.read
57
+
58
+ $stdout = STDOUT
59
+ $stderr = STDERR
60
+ end
61
+
62
+ if @actual then
63
+ case expected
64
+ when String
65
+ @actual.include? expected
66
+ when Regexp
67
+ expected.match @actual
68
+ else
69
+ raise ArgumentError, "No idea how to match a #{@actual.class.name}"
70
+ end
71
+ end
72
+ end
73
+
74
+ failure_message_for_should do |actual|
75
+ if actual.nil? then
76
+ "expected #{expected.inspect}, but nothing was printed"
77
+ else
78
+ "expected #{expected.inspect} to be printed; got:\n#{actual}"
79
+ end
80
+ end
81
+
82
+ description do
83
+ "expect #{expected.inspect} to be printed"
84
+ end
85
+
86
+ diffable
87
+ end
@@ -0,0 +1,9 @@
1
+ # Support code for running stuff with warnings disabled.
2
+ module Kernel
3
+ def with_verbose_disabled
4
+ verbose, $VERBOSE = $VERBOSE, nil
5
+ result = yield
6
+ $VERBOSE = verbose
7
+ return result
8
+ end
9
+ end
@@ -0,0 +1,26 @@
1
+ # Define the main module namespace for use by the helper modules
2
+ module PuppetlabsSpec
3
+ # FIXTURE_DIR represents the standard locations of all fixture data. Normally
4
+ # this represents <project>/spec/fixtures. This will be used by the fixtures
5
+ # library to find relative fixture data.
6
+ FIXTURE_DIR = File.join(dir = File.expand_path(File.dirname(__FILE__)), \
7
+ "fixtures") unless defined?(FIXTURE_DIR)
8
+ end
9
+
10
+ # Require all necessary helper libraries so they can be used later
11
+ require 'puppetlabs_spec/files'
12
+ require 'puppetlabs_spec/fixtures'
13
+ require 'puppetlabs_spec/matchers'
14
+ require 'puppetlabs_spec/verbose'
15
+
16
+ RSpec.configure do |config|
17
+ # Include PuppetlabsSpec helpers so they can be called at convenience
18
+ config.extend PuppetlabsSpec::Files
19
+ config.extend PuppetlabsSpec::Fixtures
20
+ config.include PuppetlabsSpec::Fixtures
21
+
22
+ # This will cleanup any files that were created with tmpdir or tmpfile
23
+ config.after :each do
24
+ PuppetlabsSpec::Files.cleanup
25
+ end
26
+ end
@@ -0,0 +1,55 @@
1
+ # Contexts for stubbing platforms
2
+ # In a describe or context block, adding :as_platform => :windows or
3
+ # :as_platform => :posix will stub the relevant facter config, as well as
4
+ # the behavior of Ruby's filesystem methods by changing File::ALT_SEPARATOR.
5
+ #
6
+ #
7
+ #
8
+ shared_context "windows", :as_platform => :windows do
9
+ before :each do
10
+ Facter.fact(:operatingsystem).stubs(:value).returns('Windows')
11
+ Facter::Util::Config.stubs(:is_windows?).returns true
12
+ end
13
+
14
+ around do |example|
15
+ file_alt_separator = File::ALT_SEPARATOR
16
+ file_path_separator = File::PATH_SEPARATOR
17
+ # prevent Ruby from warning about changing a constant
18
+ with_verbose_disabled do
19
+ File::ALT_SEPARATOR = '\\'
20
+ File::PATH_SEPARATOR = ';'
21
+ end
22
+ begin
23
+ example.run
24
+ ensure
25
+ with_verbose_disabled do
26
+ File::ALT_SEPARATOR = file_alt_separator
27
+ File::PATH_SEPARATOR = file_path_separator
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ shared_context "posix", :as_platform => :posix do
34
+ before :each do
35
+ Facter::Util::Config.stubs(:is_windows?).returns false
36
+ end
37
+
38
+ around do |example|
39
+ file_alt_separator = File::ALT_SEPARATOR
40
+ file_path_separator = File::PATH_SEPARATOR
41
+ # prevent Ruby from warning about changing a constant
42
+ with_verbose_disabled do
43
+ File::ALT_SEPARATOR = nil
44
+ File::PATH_SEPARATOR = ':'
45
+ end
46
+ begin
47
+ example.run
48
+ ensure
49
+ with_verbose_disabled do
50
+ File::ALT_SEPARATOR = file_alt_separator
51
+ File::PATH_SEPARATOR = file_path_separator
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.alias_it_should_behave_like_to :example_behavior_for, "parses"
3
+ end
@@ -0,0 +1,75 @@
1
+ require 'rubygems'
2
+ require 'mocha'
3
+ require 'rspec'
4
+ require 'facter'
5
+ require 'fileutils'
6
+ require 'puppetlabs_spec_helper'
7
+ require 'pathname'
8
+
9
+ # load shared_context within this project's spec directory
10
+ dir = File.expand_path(File.dirname(__FILE__))
11
+ $LOAD_PATH.unshift File.join(dir, 'lib')
12
+
13
+ Pathname.glob("#{dir}/shared_contexts/*.rb") do |file|
14
+ require file.relative_path_from(Pathname.new(dir))
15
+ end
16
+
17
+ module LogSpecOrder
18
+ # Log the spec order to a file, but only if the LOG_SPEC_ORDER environment
19
+ # variable is set. This could be enabled on Jenkins runs, as it can
20
+ # be used with Nick L.'s bisect script to help identify and debug
21
+ # order-dependent spec failures.
22
+ #
23
+ # jpartlow 2013-07-05: this was in puppet and I pulled it into facter because
24
+ # I was seeing similar ordering issues in the specs...and needed to bisect them :/
25
+ def self.log_spec_order
26
+ if ENV['LOG_SPEC_ORDER']
27
+ File.open("./spec_order.txt", "w") do |logfile|
28
+ RSpec.configuration.files_to_run.each { |f| logfile.puts f }
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ # Executing here rather than after :suite, so that we can get the order output
35
+ # even when the issue breaks rspec when specs are first loaded.
36
+ LogSpecOrder.log_spec_order
37
+
38
+ RSpec.configure do |config|
39
+ config.mock_with :mocha
40
+
41
+ if Facter::Util::Config.is_windows?
42
+ require 'win32console'
43
+ config.output_stream = $stdout
44
+ config.error_stream = $stderr
45
+ config.formatters.each { |f| f.instance_variable_set(:@output, $stdout) }
46
+ end
47
+
48
+ config.before :each do
49
+ # Ensure that we don't accidentally cache facts and environment
50
+ # between test cases.
51
+ Facter::Util::Loader.any_instance.stubs(:load_all)
52
+ Facter.clear
53
+ Facter.clear_messages
54
+
55
+ # Store any environment variables away to be restored later
56
+ @old_env = {}
57
+ ENV.each_key {|k| @old_env[k] = ENV[k]}
58
+ end
59
+
60
+ config.after :each do
61
+ # Restore environment variables after execution of each test
62
+ @old_env.each_pair {|k, v| ENV[k] = v}
63
+ to_remove = ENV.keys.reject {|key| @old_env.include? key }
64
+ to_remove.each {|key| ENV.delete key }
65
+ end
66
+ end
67
+
68
+ module FacterSpec
69
+ module ConfigHelper
70
+ def given_a_configuration_of(config)
71
+ Facter::Util::Config.stubs(:is_windows?).returns(config[:is_windows])
72
+ Facter::Util::Config.stubs(:external_facts_dir).returns(config[:external_facts_dir] || "data_dir")
73
+ end
74
+ end
75
+ end