From b2526185d74e93e93544e26df1ad7c6601fd8f25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Mon, 2 Sep 2019 15:46:59 +0100 Subject: [PATCH] Add a Hwinfo#present? method --- src/lib/y2network/hwinfo.rb | 15 ++++++++++++++- test/y2network/hwinfo_test.rb | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/lib/y2network/hwinfo.rb b/src/lib/y2network/hwinfo.rb index dced06d4d..6d815faed 100644 --- a/src/lib/y2network/hwinfo.rb +++ b/src/lib/y2network/hwinfo.rb @@ -19,6 +19,7 @@ require "yast" require "y2network/driver" +require "y2network/udev_rule" module Y2Network class HardwareWrapper @@ -171,7 +172,8 @@ def initialize(hwinfo = {}) { name: "wl_enc_modes", default: nil }, { name: "wl_channels", default: nil }, { name: "wl_bitrates", default: nil }, - { name: "dev_port", default: nil } + { name: "dev_port", default: nil }, + { name: "type", default: nil } ].each do |hwinfo_item| define_method hwinfo_item[:name].downcase do @hwinfo ? @hwinfo.fetch(hwinfo_item[:name], hwinfo_item[:default]) : hwinfo_item[:default] @@ -214,6 +216,17 @@ def drivers modules.map { |m| Driver.new(*m) } end + # Determines whether the hardware is available (plugged) + # + # If the hardware layer was able to get its type, it consider the hardware to be connected. Bear + # in mind that it is not possible to just rely in #exists? because it could include some info + # from udev rules. + # + # @return [Boolean] + def present? + !!type + end + # Determines whether two objects are equivalent # # Ignores any element having a nil value. diff --git a/test/y2network/hwinfo_test.rb b/test/y2network/hwinfo_test.rb index 031cb263e..7c348bdd6 100644 --- a/test/y2network/hwinfo_test.rb +++ b/test/y2network/hwinfo_test.rb @@ -149,4 +149,22 @@ .to eq(described_class.new("dev_name" => "eth0")) end end + + describe "#present?" do + context "when the hardware was detected" do + subject(:hwinfo) { described_class.new("type" => "eth") } + + it "returns true" do + expect(hwinfo).to be_present + end + end + + context "when the hardware was not detected" do + subject(:hwinfo) { described_class.new({}) } + + it "returns false" do + expect(hwinfo).to_not be_present + end + end + end end