Codebase list facter / 84ee8be
Merge remote-tracking branch 'joshcooper/ticket/1.6.x/10261-wrong-arch-fact-windows' into 1.6.x * joshcooper/ticket/1.6.x/10261-wrong-arch-fact-windows: (#10261) Detect x64 architecture on Windows Jeff Weiss 11 years ago
4 changed file(s) with 63 addition(s) and 3 deletion(s). Raw diff Collapse all Expand all
2424 end
2525 when /(i[3456]86|pentium)/
2626 case Facter.value(:operatingsystem)
27 when "Gentoo"
27 when "Gentoo", "windows"
2828 "x86"
2929 else
3030 "i386"
2727 Facter.add(:hardwaremodel) do
2828 confine :operatingsystem => :windows
2929 setcode do
30 require 'rbconfig'
31 RbConfig::CONFIG['host_cpu']
30 # http://source.winehq.org/source/include/winnt.h#L568
31 # http://msdn.microsoft.com/en-us/library/windows/desktop/aa394373(v=vs.85).aspx
32 # http://msdn.microsoft.com/en-us/library/windows/desktop/windows.system.processorarchitecture.aspx
33 require 'facter/util/wmi'
34 model = ""
35 Facter::Util::WMI.execquery("select Architecture, Level from Win32_Processor").each do |cpu|
36 model =
37 case cpu.Architecture
38 when 11: 'neutral' # PROCESSOR_ARCHITECTURE_NEUTRAL
39 when 10: 'i686' # PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
40 when 9: 'x64' # PROCESSOR_ARCHITECTURE_AMD64
41 when 8: 'msil' # PROCESSOR_ARCHITECTURE_MSIL
42 when 7: 'alpha64' # PROCESSOR_ARCHITECTURE_ALPHA64
43 when 6: 'ia64' # PROCESSOR_ARCHITECTURE_IA64
44 when 5: 'arm' # PROCESSOR_ARCHITECTURE_ARM
45 when 4: 'shx' # PROCESSOR_ARCHITECTURE_SHX
46 when 3: 'powerpc' # PROCESSOR_ARCHITECTURE_PPC
47 when 2: 'alpha' # PROCESSOR_ARCHITECTURE_ALPHA
48 when 1: 'mips' # PROCESSOR_ARCHITECTURE_MIPS
49 when 0: "i#{cpu.Level}86" # PROCESSOR_ARCHITECTURE_INTEL
50 else 'unknown' # PROCESSOR_ARCHITECTURE_UNKNOWN
51 end
52 break
53 end
54
55 model
3256 end
3357 end
2020 ["Gentoo","i586"] => "x86",
2121 ["Gentoo","i686"] => "x86",
2222 ["Gentoo","pentium"] => "x86",
23 ["windows","i386"] => "x86",
24 ["windows","x64"] => "x64",
2325 }
2426 generic_archs = Hash.new
2527 generic_archs = {
0 #!/usr/bin/env ruby
1
2 require 'spec_helper'
3 require 'facter'
4
5 describe "Hardwaremodel fact" do
6 it "should match uname -m by default" do
7 Facter.fact(:kernel).stubs(:value).returns("Darwin")
8 Facter::Util::Resolution.stubs(:exec).with("uname -m").returns("Inky")
9
10 Facter.fact(:hardwaremodel).value.should == "Inky"
11 end
12
13 describe "on Windows" do
14 require 'facter/util/wmi'
15 before :each do
16 Facter.fact(:kernel).stubs(:value).returns("windows")
17 end
18
19 it "should detect i686" do
20 cpu = mock('cpu', :Architecture => 0, :Level => 6)
21 Facter::Util::WMI.expects(:execquery).returns([cpu])
22
23 Facter.fact(:hardwaremodel).value.should == "i686"
24 end
25
26 it "should detect x64" do
27 cpu = mock('cpu', :Architecture => 9)
28 Facter::Util::WMI.expects(:execquery).returns([cpu])
29
30 Facter.fact(:hardwaremodel).value.should == "x64"
31 end
32 end
33 end