facter 2.1.0-x64-mingw32

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 (440) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +194 -0
  3. data/CONTRIBUTING.md +65 -0
  4. data/Gemfile +53 -0
  5. data/LICENSE +15 -0
  6. data/README.md +33 -0
  7. data/Rakefile +79 -0
  8. data/bin/facter +20 -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 +36 -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 +261 -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 +123 -0
  39. data/lib/facter/core/execution/base.rb +81 -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 +113 -0
  45. data/lib/facter/dhcp_servers.rb +39 -0
  46. data/lib/facter/domain.rb +99 -0
  47. data/lib/facter/ec2.rb +44 -0
  48. data/lib/facter/ec2/rest.rb +130 -0
  49. data/lib/facter/facterversion.rb +15 -0
  50. data/lib/facter/filesystems.rb +38 -0
  51. data/lib/facter/fqdn.rb +24 -0
  52. data/lib/facter/gce.rb +16 -0
  53. data/lib/facter/gce/metadata.rb +87 -0
  54. data/lib/facter/hardwareisa.rb +20 -0
  55. data/lib/facter/hardwaremodel.rb +67 -0
  56. data/lib/facter/hostname.rb +31 -0
  57. data/lib/facter/id.rb +21 -0
  58. data/lib/facter/interfaces.rb +46 -0
  59. data/lib/facter/ipaddress.rb +171 -0
  60. data/lib/facter/ipaddress6.rb +82 -0
  61. data/lib/facter/iphostnumber.rb +29 -0
  62. data/lib/facter/kernel.rb +22 -0
  63. data/lib/facter/kernelmajversion.rb +23 -0
  64. data/lib/facter/kernelrelease.rb +50 -0
  65. data/lib/facter/kernelversion.rb +22 -0
  66. data/lib/facter/ldom.rb +47 -0
  67. data/lib/facter/lsbdistcodename.rb +16 -0
  68. data/lib/facter/lsbdistdescription.rb +25 -0
  69. data/lib/facter/lsbdistid.rb +16 -0
  70. data/lib/facter/lsbdistrelease.rb +16 -0
  71. data/lib/facter/lsbmajdistrelease.rb +27 -0
  72. data/lib/facter/lsbrelease.rb +16 -0
  73. data/lib/facter/macaddress.rb +97 -0
  74. data/lib/facter/macosx.rb +56 -0
  75. data/lib/facter/manufacturer.rb +68 -0
  76. data/lib/facter/memory.rb +168 -0
  77. data/lib/facter/netmask.rb +42 -0
  78. data/lib/facter/network.rb +20 -0
  79. data/lib/facter/operatingsystem.rb +141 -0
  80. data/lib/facter/operatingsystemmajrelease.rb +47 -0
  81. data/lib/facter/operatingsystemrelease.rb +250 -0
  82. data/lib/facter/osfamily.rb +37 -0
  83. data/lib/facter/partitions.rb +35 -0
  84. data/lib/facter/path.rb +14 -0
  85. data/lib/facter/physicalprocessorcount.rb +91 -0
  86. data/lib/facter/processor.rb +168 -0
  87. data/lib/facter/ps.rb +30 -0
  88. data/lib/facter/puppetversion.rb +20 -0
  89. data/lib/facter/rubysitedir.rb +12 -0
  90. data/lib/facter/rubyversion.rb +12 -0
  91. data/lib/facter/selinux.rb +99 -0
  92. data/lib/facter/ssh.rb +72 -0
  93. data/lib/facter/timezone.rb +14 -0
  94. data/lib/facter/uniqueid.rb +4 -0
  95. data/lib/facter/uptime.rb +34 -0
  96. data/lib/facter/uptime_days.rb +15 -0
  97. data/lib/facter/uptime_hours.rb +15 -0
  98. data/lib/facter/uptime_seconds.rb +24 -0
  99. data/lib/facter/util/architecture.rb +19 -0
  100. data/lib/facter/util/collection.rb +161 -0
  101. data/lib/facter/util/composite_loader.rb +12 -0
  102. data/lib/facter/util/config.rb +63 -0
  103. data/lib/facter/util/confine.rb +66 -0
  104. data/lib/facter/util/dhcp_servers.rb +43 -0
  105. data/lib/facter/util/directory_loader.rb +83 -0
  106. data/lib/facter/util/ec2.rb +106 -0
  107. data/lib/facter/util/fact.rb +204 -0
  108. data/lib/facter/util/file_read.rb +37 -0
  109. data/lib/facter/util/formatter.rb +39 -0
  110. data/lib/facter/util/ip.rb +285 -0
  111. data/lib/facter/util/ip/windows.rb +215 -0
  112. data/lib/facter/util/loader.rb +155 -0
  113. data/lib/facter/util/macaddress.rb +43 -0
  114. data/lib/facter/util/macosx.rb +73 -0
  115. data/lib/facter/util/manufacturer.rb +99 -0
  116. data/lib/facter/util/memory.rb +228 -0
  117. data/lib/facter/util/netmask.rb +40 -0
  118. data/lib/facter/util/normalization.rb +94 -0
  119. data/lib/facter/util/nothing_loader.rb +12 -0
  120. data/lib/facter/util/operatingsystem.rb +21 -0
  121. data/lib/facter/util/parser.rb +158 -0
  122. data/lib/facter/util/partitions.rb +41 -0
  123. data/lib/facter/util/partitions/linux.rb +65 -0
  124. data/lib/facter/util/plist.rb +24 -0
  125. data/lib/facter/util/plist/generator.rb +228 -0
  126. data/lib/facter/util/plist/parser.rb +226 -0
  127. data/lib/facter/util/posix.rb +16 -0
  128. data/lib/facter/util/processor.rb +289 -0
  129. data/lib/facter/util/registry.rb +11 -0
  130. data/lib/facter/util/resolution.rb +160 -0
  131. data/lib/facter/util/solaris_zones.rb +158 -0
  132. data/lib/facter/util/unix_root.rb +5 -0
  133. data/lib/facter/util/uptime.rb +81 -0
  134. data/lib/facter/util/values.rb +109 -0
  135. data/lib/facter/util/virtual.rb +180 -0
  136. data/lib/facter/util/vlans.rb +21 -0
  137. data/lib/facter/util/windows_root.rb +7 -0
  138. data/lib/facter/util/wmi.rb +16 -0
  139. data/lib/facter/util/xendomains.rb +10 -0
  140. data/lib/facter/version.rb +86 -0
  141. data/lib/facter/virtual.rb +311 -0
  142. data/lib/facter/vlans.rb +17 -0
  143. data/lib/facter/xendomains.rb +20 -0
  144. data/lib/facter/zfs_version.rb +10 -0
  145. data/lib/facter/zonename.rb +6 -0
  146. data/lib/facter/zones.rb +17 -0
  147. data/lib/facter/zpool_version.rb +10 -0
  148. data/spec/fixtures/cpuinfo/amd64dual +57 -0
  149. data/spec/fixtures/cpuinfo/amd64quad +79 -0
  150. data/spec/fixtures/cpuinfo/amd64solo +23 -0
  151. data/spec/fixtures/cpuinfo/amd64tri +86 -0
  152. data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
  153. data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
  154. data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
  155. data/spec/fixtures/cpuinfo/panda-armel +17 -0
  156. data/spec/fixtures/cpuinfo/ppc64 +19 -0
  157. data/spec/fixtures/cpuinfo/sparc +10 -0
  158. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
  159. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
  160. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
  161. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
  162. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
  163. data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
  164. data/spec/fixtures/hpux/sched.models +174 -0
  165. data/spec/fixtures/hpux/unistd.h +1534 -0
  166. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
  167. data/spec/fixtures/ifconfig/centos_5_5 +17 -0
  168. data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
  169. data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
  170. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
  171. data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
  172. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
  173. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
  174. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
  175. data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
  176. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
  177. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
  178. data/spec/fixtures/ifconfig/fedora_10 +36 -0
  179. data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
  180. data/spec/fixtures/ifconfig/fedora_13 +18 -0
  181. data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
  182. data/spec/fixtures/ifconfig/fedora_8 +38 -0
  183. data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
  184. data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
  185. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
  186. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
  187. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
  188. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
  189. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
  190. data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
  191. data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
  192. data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
  193. data/spec/fixtures/ifconfig/openbsd_bridge_rules +11 -0
  194. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
  195. data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
  196. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
  197. data/spec/fixtures/ldom/ldom_v1 +6 -0
  198. data/spec/fixtures/netstat/centos_5_5 +5 -0
  199. data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
  200. data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
  201. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
  202. data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
  203. data/spec/fixtures/netstat/fedora_10 +7 -0
  204. data/spec/fixtures/netstat/open_solaris_10 +16 -0
  205. data/spec/fixtures/netstat/open_solaris_b132 +17 -0
  206. data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
  207. data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
  208. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
  209. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
  210. data/spec/fixtures/unit/dhcp_servers/nmcli_devices +4 -0
  211. data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +4 -0
  212. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +36 -0
  213. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +24 -0
  214. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +49 -0
  215. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +37 -0
  216. data/spec/fixtures/unit/dhcp_servers/route +3 -0
  217. data/spec/fixtures/unit/dhcp_servers/route_nogw +1 -0
  218. data/spec/fixtures/unit/ec2/rest/meta-data/root +20 -0
  219. data/spec/fixtures/unit/filesystems/linux +28 -0
  220. data/spec/fixtures/unit/gce/metadata/metadata.json +69 -0
  221. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
  222. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
  223. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
  224. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
  225. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
  226. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
  227. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
  228. data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +2 -0
  229. data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +3 -0
  230. data/spec/fixtures/unit/memory/aix-svmon +9 -0
  231. data/spec/fixtures/unit/memory/aix-swap_l +2 -0
  232. data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +3 -0
  233. data/spec/fixtures/unit/memory/darwin-swapinfo-single +2 -0
  234. data/spec/fixtures/unit/memory/darwin-vm_stat +13 -0
  235. data/spec/fixtures/unit/memory/dragonfly-vmstat +3 -0
  236. data/spec/fixtures/unit/memory/freebsd-vmstat +3 -0
  237. data/spec/fixtures/unit/memory/linux-proc_meminfo +10 -0
  238. data/spec/fixtures/unit/memory/openbsd-vmstat +3 -0
  239. data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +2 -0
  240. data/spec/fixtures/unit/memory/solaris-prtconf +4 -0
  241. data/spec/fixtures/unit/memory/solaris-swap_l-multiple +3 -0
  242. data/spec/fixtures/unit/memory/solaris-swap_l-single +2 -0
  243. data/spec/fixtures/unit/memory/solaris-vmstat +3 -0
  244. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
  245. data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +3 -0
  246. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
  247. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
  248. data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
  249. data/spec/fixtures/unit/util/dhcp_servers/route +3 -0
  250. data/spec/fixtures/unit/util/dhcp_servers/route_nogw +1 -0
  251. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
  252. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
  253. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
  254. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
  255. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
  256. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
  257. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
  258. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
  259. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
  260. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
  261. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
  262. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
  263. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
  264. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
  265. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
  266. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
  267. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
  268. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
  269. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
  270. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
  271. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
  272. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
  273. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
  274. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
  275. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
  276. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
  277. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
  278. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
  279. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
  280. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
  281. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
  282. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
  283. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
  284. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
  285. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
  286. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
  287. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
  288. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
  289. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
  290. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
  291. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
  292. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
  293. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
  294. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
  295. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
  296. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
  297. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
  298. data/spec/fixtures/unit/util/manufacturer/smartos_smbios +533 -0
  299. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
  300. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
  301. data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +8 -0
  302. data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +12 -0
  303. data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +7 -0
  304. data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +9 -0
  305. data/spec/fixtures/unit/util/partitions/partitions/mount +9 -0
  306. data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
  307. data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
  308. data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
  309. data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
  310. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
  311. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
  312. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
  313. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  314. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  315. data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +2 -0
  316. data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
  317. data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
  318. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  319. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
  320. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
  321. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
  322. data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
  323. data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
  324. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
  325. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
  326. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
  327. data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
  328. data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
  329. data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +9 -0
  330. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +8 -0
  331. data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +9 -0
  332. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
  333. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
  334. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
  335. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
  336. data/spec/integration/facter_spec.rb +39 -0
  337. data/spec/lib/facter_spec/cpuinfo.rb +15 -0
  338. data/spec/lib/facter_spec/windows_network.rb +64 -0
  339. data/spec/puppetlabs_spec/files.rb +57 -0
  340. data/spec/puppetlabs_spec/fixtures.rb +49 -0
  341. data/spec/puppetlabs_spec/matchers.rb +87 -0
  342. data/spec/puppetlabs_spec/verbose.rb +9 -0
  343. data/spec/puppetlabs_spec_helper.rb +26 -0
  344. data/spec/shared_contexts/platform.rb +55 -0
  345. data/spec/shared_formats/parses.rb +3 -0
  346. data/spec/spec_helper.rb +75 -0
  347. data/spec/unit/application_spec.rb +101 -0
  348. data/spec/unit/architecture_spec.rb +63 -0
  349. data/spec/unit/blockdevices_spec.rb +109 -0
  350. data/spec/unit/core/aggregate_spec.rb +125 -0
  351. data/spec/unit/core/directed_graph_spec.rb +79 -0
  352. data/spec/unit/core/execution/base_spec.rb +130 -0
  353. data/spec/unit/core/execution/posix_spec.rb +86 -0
  354. data/spec/unit/core/execution/windows_spec.rb +106 -0
  355. data/spec/unit/core/execution_spec.rb +42 -0
  356. data/spec/unit/core/logging_spec.rb +104 -0
  357. data/spec/unit/core/resolvable_spec.rb +81 -0
  358. data/spec/unit/core/suitable_spec.rb +106 -0
  359. data/spec/unit/dhcp_servers_spec.rb +152 -0
  360. data/spec/unit/domain_spec.rb +310 -0
  361. data/spec/unit/ec2/rest_spec.rb +145 -0
  362. data/spec/unit/ec2_spec.rb +127 -0
  363. data/spec/unit/facter_spec.rb +108 -0
  364. data/spec/unit/filesystems_spec.rb +50 -0
  365. data/spec/unit/fqdn_spec.rb +16 -0
  366. data/spec/unit/gce/metadata_spec.rb +49 -0
  367. data/spec/unit/gce_spec.rb +34 -0
  368. data/spec/unit/hardwareisa_spec.rb +41 -0
  369. data/spec/unit/hardwaremodel_spec.rb +56 -0
  370. data/spec/unit/hostname_spec.rb +40 -0
  371. data/spec/unit/id_spec.rb +29 -0
  372. data/spec/unit/interfaces_spec.rb +57 -0
  373. data/spec/unit/ipaddress6_spec.rb +161 -0
  374. data/spec/unit/ipaddress_spec.rb +114 -0
  375. data/spec/unit/kernel_spec.rb +24 -0
  376. data/spec/unit/kernelmajversion_spec.rb +22 -0
  377. data/spec/unit/kernelrelease_spec.rb +69 -0
  378. data/spec/unit/kernelversion_spec.rb +32 -0
  379. data/spec/unit/ldom_spec.rb +75 -0
  380. data/spec/unit/lsbdistcodename_spec.rb +25 -0
  381. data/spec/unit/lsbdistdescription_spec.rb +25 -0
  382. data/spec/unit/lsbdistid_spec.rb +25 -0
  383. data/spec/unit/lsbdistrelease_spec.rb +25 -0
  384. data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
  385. data/spec/unit/lsbrelease_spec.rb +25 -0
  386. data/spec/unit/macaddress_spec.rb +73 -0
  387. data/spec/unit/manufacturer_spec.rb +115 -0
  388. data/spec/unit/memory_spec.rb +470 -0
  389. data/spec/unit/netmask_spec.rb +106 -0
  390. data/spec/unit/operatingsystem_spec.rb +160 -0
  391. data/spec/unit/operatingsystemmajrelease_spec.rb +38 -0
  392. data/spec/unit/operatingsystemrelease_spec.rb +236 -0
  393. data/spec/unit/osfamily_spec.rb +62 -0
  394. data/spec/unit/partitions_spec.rb +48 -0
  395. data/spec/unit/physicalprocessorcount_spec.rb +85 -0
  396. data/spec/unit/processor_spec.rb +401 -0
  397. data/spec/unit/ps_spec.rb +42 -0
  398. data/spec/unit/selinux_spec.rb +114 -0
  399. data/spec/unit/ssh_spec.rb +77 -0
  400. data/spec/unit/uniqueid_spec.rb +27 -0
  401. data/spec/unit/uptime_spec.rb +110 -0
  402. data/spec/unit/util/collection_spec.rb +258 -0
  403. data/spec/unit/util/config_spec.rb +97 -0
  404. data/spec/unit/util/confine_spec.rb +148 -0
  405. data/spec/unit/util/dhcp_servers_spec.rb +63 -0
  406. data/spec/unit/util/directory_loader_spec.rb +88 -0
  407. data/spec/unit/util/ec2_spec.rb +184 -0
  408. data/spec/unit/util/fact_spec.rb +142 -0
  409. data/spec/unit/util/file_read_spec.rb +29 -0
  410. data/spec/unit/util/formatter_spec.rb +50 -0
  411. data/spec/unit/util/ip/windows_spec.rb +80 -0
  412. data/spec/unit/util/ip_spec.rb +467 -0
  413. data/spec/unit/util/loader_spec.rb +286 -0
  414. data/spec/unit/util/macaddress_spec.rb +141 -0
  415. data/spec/unit/util/macosx_spec.rb +114 -0
  416. data/spec/unit/util/manufacturer_spec.rb +223 -0
  417. data/spec/unit/util/normalization_spec.rb +113 -0
  418. data/spec/unit/util/operatingsystem_spec.rb +92 -0
  419. data/spec/unit/util/parser_spec.rb +200 -0
  420. data/spec/unit/util/partitions/partitions_spec.rb +67 -0
  421. data/spec/unit/util/partitions_spec.rb +19 -0
  422. data/spec/unit/util/posix_spec.rb +11 -0
  423. data/spec/unit/util/processor_spec.rb +92 -0
  424. data/spec/unit/util/registry_spec.rb +76 -0
  425. data/spec/unit/util/resolution_spec.rb +129 -0
  426. data/spec/unit/util/solaris_zones_spec.rb +127 -0
  427. data/spec/unit/util/uptime_spec.rb +126 -0
  428. data/spec/unit/util/values_spec.rb +171 -0
  429. data/spec/unit/util/virtual_spec.rb +364 -0
  430. data/spec/unit/util/vlans_spec.rb +42 -0
  431. data/spec/unit/util/wmi_spec.rb +19 -0
  432. data/spec/unit/util/xendomains_spec.rb +21 -0
  433. data/spec/unit/version_spec.rb +42 -0
  434. data/spec/unit/virtual_spec.rb +519 -0
  435. data/spec/unit/zfs_version_spec.rb +75 -0
  436. data/spec/unit/zonename_spec.rb +14 -0
  437. data/spec/unit/zones_spec.rb +55 -0
  438. data/spec/unit/zpool_version_spec.rb +75 -0
  439. data/spec/watchr.rb +125 -0
  440. metadata +815 -0
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+ require 'facter'
3
+ require 'facter/util/partitions/linux'
4
+
5
+ describe 'Facter::Util::Partitions::Linux' do
6
+ describe 'on Linux OS' do
7
+ before :each do
8
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
9
+
10
+ File.stubs(:exist?).with('/sys/block/').returns(true)
11
+ File.stubs(:exist?).with("/sys/block/./device").returns(false)
12
+ File.stubs(:exist?).with("/sys/block/../device").returns(false)
13
+ File.stubs(:exist?).with('/dev/disk/by-uuid/').returns(true)
14
+
15
+ devices = [".", "..", "sda", "sdb", "sdc"]
16
+ Dir.stubs(:entries).with('/sys/block/').returns(devices)
17
+
18
+ Facter::Core::Execution.stubs(:which).with('mount').returns(true)
19
+ Facter::Core::Execution.stubs(:which).with('blkid').returns(true)
20
+
21
+ test_parts = {
22
+ 'sda1' => '13459663-22cc-47b4-a9e6-21dea9906e03',
23
+ 'sdb2' => '98043570-eb10-457f-9718-0b85a26e66bf',
24
+ 'sdc3' => 'a35fb506-e831-4752-9899-dff6c601214b',
25
+ }
26
+
27
+ Dir.stubs(:entries).with('/dev/disk/by-uuid/').returns(test_parts.values)
28
+ test_parts.each do |part,uuid|
29
+ device = part.match(/(\D+)/)[1]
30
+ File.stubs(:exist?).with("/sys/block/#{device}/device").returns(true)
31
+ File.stubs(:symlink?).with("/dev/disk/by-uuid/#{uuid}").returns(true)
32
+ File.stubs(:readlink).with("/dev/disk/by-uuid/#{uuid}").returns("/dev/#{part}")
33
+ Dir.stubs(:glob).with("/sys/block/#{device}/#{device}*").returns(["/sys/block/#{device}/#{part}"])
34
+ Facter::Util::Partitions::Linux.stubs(:read_size).returns('12345')
35
+ Facter::Core::Execution.stubs(:exec).with("blkid /dev/#{part}").returns("/dev/#{part}: UUID=\"#{uuid}\" TYPE=\"ext4\"")
36
+ end
37
+
38
+ Facter::Core::Execution.stubs(:exec).with('mount').returns(my_fixture_read("mount"))
39
+ end
40
+
41
+ it '.list should return a list of partitions' do
42
+ Facter::Util::Partitions::Linux.list.should == ['sda1', 'sdb2', 'sdc3']
43
+ end
44
+
45
+ it '.uuid should return a string containing the uuid' do
46
+ Facter::Util::Partitions::Linux.uuid('sda1').should == '13459663-22cc-47b4-a9e6-21dea9906e03'
47
+ Facter::Util::Partitions::Linux.uuid('sdb2').should == '98043570-eb10-457f-9718-0b85a26e66bf'
48
+ Facter::Util::Partitions::Linux.uuid('sdc3').should == 'a35fb506-e831-4752-9899-dff6c601214b'
49
+ end
50
+
51
+ it '.size should return a string containing the size' do
52
+ Facter::Util::Partitions::Linux.size('sda1').should == '12345'
53
+ end
54
+
55
+ it '.mount should return a string containing the mount point of the partition' do
56
+ Facter::Util::Partitions::Linux.mount('sda1').should == '/home'
57
+ Facter::Util::Partitions::Linux.mount('sdb2').should == '/'
58
+ Facter::Util::Partitions::Linux.mount('sdc3').should == '/var'
59
+ end
60
+
61
+ it '.filesystem should return a string containing the filesystem on the partition' do
62
+ Facter::Util::Partitions::Linux.filesystem('sda1').should == 'ext4'
63
+ Facter::Util::Partitions::Linux.filesystem('sdb2').should == 'ext4'
64
+ Facter::Util::Partitions::Linux.filesystem('sdc3').should == 'ext4'
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+ require 'facter'
3
+ require 'facter/util/partitions'
4
+
5
+ describe 'Facter::Util::Partitions' do
6
+ describe 'on unsupported OSs' do
7
+ before :each do
8
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
9
+ end
10
+
11
+ it 'list should return empty array' do
12
+ Facter::Util::Partitions.list.should == []
13
+ end
14
+
15
+ it 'available? should return false' do
16
+ Facter::Util::Partitions.available?.should == false
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+ require 'facter/util/posix'
3
+
4
+ describe Facter::Util::POSIX do
5
+ describe "retrieving values via sysctl" do
6
+ it "returns the result of the sysctl command" do
7
+ Facter::Util::Resolution.expects(:exec).with("sysctl -n hw.pagesize 2>/dev/null").returns("somevalue")
8
+ expect(described_class.sysctl("hw.pagesize")).to eq "somevalue"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,92 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/processor'
5
+ require 'facter_spec/cpuinfo'
6
+
7
+ describe Facter::Util::Processor do
8
+ describe "on linux" do
9
+ include FacterSpec::Cpuinfo
10
+
11
+ before :each do
12
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
13
+ File.stubs(:exists?).with("/proc/cpuinfo").returns(true)
14
+ end
15
+
16
+ describe "with architecture amd64" do
17
+ before :each do
18
+ Facter.fact(:architecture).stubs(:value).returns("amd64")
19
+ end
20
+
21
+ it "should get the processor description from the amd64solo fixture" do
22
+ File.stubs(:readlines).with("/proc/cpuinfo").returns(cpuinfo_fixture_readlines("amd64solo"))
23
+ Facter::Util::Processor.enum_cpuinfo[0].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
24
+ end
25
+
26
+ it "should get the processor descriptions from the amd64dual fixture" do
27
+ File.stubs(:readlines).with("/proc/cpuinfo").returns(cpuinfo_fixture_readlines("amd64dual"))
28
+
29
+ Facter::Util::Processor.enum_cpuinfo[0].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
30
+ Facter::Util::Processor.enum_cpuinfo[1].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
31
+ end
32
+
33
+ it "should get the processor descriptions from the amd64tri fixture" do
34
+ File.stubs(:readlines).with("/proc/cpuinfo").returns(cpuinfo_fixture_readlines("amd64tri"))
35
+
36
+ Facter::Util::Processor.enum_cpuinfo[0].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
37
+ Facter::Util::Processor.enum_cpuinfo[1].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
38
+ Facter::Util::Processor.enum_cpuinfo[2].should == "Intel(R) Core(TM)2 Duo CPU P8700 @ 2.53GHz"
39
+ end
40
+
41
+ it "should get the processor descriptions from the amd64quad fixture" do
42
+ File.stubs(:readlines).with("/proc/cpuinfo").returns(cpuinfo_fixture_readlines("amd64quad"))
43
+
44
+ Facter::Util::Processor.enum_cpuinfo[0].should == "Quad-Core AMD Opteron(tm) Processor 2374 HE"
45
+ Facter::Util::Processor.enum_cpuinfo[1].should == "Quad-Core AMD Opteron(tm) Processor 2374 HE"
46
+ Facter::Util::Processor.enum_cpuinfo[2].should == "Quad-Core AMD Opteron(tm) Processor 2374 HE"
47
+ Facter::Util::Processor.enum_cpuinfo[3].should == "Quad-Core AMD Opteron(tm) Processor 2374 HE"
48
+ end
49
+ end
50
+
51
+ describe "with architecture x86" do
52
+ before :each do
53
+ Facter.fact(:architecture).stubs(:value).returns("x86")
54
+ File.stubs(:readlines).with("/proc/cpuinfo").returns(my_fixture_read("x86-pentium2").lines)
55
+ end
56
+
57
+ subject { Facter::Util::Processor.enum_cpuinfo }
58
+
59
+ it "should have the correct processor titles" do
60
+ subject[0].should == "Pentium II (Deschutes)"
61
+ subject[1].should == "Pentium II (Deschutes)"
62
+ end
63
+ end
64
+ end
65
+
66
+ describe "on Solaris" do
67
+ before :each do
68
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
69
+ end
70
+
71
+ it "should get the processor description on Solaris (x86)" do
72
+ Facter.fact(:architecture).stubs(:value).returns("i86pc")
73
+ Facter::Core::Execution.stubs(:exec).with("/usr/bin/kstat cpu_info").returns(my_fixture_read("solaris-i86pc"))
74
+
75
+ Facter::Util::Processor.enum_kstat[0].should == "Intel(r) Core(tm) i5 CPU M 450 @ 2.40GHz"
76
+ end
77
+
78
+ it "should get the processor description on Solaris (SPARC64)" do
79
+ Facter.fact(:architecture).stubs(:value).returns("sun4u")
80
+ Facter::Core::Execution.stubs(:exec).with("/usr/bin/kstat cpu_info").returns(my_fixture_read("solaris-sun4u"))
81
+
82
+ Facter::Util::Processor.enum_kstat[0].should == "SPARC64-VII"
83
+ Facter::Util::Processor.enum_kstat[1].should == "SPARC64-VII"
84
+ Facter::Util::Processor.enum_kstat[2].should == "SPARC64-VII"
85
+ Facter::Util::Processor.enum_kstat[3].should == "SPARC64-VII"
86
+ Facter::Util::Processor.enum_kstat[4].should == "SPARC64-VII"
87
+ Facter::Util::Processor.enum_kstat[5].should == "SPARC64-VII"
88
+ Facter::Util::Processor.enum_kstat[6].should == "SPARC64-VII"
89
+ Facter::Util::Processor.enum_kstat[7].should == "SPARC64-VII"
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,76 @@
1
+ #! /usr/bin/env ruby
2
+ require 'spec_helper'
3
+ require 'facter/operatingsystem'
4
+ require 'facter/util/registry'
5
+
6
+ describe Facter::Util::Registry do
7
+ describe "hklm_read", :if => Facter::Util::Config.is_windows? do
8
+ before(:all) do
9
+ require 'win32/registry'
10
+ end
11
+ describe "valid params" do
12
+ [ {:key => "valid_key", :value => "valid_value", :expected => "valid"},
13
+ {:key => "valid_key", :value => "", :expected => "valid"},
14
+ {:key => "valid_key", :value => nil, :expected => "invalid"},
15
+ {:key => "", :value => "valid_value", :expected => "valid"},
16
+ {:key => "", :value => "", :expected => "valid"},
17
+ {:key => "", :value => nil, :expected => "invalid"},
18
+ {:key => nil, :value => "valid_value", :expected => "invalid"},
19
+ {:key => nil, :value => "", :expected => "invalid"},
20
+ {:key => nil, :value => nil, :expected => "invalid"}
21
+ ].each do |scenario|
22
+ describe "with key #{scenario[:key] || "nil"} and value #{scenario[:value] || "nil"}" do
23
+ let :fake_registry_key do
24
+ fake = {}
25
+ fake[scenario[:value]] = scenario[:expected]
26
+ fake
27
+ end
28
+ it "should return #{scenario[:expected]} value" do
29
+ Win32::Registry::HKEY_LOCAL_MACHINE.stubs(:open).with(scenario[:key]).returns(fake_registry_key)
30
+ fake_registry_key.stubs(:close)
31
+
32
+ Facter::Util::Registry.hklm_read(scenario[:key], scenario[:value]).should == scenario[:expected]
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ describe "invalid params" do
39
+ [ {:key => "valid_key", :value => "invalid_value"},
40
+ {:key => "valid_key", :value => ""},
41
+ {:key => "valid_key", :value => nil},
42
+ ].each do |scenario|
43
+ describe "with valid key and value #{scenario[:value] || "nil"}" do
44
+ let :fake_registry_key do
45
+ {}
46
+ end
47
+ it "should raise an error" do
48
+ Win32::Registry::HKEY_LOCAL_MACHINE.stubs(:open).with(scenario[:key]).returns(fake_registry_key)
49
+ fake_registry_key.stubs(:close)
50
+
51
+ Facter::Util::Registry.hklm_read(scenario[:key], scenario[:value]).should raise_error
52
+ end
53
+ end
54
+ end
55
+ [ {:key => "invalid_key", :value => "valid_value"},
56
+ {:key => "invalid_key", :value => ""},
57
+ {:key => "invalid_key", :value => nil},
58
+ {:key => "", :value => "valid_value"},
59
+ {:key => "", :value => ""},
60
+ {:key => "", :value => nil},
61
+ {:key => nil, :value => "valid_value"},
62
+ {:key => nil, :value => ""},
63
+ {:key => nil, :value => nil}
64
+ ].each do |scenario|
65
+ describe "with invalid key #{scenario[:key] || "nil"} and value #{scenario[:value] || "nil"}" do
66
+ it "should raise an error" do
67
+ Win32::Registry::HKEY_LOCAL_MACHINE.stubs(:open).with(scenario[:key]).raises(Win32::Registry::Error, 2)
68
+ expect do
69
+ Facter::Util::Registry.hklm_read(scenario[:key], scenario[:value])
70
+ end.to raise_error Win32::Registry::Error
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,129 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/resolution'
5
+
6
+ describe Facter::Util::Resolution do
7
+ include FacterSpec::ConfigHelper
8
+
9
+ subject(:resolution) { described_class.new(:foo, stub_fact) }
10
+
11
+ let(:stub_fact) { stub('fact', :name => :stubfact) }
12
+
13
+ it "requires a name" do
14
+ expect { Facter::Util::Resolution.new }.to raise_error(ArgumentError)
15
+ end
16
+
17
+ it "requires a fact" do
18
+ expect { Facter::Util::Resolution.new('yay') }.to raise_error(ArgumentError)
19
+ end
20
+
21
+ it "can return its name" do
22
+ expect(resolution.name).to eq :foo
23
+ end
24
+
25
+ it "can explicitly set a value" do
26
+ resolution.value = "foo"
27
+ expect(resolution.value).to eq "foo"
28
+ end
29
+
30
+ it "defaults to nil for code" do
31
+ expect(resolution.code).to be_nil
32
+ end
33
+
34
+ describe "when setting the code" do
35
+ before do
36
+ Facter.stubs(:warnonce)
37
+ end
38
+
39
+ it "creates a block when given a command" do
40
+ resolution.setcode "foo"
41
+ expect(resolution.code).to be_a_kind_of Proc
42
+ end
43
+
44
+ it "stores the provided block when given a block" do
45
+ block = lambda { }
46
+ resolution.setcode(&block)
47
+ resolution.code.should equal(block)
48
+ end
49
+
50
+
51
+ it "prefers a command over a block" do
52
+ block = lambda { }
53
+ resolution.setcode("foo", &block)
54
+ expect(resolution.code).to_not eq block
55
+ end
56
+
57
+ it "fails if neither a string nor block has been provided" do
58
+ expect { resolution.setcode }.to raise_error(ArgumentError)
59
+ end
60
+ end
61
+
62
+ describe "when returning the value" do
63
+ it "returns any value that has been provided" do
64
+ resolution.value = "foo"
65
+ expect(resolution.value).to eq "foo"
66
+ end
67
+
68
+ describe "and setcode has not been called" do
69
+ it "returns nil" do
70
+ expect(resolution.value).to be_nil
71
+ end
72
+ end
73
+
74
+ describe "and the code is a string" do
75
+ it "returns the result of executing the code" do
76
+ resolution.setcode "/bin/foo"
77
+ Facter::Core::Execution.expects(:execute).once.with("/bin/foo", anything).returns "yup"
78
+
79
+ expect(resolution.value).to eq "yup"
80
+ end
81
+ end
82
+
83
+ describe "and the code is a block" do
84
+ it "returns the value returned by the block" do
85
+ resolution.setcode { "yayness" }
86
+ expect(resolution.value).to eq "yayness"
87
+ end
88
+ end
89
+ end
90
+
91
+ describe "setting options" do
92
+ it "can set the value" do
93
+ resolution.set_options(:value => 'something')
94
+ expect(resolution.value).to eq 'something'
95
+ end
96
+
97
+ it "can set the timeout" do
98
+ resolution.set_options(:timeout => 314)
99
+ expect(resolution.limit).to eq 314
100
+ end
101
+
102
+ it "can set the weight" do
103
+ resolution.set_options(:weight => 27)
104
+ expect(resolution.weight).to eq 27
105
+ end
106
+
107
+ it "fails on unhandled options" do
108
+ expect do
109
+ resolution.set_options(:foo => 'bar')
110
+ end.to raise_error(ArgumentError, /Invalid resolution options.*foo/)
111
+ end
112
+ end
113
+
114
+ describe "evaluating" do
115
+ it "evaluates the block in the context of the given resolution" do
116
+ subject.expects(:has_weight).with(5)
117
+ subject.evaluate { has_weight(5) }
118
+ end
119
+
120
+ it "raises a warning if the resolution is evaluated twice" do
121
+ Facter.expects(:warn).with do |msg|
122
+ expect(msg).to match /Already evaluated foo at.*reevaluating anyways/
123
+ end
124
+
125
+ subject.evaluate { }
126
+ subject.evaluate { }
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,127 @@
1
+ require 'spec_helper'
2
+ require 'facter/util/solaris_zones'
3
+
4
+ describe Facter::Util::SolarisZones do
5
+ let :zone_list do
6
+ zone_list = <<-EOF
7
+ 0:global:running:/::native:shared
8
+ -:local:configured:/::native:shared
9
+ -:zoneA:stopped:/::native:shared
10
+ EOF
11
+ end
12
+
13
+ let :zone_list2 do
14
+ zone_list = <<-EOF
15
+ 0:global:running:/::native:shared
16
+ -:local:configured:/::native:shared
17
+ -:zoneB:stopped:/::native:shared
18
+ -:zoneC:stopped:/::native:shared
19
+ EOF
20
+ end
21
+
22
+ subject do
23
+ described_class.new(:zoneadm_output => zone_list)
24
+ end
25
+
26
+ describe '.add_facts' do
27
+ before :each do
28
+ zones = described_class.new(:zoneadm_output => zone_list)
29
+ zones.send(:parse!)
30
+ zones.stubs(:refresh)
31
+ described_class.stubs(:new).returns(zones)
32
+ end
33
+
34
+ it 'defines the zones fact' do
35
+ described_class.add_facts
36
+ Facter.fact(:zones).value.should == 3
37
+ end
38
+
39
+ it 'defines a fact for each attribute of a zone' do
40
+ described_class.add_facts
41
+ [:id, :name, :status, :path, :uuid, :brand, :iptype].each do |attr|
42
+ Facter.fact("zone_local_#{attr}".intern).
43
+ should be_a_kind_of Facter::Util::Fact
44
+ end
45
+ end
46
+ end
47
+
48
+ describe '#refresh' do
49
+ it 'executes the zoneadm_cmd' do
50
+ Facter::Core::Execution.expects(:execute).with(subject.zoneadm_cmd, {:on_fail => nil}).returns(zone_list)
51
+ subject.refresh
52
+ end
53
+ end
54
+
55
+ describe 'multiple facts sharing a single model' do
56
+ context 'when zones is resolved for the first time' do
57
+ it 'counts the number of zones' do
58
+ given_initial_zone_facts
59
+ Facter.fact(:zones).value.should == 3
60
+ end
61
+ it 'defines facts for zoneA' do
62
+ given_initial_zone_facts
63
+ Facter.fact(:zone_zoneA_id).value.should == '-'
64
+ end
65
+ it 'does not define facts for zoneB' do
66
+ given_initial_zone_facts
67
+ Facter.fact(:zone_zoneB_id).should be_nil
68
+ end
69
+ it 'uses a single read of the system information for all of the dynamically generated zone facts' do
70
+ given_initial_zone_facts # <= single read happens here
71
+
72
+ Facter::Core::Execution.expects(:execute).never
73
+ Facter.fact(:zone_zoneA_id).value
74
+ Facter.fact(:zone_local_id).value
75
+ end
76
+ end
77
+ context 'when all facts have been flushed after zones was resolved once' do
78
+ it 'updates the number of zones' do
79
+ given_initial_zone_facts
80
+ when_facts_have_been_resolved_then_flushed
81
+
82
+ Facter.fact(:zones).value.should == 4
83
+ end
84
+ it 'stops resolving a value for a zone that no longer exists' do
85
+ given_initial_zone_facts
86
+ when_facts_have_been_resolved_then_flushed
87
+
88
+ Facter.fact(:zone_zoneA_id).value.should be_nil
89
+ Facter.fact(:zone_zoneA_status).value.should be_nil
90
+ Facter.fact(:zone_zoneA_path).value.should be_nil
91
+ end
92
+ it 'defines facts for new zones' do
93
+ given_initial_zone_facts
94
+ when_facts_have_been_resolved_then_flushed
95
+
96
+ Facter.fact(:zone_zoneB_id).should be_nil
97
+ Facter.fact(:zones).value
98
+ Facter.fact(:zone_zoneB_id).value.should be_a_kind_of String
99
+ end
100
+ it 'uses a single read of the system information for all of the dynamically generated zone facts' do
101
+ given_initial_zone_facts
102
+ when_facts_have_been_resolved_then_flushed
103
+
104
+ Facter::Core::Execution.expects(:execute).once.returns(zone_list2)
105
+ Facter.fact(:zones).value
106
+ Facter.fact(:zone_zoneA_id).value
107
+ Facter.fact(:zone_local_id).value
108
+ end
109
+
110
+ end
111
+ end
112
+
113
+ def given_initial_zone_facts
114
+ Facter::Core::Execution.stubs(:execute).
115
+ with(subject.zoneadm_cmd, {:on_fail => nil}).
116
+ returns(zone_list)
117
+ described_class.add_facts
118
+ end
119
+
120
+ def when_facts_have_been_resolved_then_flushed
121
+ Facter.fact(:zones).value
122
+ Facter.fact(:zone_zoneA_id).value
123
+ Facter.fact(:zone_local_id).value
124
+ Facter::Core::Execution.stubs(:execute).returns(zone_list2)
125
+ Facter.flush
126
+ end
127
+ end