aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/os/mac/hardware_spec.rb
blob: fa577ba7d6012ff97dcb6749beeb44d5bf0adf16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
require "hardware"
require "extend/os/mac/hardware/cpu"

describe Hardware::CPU do
  describe "::can_run?" do
    it "reports that Intel Macs can run Intel executables" do
      allow(Hardware::CPU).to receive(:type).and_return :intel
      allow(Hardware::CPU).to receive(:bits).and_return 64
      expect(Hardware::CPU.can_run?(:i386)).to be true
      expect(Hardware::CPU.can_run?(:x86_64)).to be true
    end

    it "reports that PowerPC Macs can run PowerPC executables" do
      allow(Hardware::CPU).to receive(:type).and_return :ppc
      allow(Hardware::CPU).to receive(:bits).and_return 64
      expect(Hardware::CPU.can_run?(:ppc)).to be true
      expect(Hardware::CPU.can_run?(:ppc64)).to be true
    end

    it "reports that 32-bit Intel Macs can't run x86_64 executables" do
      allow(Hardware::CPU).to receive(:type).and_return :intel
      allow(Hardware::CPU).to receive(:bits).and_return 32
      expect(Hardware::CPU.can_run?(:x86_64)).to be false
    end

    it "reports that 32-bit PowerPC Macs can't run ppc64 executables" do
      allow(Hardware::CPU).to receive(:type).and_return :ppc
      allow(Hardware::CPU).to receive(:bits).and_return 32
      expect(Hardware::CPU.can_run?(:ppc64)).to be false
    end

    it "reports that Intel Macs can only run 32-bit PowerPC executables on 10.6 and older" do
      allow(Hardware::CPU).to receive(:type).and_return :intel
      allow(OS::Mac).to receive(:version).and_return OS::Mac::Version.new "10.6"
      expect(Hardware::CPU.can_run?(:ppc)).to be true

      allow(OS::Mac).to receive(:version).and_return OS::Mac::Version.new "10.7"
      expect(Hardware::CPU.can_run?(:ppc)).to be false
    end

    it "reports that PowerPC Macs can't run Intel executables" do
      allow(Hardware::CPU).to receive(:type).and_return :ppc
      expect(Hardware::CPU.can_run?(:i386)).to be false
      expect(Hardware::CPU.can_run?(:x86_64)).to be false
    end

    it "returns false for unknown CPU types" do
      allow(Hardware::CPU).to receive(:type).and_return :dunno
      expect(Hardware::CPU.can_run?(:i386)).to be false
    end

    it "returns false for unknown arches" do
      expect(Hardware::CPU.can_run?(:blah)).to be false
    end
  end
end