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,106 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'shared_formats/parses'
5
+ require 'facter/util/ip'
6
+
7
+ shared_examples_for "netmask from ifconfig output" do |platform, address, fixture|
8
+ it "correctly on #{platform}" do
9
+ Facter::Util::IP.stubs(:exec_ifconfig).returns(my_fixture_read(fixture))
10
+ Facter.collection.internal_loader.load(:netmask)
11
+
12
+ Facter.fact(:netmask).value.should eq(address)
13
+ end
14
+ end
15
+
16
+ describe "The netmask fact" do
17
+ context "on Linux" do
18
+ before :each do
19
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
20
+ end
21
+
22
+ example_behavior_for "netmask from ifconfig output",
23
+ "Archlinux (net-tools 1.60)", "255.255.255.0",
24
+ "ifconfig_net_tools_1.60.txt"
25
+ example_behavior_for "netmask from ifconfig output",
26
+ "Ubuntu 12.04", "255.255.255.255",
27
+ "ifconfig_ubuntu_1204.txt"
28
+ end
29
+
30
+ context "on AIX" do
31
+ before :each do
32
+ Facter.fact(:kernel).stubs(:value).returns("AIX")
33
+ end
34
+
35
+ example_behavior_for "netmask from ifconfig output",
36
+ "AIX 7", "255.255.255.0",
37
+ "ifconfig_aix_7.txt"
38
+
39
+ end
40
+
41
+ context "on Darwin" do
42
+ before :each do
43
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
44
+ end
45
+
46
+ example_behavior_for "netmask from ifconfig output",
47
+ "Darwin 10.8.5", "255.255.252.0", "darwin_10_8_5.txt"
48
+ end
49
+
50
+ context "on Windows" do
51
+ require 'facter/util/wmi'
52
+ require 'facter/util/registry'
53
+ require 'facter_spec/windows_network'
54
+
55
+ include FacterSpec::WindowsNetwork
56
+
57
+ before :each do
58
+ Facter.fact(:kernel).stubs(:value).returns(:windows)
59
+ Facter::Util::Registry.stubs(:hklm_read).returns(nic_bindings)
60
+ end
61
+
62
+ describe "when you have no active network adapter" do
63
+ it "should return nil if there are no active (or any) network adapters" do
64
+ Facter::Util::WMI.expects(:execquery).returns([])
65
+
66
+ Facter.value(:netmask).should == nil
67
+ end
68
+ end
69
+
70
+ describe "when you have one network adapter" do
71
+ it "should return properly" do
72
+ nic = given_a_valid_windows_nic_with_ipv4_and_ipv6
73
+ Facter::Util::WMI.expects(:execquery).returns([nic])
74
+
75
+ Facter.value(:netmask).should == subnet0
76
+ end
77
+ end
78
+
79
+ describe "when you have more than one network adapter" do
80
+ it "should return the netmask of the adapter with the lowest IP connection metric (best connection)" do
81
+ nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
82
+ nics[:nic1].expects(:IPConnectionMetric).returns(5)
83
+ Facter::Util::WMI.expects(:execquery).returns(nics.values)
84
+
85
+ Facter.value(:netmask).should == subnet1
86
+ end
87
+
88
+ context "when the IP connection metric is the same" do
89
+ it "should return the netmask of the adapter with the lowest binding order" do
90
+ nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
91
+ Facter::Util::WMI.expects(:execquery).returns(nics.values)
92
+
93
+ Facter.value(:netmask).should == subnet0
94
+ end
95
+
96
+ it "should return the netmask of the adapter with the lowest binding even if the adapter is not first" do
97
+ nics = given_two_valid_windows_nics_with_ipv4_and_ipv6
98
+ Facter::Util::WMI.expects(:execquery).returns(nics.values)
99
+ Facter::Util::Registry.stubs(:hklm_read).returns(["\\Device\\#{settingId1}", "\\Device\\#{settingId0}" ])
100
+
101
+ Facter.value(:netmask).should == subnet1
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,160 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "Operating System fact" do
6
+
7
+ before :each do
8
+ FileTest.stubs(:exists?).returns false
9
+ end
10
+
11
+ it "should default to the kernel name" do
12
+ Facter.fact(:kernel).stubs(:value).returns("Nutmeg")
13
+
14
+ Facter.fact(:operatingsystem).value.should == "Nutmeg"
15
+ end
16
+ it "should be ESXi for VMkernel" do
17
+ Facter.fact(:kernel).stubs(:value).returns("VMkernel")
18
+
19
+ Facter.fact(:operatingsystem).value.should == "ESXi"
20
+ end
21
+
22
+ describe "on Solaris variants" do
23
+ before :each do
24
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
25
+ end
26
+
27
+ it "should be Nexenta if /etc/debian_version is present" do
28
+ FileTest.expects(:exists?).with("/etc/debian_version").returns true
29
+ Facter.fact(:operatingsystem).value.should == "Nexenta"
30
+ end
31
+
32
+ it "should be Solaris if /etc/debian_version is missing and uname -v failed to match" do
33
+ FileTest.expects(:exists?).with("/etc/debian_version").returns false
34
+ Facter.fact(:operatingsystem).value.should == "Solaris"
35
+ end
36
+
37
+ {
38
+ "SmartOS" => "joyent_20120629T002039Z",
39
+ "OmniOS" => "omnios-dda4bb3",
40
+ "OpenIndiana" => "oi_151a",
41
+ }.each_pair do |distribution, string|
42
+ it "should be #{distribution} if uname -v is '#{string}'" do
43
+ Facter::Core::Execution.stubs(:exec).with('uname -v').returns(string)
44
+ Facter.fact(:operatingsystem).value.should == distribution
45
+ end
46
+ end
47
+ end
48
+
49
+ describe "on Linux" do
50
+ before :each do
51
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
52
+
53
+ # Always stub lsbdistid by default, so tests work on Ubuntu
54
+ Facter.stubs(:value).with(:lsbdistid).returns(nil)
55
+ end
56
+
57
+ {
58
+ "Debian" => "/etc/debian_version",
59
+ "Gentoo" => "/etc/gentoo-release",
60
+ "Fedora" => "/etc/fedora-release",
61
+ "Mageia" => "/etc/mageia-release",
62
+ "Mandriva" => "/etc/mandriva-release",
63
+ "Mandrake" => "/etc/mandrake-release",
64
+ "MeeGo" => "/etc/meego-release",
65
+ "Archlinux" => "/etc/arch-release",
66
+ "OracleLinux" => "/etc/oracle-release",
67
+ "OpenWrt" => "/etc/openwrt_release",
68
+ "Alpine" => "/etc/alpine-release",
69
+ "VMWareESX" => "/etc/vmware-release",
70
+ "Bluewhite64" => "/etc/bluewhite64-version",
71
+ "Slamd64" => "/etc/slamd64-version",
72
+ "Slackware" => "/etc/slackware-version",
73
+ "Amazon" => "/etc/system-release",
74
+ }.each_pair do |distribution, releasefile|
75
+ it "should be #{distribution} if #{releasefile} exists" do
76
+ FileTest.expects(:exists?).with(releasefile).returns true
77
+ Facter.fact(:operatingsystem).value.should == distribution
78
+ end
79
+ end
80
+
81
+ describe "depending on LSB release information" do
82
+ before :each do
83
+ Facter.collection.internal_loader.load(:lsb)
84
+ end
85
+
86
+ it "on Ubuntu should use the lsbdistid fact" do
87
+ FileUtils.stubs(:exists?).with("/etc/debian_version").returns true
88
+
89
+ Facter.stubs(:value).with(:lsbdistid).returns("Ubuntu")
90
+ Facter.fact(:operatingsystem).value.should == "Ubuntu"
91
+ end
92
+
93
+ it "on LinuxMint should use the lsbdistid fact" do
94
+ FileUtils.stubs(:exists?).with("/etc/debian_version").returns true
95
+
96
+ Facter.stubs(:value).with(:lsbdistid).returns("LinuxMint")
97
+ Facter.fact(:operatingsystem).value.should == "LinuxMint"
98
+ end
99
+
100
+ end
101
+
102
+
103
+ # Check distributions that rely on the contents of /etc/redhat-release
104
+ {
105
+ "RedHat" => "Red Hat Enterprise Linux Server release 6.0 (Santiago)",
106
+ "CentOS" => "CentOS release 5.6 (Final)",
107
+ "Scientific" => "Scientific Linux release 6.0 (Carbon)",
108
+ "SLC" => "Scientific Linux CERN SLC release 5.7 (Boron)",
109
+ "Ascendos" => "Ascendos release 6.0 (Nameless)",
110
+ "CloudLinux" => "CloudLinux Server release 5.5",
111
+ "XenServer" => "XenServer release 5.6.0-31188p (xenenterprise)",
112
+ }.each_pair do |operatingsystem, string|
113
+ it "should be #{operatingsystem} based on /etc/redhat-release contents #{string}" do
114
+ FileTest.expects(:exists?).with("/etc/redhat-release").returns true
115
+ File.expects(:read).with("/etc/redhat-release").returns string
116
+
117
+ Facter.fact(:operatingsystem).value.should == operatingsystem
118
+ end
119
+ end
120
+
121
+ describe "Oracle variant" do
122
+ it "should be OVS if /etc/ovs-release exists" do
123
+ Facter.stubs(:value).with(:lsbdistid)
124
+ FileTest.expects(:exists?).with("/etc/enterprise-release").returns true
125
+ FileTest.expects(:exists?).with("/etc/ovs-release").returns true
126
+ Facter.fact(:operatingsystem).value.should == "OVS"
127
+ end
128
+
129
+ it "should be OEL if /etc/ovs-release doesn't exist" do
130
+ FileTest.expects(:exists?).with("/etc/enterprise-release").returns true
131
+ FileTest.expects(:exists?).with("/etc/ovs-release").returns false
132
+ Facter.fact(:operatingsystem).value.should == "OEL"
133
+ end
134
+ end
135
+
136
+ it "should identify VMWare ESX" do
137
+ Facter.stubs(:value).with(:lsbdistid).returns(nil)
138
+
139
+ FileTest.expects(:exists?).with("/etc/vmware-release").returns true
140
+ Facter.fact(:operatingsystem).value.should == "VMWareESX"
141
+ end
142
+
143
+ it "should differentiate between Scientific Linux CERN and Scientific Linux" do
144
+ FileTest.expects(:exists?).with("/etc/redhat-release").returns true
145
+ File.expects(:read).with("/etc/redhat-release").returns("Scientific Linux CERN SLC 5.7 (Boron)")
146
+ Facter.fact(:operatingsystem).value.should == "SLC"
147
+ end
148
+
149
+ it "should identify Cumulus Linux" do
150
+ Facter::Util::Operatingsystem.expects(:os_release).returns({'NAME' => 'Cumulus Linux'})
151
+ Facter.fact(:operatingsystem).value.should == "CumulusLinux"
152
+ end
153
+
154
+ it "should not use '/etc/os-release' on platforms other than Cumulus Linux" do
155
+ Facter::Util::Operatingsystem.expects(:os_release).returns({'NAME' => 'Debian GNU/Linux'})
156
+ FileTest.expects(:exists?).with('/etc/debian_version').returns true
157
+ Facter.fact(:operatingsystem).value.should == "Debian"
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,38 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+ require 'facter'
4
+
5
+ describe "OS Major Release fact" do
6
+ ['Amazon','CentOS','CloudLinux','Debian','Fedora','OEL','OracleLinux','OVS','RedHat','Scientific','SLC','CumulusLinux'].each do |operatingsystem|
7
+ context "on #{operatingsystem} operatingsystems" do
8
+ it "should be derived from operatingsystemrelease" do
9
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
10
+ Facter.fact(:operatingsystem).stubs(:value).returns(operatingsystem)
11
+ Facter.fact(:operatingsystemrelease).stubs(:value).returns("6.3")
12
+ Facter.fact(:operatingsystemmajrelease).value.should == "6"
13
+ end
14
+ end
15
+ end
16
+
17
+ context "on Solaris operatingsystems" do
18
+ before :each do
19
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
20
+ Facter.fact(:operatingsystem).stubs(:value).returns("Solaris")
21
+ end
22
+
23
+ it "should correctly derive from operatingsystemrelease on solaris 10" do
24
+ Facter.fact(:operatingsystemrelease).expects(:value).returns("10_u8")
25
+ Facter.fact(:operatingsystemmajrelease).value.should == "10"
26
+ end
27
+
28
+ it "should correctly derive from operatingsystemrelease on solaris 11 (old version scheme)" do
29
+ Facter.fact(:operatingsystemrelease).expects(:value).returns("11 11/11")
30
+ Facter.fact(:operatingsystemmajrelease).value.should == "11"
31
+ end
32
+
33
+ it "should correctly derive from operatingsystemrelease on solaris 11 (new version scheme)" do
34
+ Facter.fact(:operatingsystemrelease).expects(:value).returns("11.1")
35
+ Facter.fact(:operatingsystemmajrelease).value.should == "11"
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,236 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'facter/util/file_read'
4
+ require 'spec_helper'
5
+
6
+ describe "Operating System Release fact" do
7
+
8
+ before do
9
+ Facter.clear
10
+ end
11
+
12
+ after do
13
+ Facter.clear
14
+ end
15
+
16
+ test_cases = {
17
+ "OpenWrt" => "/etc/openwrt_version",
18
+ "CentOS" => "/etc/redhat-release",
19
+ "RedHat" => "/etc/redhat-release",
20
+ "LinuxMint" => "/etc/linuxmint/info",
21
+ "Scientific" => "/etc/redhat-release",
22
+ "Fedora" => "/etc/fedora-release",
23
+ "MeeGo" => "/etc/meego-release",
24
+ "OEL" => "/etc/enterprise-release",
25
+ "oel" => "/etc/enterprise-release",
26
+ "OVS" => "/etc/ovs-release",
27
+ "ovs" => "/etc/ovs-release",
28
+ "OracleLinux" => "/etc/oracle-release",
29
+ "Ascendos" => "/etc/redhat-release",
30
+ }
31
+
32
+ test_cases.each do |system, file|
33
+ describe "with operatingsystem reported as #{system.inspect}" do
34
+ it "should read the #{file.inspect} file" do
35
+ Facter.fact(:operatingsystem).stubs(:value).returns(system)
36
+
37
+ Facter::Util::FileRead.expects(:read).with(file).at_least(1)
38
+
39
+ Facter.fact(:operatingsystemrelease).value
40
+ end
41
+ end
42
+ end
43
+
44
+ it "does not include trailing whitespace on Debian" do
45
+ Facter.fact(:operatingsystem).stubs(:value).returns("Debian")
46
+ Facter::Util::FileRead.stubs(:read).returns("6.0.6\n")
47
+ Facter.fact(:operatingsystemrelease).value.should == "6.0.6"
48
+ end
49
+
50
+ it "for VMWareESX it should run the vmware -v command" do
51
+ Facter.fact(:kernel).stubs(:value).returns("VMkernel")
52
+ Facter.fact(:kernelrelease).stubs(:value).returns("4.1.0")
53
+ Facter.fact(:operatingsystem).stubs(:value).returns("VMwareESX")
54
+
55
+ Facter::Core::Execution.stubs(:exec).with('vmware -v').returns('foo')
56
+
57
+ Facter.fact(:operatingsystemrelease).value
58
+ end
59
+
60
+ it "for Alpine it should use the contents of /etc/alpine-release" do
61
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
62
+ Facter.fact(:operatingsystem).stubs(:value).returns("Alpine")
63
+
64
+ File.expects(:read).with("/etc/alpine-release").returns("foo")
65
+
66
+ Facter.fact(:operatingsystemrelease).value.should == "foo"
67
+ end
68
+
69
+ describe "with operatingsystem reported as Solaris" do
70
+
71
+ before :each do
72
+ Facter.fact(:kernel).stubs(:value).returns('SunOS')
73
+ Facter.fact(:osfamily).stubs(:value).returns('Solaris')
74
+ end
75
+
76
+ {
77
+ 'Solaris 8 s28_38shwp2 SPARC' => '28',
78
+ 'Solaris 8 6/00 s28s_u1wos_08 SPARC' => '28_u1',
79
+ 'Solaris 8 10/00 s28s_u2wos_11b SPARC' => '28_u2',
80
+ 'Solaris 8 1/01 s28s_u3wos_08 SPARC' => '28_u3',
81
+ 'Solaris 8 4/01 s28s_u4wos_08 SPARC' => '28_u4',
82
+ 'Solaris 8 7/01 s28s_u5wos_08 SPARC' => '28_u5',
83
+ 'Solaris 8 10/01 s28s_u6wos_08a SPARC' => '28_u6',
84
+ 'Solaris 8 2/02 s28s_u7wos_08a SPARC' => '28_u7',
85
+ 'Solaris 8 HW 12/02 s28s_hw1wos_06a SPARC' => '28',
86
+ 'Solaris 8 HW 5/03 s28s_hw2wos_06a SPARC' => '28',
87
+ 'Solaris 8 HW 7/03 s28s_hw3wos_05a SPARC' => '28',
88
+ 'Solaris 8 2/04 s28s_hw4wos_05a SPARC' => '28',
89
+ 'Solaris 9 s9_58shwpl3 SPARC' => '9',
90
+ 'Solaris 9 9/02 s9s_u1wos_08b SPARC' => '9_u1',
91
+ 'Solaris 9 12/02 s9s_u2wos_10 SPARC' => '9_u2',
92
+ 'Solaris 9 4/03 s9s_u3wos_08 SPARC' => '9_u3',
93
+ 'Solaris 9 8/03 s9s_u4wos_08a SPARC' => '9_u4',
94
+ 'Solaris 9 12/03 s9s_u5wos_08b SPARC' => '9_u5',
95
+ 'Solaris 9 4/04 s9s_u6wos_08a SPARC' => '9_u6',
96
+ 'Solaris 9 9/04 s9s_u7wos_09 SPARC' => '9_u7',
97
+ 'Solaris 9 9/05 s9s_u8wos_05 SPARC' => '9_u8',
98
+ 'Solaris 9 9/05 HW s9s_u9wos_06b SPARC' => '9_u9',
99
+ 'Solaris 10 3/05 s10_74L2a SPARC' => '10',
100
+ 'Solaris 10 3/05 HW1 s10s_wos_74L2a SPARC' => '10',
101
+ 'Solaris 10 3/05 HW2 s10s_hw2wos_05 SPARC' => '10',
102
+ 'Solaris 10 1/06 s10s_u1wos_19a SPARC' => '10_u1',
103
+ 'Solaris 10 6/06 s10s_u2wos_09a SPARC' => '10_u2',
104
+ 'Solaris 10 11/06 s10s_u3wos_10 SPARC' => '10_u3',
105
+ 'Solaris 10 8/07 s10s_u4wos_12b SPARC' => '10_u4',
106
+ 'Solaris 10 5/08 s10s_u5wos_10 SPARC' => '10_u5',
107
+ 'Solaris 10 10/08 s10s_u6wos_07b SPARC' => '10_u6',
108
+ 'Solaris 10 5/09 s10s_u7wos_08 SPARC' => '10_u7',
109
+ 'Solaris 10 10/09 s10s_u8wos_08a SPARC' => '10_u8',
110
+ 'Oracle Solaris 10 9/10 s10s_u9wos_14a SPARC' => '10_u9',
111
+ 'Oracle Solaris 10 8/11 s10s_u10wos_17b SPARC' => '10_u10',
112
+ 'Solaris 10 3/05 HW1 s10x_wos_74L2a X86' => '10',
113
+ 'Solaris 10 1/06 s10x_u1wos_19a X86' => '10_u1',
114
+ 'Solaris 10 6/06 s10x_u2wos_09a X86' => '10_u2',
115
+ 'Solaris 10 11/06 s10x_u3wos_10 X86' => '10_u3',
116
+ 'Solaris 10 8/07 s10x_u4wos_12b X86' => '10_u4',
117
+ 'Solaris 10 5/08 s10x_u5wos_10 X86' => '10_u5',
118
+ 'Solaris 10 10/08 s10x_u6wos_07b X86' => '10_u6',
119
+ 'Solaris 10 5/09 s10x_u7wos_08 X86' => '10_u7',
120
+ 'Solaris 10 10/09 s10x_u8wos_08a X86' => '10_u8',
121
+ 'Oracle Solaris 10 9/10 s10x_u9wos_14a X86' => '10_u9',
122
+ 'Oracle Solaris 10 8/11 s10x_u10wos_17b X86' => '10_u10',
123
+ 'Oracle Solaris 11 11/11 X86' => '11 11/11',
124
+ 'Oracle Solaris 11.1 SPARC' => '11.1'
125
+ }.each do |fakeinput,expected_output|
126
+ it "should be able to parse a release of #{fakeinput}" do
127
+ Facter::Util::FileRead.stubs(:read).with('/etc/release').returns fakeinput
128
+ Facter.fact(:operatingsystemrelease).value.should == expected_output
129
+ end
130
+ end
131
+
132
+ context "malformed /etc/release files" do
133
+ it "should fallback to the kernelrelease fact if /etc/release is empty" do
134
+ Facter::Util::FileRead.stubs(:read).with('/etc/release').
135
+ raises EOFError
136
+ Facter.expects(:warn).with(regexp_matches(/Could not retrieve fact='operatingsystemrelease'.*EOFError/))
137
+ Facter.fact(:operatingsystemrelease).value.
138
+ should == Facter.fact(:kernelrelease).value
139
+ end
140
+
141
+ it "should fallback to the kernelrelease fact if /etc/release is not present" do
142
+ Facter::Util::FileRead.stubs(:read).with('/etc/release').
143
+ raises Errno::ENOENT
144
+ Facter.expects(:warn).with(regexp_matches(/Could not retrieve fact='operatingsystemrelease'.*No such file or directory/))
145
+ Facter.fact(:operatingsystemrelease).value.
146
+ should == Facter.fact(:kernelrelease).value
147
+ end
148
+
149
+ it "should fallback to the kernelrelease fact if /etc/release cannot be parsed" do
150
+ Facter::Util::FileRead.stubs(:read).with('/etc/release').
151
+ returns 'some future release string'
152
+ Facter.fact(:operatingsystemrelease).value.
153
+ should == Facter.fact(:kernelrelease).value
154
+ end
155
+ end
156
+ end
157
+
158
+ describe "with operatingsystem reported as Windows" do
159
+ require 'facter/util/wmi'
160
+ before do
161
+ Facter.fact(:kernel).stubs(:value).returns("windows")
162
+ end
163
+
164
+ {
165
+ ['5.2.3790', 1] => "XP",
166
+ ['6.0.6002', 1] => "Vista",
167
+ ['6.0.6002', 2] => "2008",
168
+ ['6.0.6002', 3] => "2008",
169
+ ['6.1.7601', 1] => "7",
170
+ ['6.1.7601', 2] => "2008 R2",
171
+ ['6.1.7601', 3] => "2008 R2",
172
+ ['6.2.9200', 1] => "8",
173
+ ['6.2.9200', 2] => "2012",
174
+ ['6.2.9200', 3] => "2012",
175
+ }.each do |os_values, expected_output|
176
+ it "should be #{expected_output} with Version #{os_values[0]} and ProductType #{os_values[1]}" do
177
+ os = mock('os', :version => os_values[0], :producttype => os_values[1])
178
+ Facter::Util::WMI.expects(:execquery).returns([os])
179
+ Facter.fact(:operatingsystemrelease).value.should == expected_output
180
+ end
181
+ end
182
+
183
+ {
184
+ ['5.2.3790', 2, ""] => "2003",
185
+ ['5.2.3790', 2, "R2"] => "2003 R2",
186
+ ['5.2.3790', 3, ""] => "2003",
187
+ ['5.2.3790', 3, "R2"] => "2003 R2",
188
+ }.each do |os_values, expected_output|
189
+ it "should be #{expected_output} with Version #{os_values[0]} and ProductType #{os_values[1]} and OtherTypeDescription #{os_values[2]}" do
190
+ os = mock('os', :version => os_values[0], :producttype => os_values[1], :othertypedescription => os_values[2])
191
+ Facter::Util::WMI.expects(:execquery).returns([os])
192
+ Facter.fact(:operatingsystemrelease).value.should == expected_output
193
+ end
194
+ end
195
+
196
+ it "reports '2003' if the WMI method othertypedescription does not exist" do
197
+ os = mock('os', :version => '5.2.3790', :producttype => 2)
198
+ os.stubs(:othertypedescription).raises(NoMethodError)
199
+
200
+ Facter::Util::WMI.expects(:execquery).returns([os])
201
+ Facter.fact(:operatingsystemrelease).value.should == '2003'
202
+ end
203
+
204
+ context "Unknown Windows version" do
205
+ before :each do
206
+ Facter.fact(:kernelrelease).stubs(:value).returns("X.Y.ZZZZ")
207
+ end
208
+
209
+ it "should be kernel version value with unknown values " do
210
+ os = mock('os', :version => "X.Y.ZZZZ")
211
+ Facter::Util::WMI.expects(:execquery).returns([os])
212
+ Facter.fact(:operatingsystemrelease).value.should == "X.Y.ZZZZ"
213
+ end
214
+ end
215
+ end
216
+
217
+ context "Ubuntu" do
218
+ let(:lsbrelease) { 'DISTRIB_ID=Ubuntu\nDISTRIB_RELEASE=10.04\nDISTRIB_CODENAME=lucid\nDISTRIB_DESCRIPTION="Ubuntu 10.04.4 LTS"'}
219
+ before :each do
220
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
221
+ Facter.fact(:operatingsystem).stubs(:value).returns("Ubuntu")
222
+ end
223
+
224
+ it "Returns only the major and minor version (not patch version)" do
225
+ Facter::Util::FileRead.stubs(:read).with("/etc/lsb-release").returns(lsbrelease)
226
+ Facter.fact(:operatingsystemrelease).value.should == "10.04"
227
+ end
228
+ end
229
+
230
+ it "uses '/etc/os-release for Cumulus Linux" do
231
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
232
+ Facter.fact(:operatingsystem).stubs(:value).returns("CumulusLinux")
233
+ Facter::Util::Operatingsystem.expects(:os_release).returns({'VERSION_ID' => '1.5.0'})
234
+ Facter.fact(:operatingsystemrelease).value.should == "1.5.0"
235
+ end
236
+ end