mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
115 lines
3.0 KiB
Ruby
115 lines
3.0 KiB
Ruby
require "hardware"
|
|
|
|
describe Hardware::CPU do
|
|
describe "::type" do
|
|
let(:cpu_types) {
|
|
[
|
|
:intel,
|
|
:ppc,
|
|
:dunno,
|
|
]
|
|
}
|
|
|
|
it "returns the current CPU's type as a symbol, or :dunno if it cannot be detected" do
|
|
expect(cpu_types).to include(described_class.type)
|
|
end
|
|
end
|
|
|
|
describe "::family" do
|
|
let(:cpu_families) {
|
|
[
|
|
:core,
|
|
:core2,
|
|
:penryn,
|
|
:nehalem,
|
|
:arrandale,
|
|
:sandybridge,
|
|
:ivybridge,
|
|
:haswell,
|
|
:broadwell,
|
|
:skylake,
|
|
:kabylake,
|
|
:dunno,
|
|
]
|
|
}
|
|
|
|
it "returns the current CPU's family name as a symbol, or :dunno if it cannot be detected" do
|
|
expect(cpu_families).to include described_class.family
|
|
end
|
|
end
|
|
|
|
describe "::can_run?" do
|
|
subject { described_class }
|
|
|
|
matcher :be_able_to_run do |arch|
|
|
match do |expected|
|
|
allow(expected).to receive(:type).and_return type
|
|
allow(expected).to receive(:bits).and_return bits
|
|
|
|
expect(expected.can_run?(arch)).to be true
|
|
end
|
|
end
|
|
|
|
let(:type) { described_class.type }
|
|
let(:bits) { described_class.bits }
|
|
|
|
before do
|
|
allow(described_class).to receive(:type).and_return type
|
|
allow(described_class).to receive(:bits).and_return bits
|
|
end
|
|
|
|
context "when on an 32-bit Intel machine" do
|
|
let(:type) { :intel }
|
|
let(:bits) { 32 }
|
|
|
|
it { is_expected.to be_able_to_run :i386 }
|
|
it { is_expected.not_to be_able_to_run :x86_64 }
|
|
it { is_expected.not_to be_able_to_run :ppc32 }
|
|
it { is_expected.not_to be_able_to_run :ppc64 }
|
|
end
|
|
|
|
context "when on an 64-bit Intel machine" do
|
|
let(:type) { :intel }
|
|
let(:bits) { 64 }
|
|
|
|
it { is_expected.to be_able_to_run :i386 }
|
|
it { is_expected.to be_able_to_run :x86_64 }
|
|
it { is_expected.not_to be_able_to_run :ppc32 }
|
|
it { is_expected.not_to be_able_to_run :ppc64 }
|
|
end
|
|
|
|
context "when on a 32-bit PowerPC machine" do
|
|
let(:type) { :ppc }
|
|
let(:bits) { 32 }
|
|
|
|
it { is_expected.not_to be_able_to_run :i386 }
|
|
it { is_expected.not_to be_able_to_run :x86_64 }
|
|
it { is_expected.to be_able_to_run :ppc32 }
|
|
it { is_expected.not_to be_able_to_run :ppc64 }
|
|
end
|
|
|
|
context "when on a 64-bit PowerPC machine" do
|
|
let(:type) { :ppc }
|
|
let(:bits) { 64 }
|
|
|
|
it { is_expected.not_to be_able_to_run :i386 }
|
|
it { is_expected.not_to be_able_to_run :x86_64 }
|
|
it { is_expected.to be_able_to_run :ppc32 }
|
|
it { is_expected.to be_able_to_run :ppc64 }
|
|
end
|
|
|
|
context "when the CPU type is unknown" do
|
|
let(:type) { :dunno }
|
|
|
|
it { is_expected.not_to be_able_to_run :i386 }
|
|
it { is_expected.not_to be_able_to_run :x86_64 }
|
|
it { is_expected.not_to be_able_to_run :ppc32 }
|
|
it { is_expected.not_to be_able_to_run :ppc64 }
|
|
end
|
|
|
|
context "when the architecture is unknown" do
|
|
it { is_expected.not_to be_able_to_run :blah }
|
|
end
|
|
end
|
|
end
|