From 31ea4c57c01f810622a95186677ced222d7faca2 Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Mon, 23 Nov 2020 08:42:58 -0800 Subject: Misc RuboCop cleanup of the codebase A few misc things Signed-off-by: Tim Smith --- spec/unit/plugins/aix/network_spec.rb | 26 +++++++-------- spec/unit/plugins/c_spec.rb | 1 - spec/unit/plugins/chef_spec.rb | 1 - spec/unit/plugins/docker_spec.rb | 13 ++++---- spec/unit/plugins/linux/network_spec.rb | 2 +- spec/unit/plugins/linux/selinux_spec.rb | 52 +++++++++++++++--------------- spec/unit/plugins/packages_spec.rb | 8 ++--- spec/unit/plugins/shard_spec.rb | 2 +- spec/unit/plugins/solaris2/network_spec.rb | 2 +- 9 files changed, 53 insertions(+), 54 deletions(-) (limited to 'spec') diff --git a/spec/unit/plugins/aix/network_spec.rb b/spec/unit/plugins/aix/network_spec.rb index af944160..d1aa92c9 100644 --- a/spec/unit/plugins/aix/network_spec.rb +++ b/spec/unit/plugins/aix/network_spec.rb @@ -21,19 +21,19 @@ require "spec_helper" describe Ohai::System, "AIX network plugin" do before do @netstat_rn = <<~NETSTAT_RN - Destination Gateway Flags Refcnt Use Interface - Destination Gateway Flags Refs Use If Exp Groups - Only the root user can specify the Z flag - (Internet): - default 172.31.0.1 UG 2 1652046 en0 - - => - 127/8 127.0.0.1 U 5 2455591 lo0 - - => - 172.31.0.0 172.31.10.23 UHSb 0 0 en0 - - => - 172.31/20 172.31.10.23 U 1 1015674 en0 - - => - 172.31.10.23 127.0.0.1 UGHS 0 1 lo0 - - - 172.31.15.255 172.31.10.23 UHSb 0 1 en0 - - => - Only the root user can specify the Z flag - (Internet v6): - ::1%1 ::1%1 UH 1 677032 lo0 - - => + Destination Gateway Flags Refcnt Use Interface + Destination Gateway Flags Refs Use If Exp Groups + Only the root user can specify the Z flag + (Internet): + default 172.31.0.1 UG 2 1652046 en0 - - => + 127/8 127.0.0.1 U 5 2455591 lo0 - - => + 172.31.0.0 172.31.10.23 UHSb 0 0 en0 - - => + 172.31/20 172.31.10.23 U 1 1015674 en0 - - => + 172.31.10.23 127.0.0.1 UGHS 0 1 lo0 - - + 172.31.15.255 172.31.10.23 UHSb 0 1 en0 - - => + Only the root user can specify the Z flag + (Internet v6): + ::1%1 ::1%1 UH 1 677032 lo0 - - => NETSTAT_RN @ifconfig = <<~IFCONFIG diff --git a/spec/unit/plugins/c_spec.rb b/spec/unit/plugins/c_spec.rb index 319bc476..e295e0ca 100644 --- a/spec/unit/plugins/c_spec.rb +++ b/spec/unit/plugins/c_spec.rb @@ -1,4 +1,3 @@ - # Author:: Doug MacEachern # Copyright:: Copyright (c) 2010 VMware, Inc. # License:: Apache License, Version 2.0 diff --git a/spec/unit/plugins/chef_spec.rb b/spec/unit/plugins/chef_spec.rb index 9199adc3..2584a278 100644 --- a/spec/unit/plugins/chef_spec.rb +++ b/spec/unit/plugins/chef_spec.rb @@ -33,7 +33,6 @@ begin pending "would set [:chef_packages][:chef][:version] if chef was available", unless: defined?(Chef) end - rescue LoadError # the chef module is not available, ignoring. diff --git a/spec/unit/plugins/docker_spec.rb b/spec/unit/plugins/docker_spec.rb index c3105048..781b1f97 100644 --- a/spec/unit/plugins/docker_spec.rb +++ b/spec/unit/plugins/docker_spec.rb @@ -40,12 +40,13 @@ expected_output = { "local", ], "Network" => %w{ -bridge -host -ipvlan -macvlan -null -overlay}, + bridge + host + ipvlan + macvlan + null + overlay + }, "Authorization" => nil, "Log" => %w{ awslogs diff --git a/spec/unit/plugins/linux/network_spec.rb b/spec/unit/plugins/linux/network_spec.rb index 978160bb..744fafa8 100644 --- a/spec/unit/plugins/linux/network_spec.rb +++ b/spec/unit/plugins/linux/network_spec.rb @@ -720,7 +720,7 @@ describe Ohai::System, "Linux Network Plugin" do end it "detects the ipv6 addresses of an ethernet subinterface" do - %w{ 1111:2222:3333:4444::2 1111:2222:3333:4444::3 }.each do |addr| + %w{1111:2222:3333:4444::2 1111:2222:3333:4444::3}.each do |addr| expect(plugin["network"]["interfaces"]["eth0.11"]["addresses"].keys).to include(addr) expect(plugin["network"]["interfaces"]["eth0.11"]["addresses"][addr]["scope"]).to eq("Global") expect(plugin["network"]["interfaces"]["eth0.11"]["addresses"][addr]["prefixlen"]).to eq("64") diff --git a/spec/unit/plugins/linux/selinux_spec.rb b/spec/unit/plugins/linux/selinux_spec.rb index 6f8ceef4..dd642b30 100644 --- a/spec/unit/plugins/linux/selinux_spec.rb +++ b/spec/unit/plugins/linux/selinux_spec.rb @@ -26,35 +26,35 @@ describe Ohai::System, "Linux selinux plugin" do end it "populates selinux if sestatus is found" do - sestatus_out = <<-SESTATUS_OUT -SELinux status: enabled -SELinuxfs mount: /sys/fs/selinux -SELinux root directory: /etc/selinux -Loaded policy name: test -Current mode: permissive -Mode from config file: permissive -Policy MLS status: disabled -Policy deny_unknown status: allowed -Max kernel policy version: 31 + sestatus_out = <<~SESTATUS_OUT + SELinux status: enabled + SELinuxfs mount: /sys/fs/selinux + SELinux root directory: /etc/selinux + Loaded policy name: test + Current mode: permissive + Mode from config file: permissive + Policy MLS status: disabled + Policy deny_unknown status: allowed + Max kernel policy version: 31 -Policy booleans: -secure_mode_policyload off + Policy booleans: + secure_mode_policyload off -Process contexts: -Current context: user_u:base_r:admin_t -Init context: system_u:system_r:init_t -/usr/sbin/sshd system_u:base_r:base_t + Process contexts: + Current context: user_u:base_r:admin_t + Init context: system_u:system_r:init_t + /usr/sbin/sshd system_u:base_r:base_t -File contexts: -Controlling terminal: system_u:object_r:file_t -/etc/passwd user_u:object_r:file_t -/etc/shadow user_u:object_r:file_t -/bin/bash user_u:object_r:file_t -/bin/login user_u:object_r:file_t -/bin/sh user_u:object_r:file_t -> user_u:object_r:file_t -/sbin/agetty user_u:object_r:file_t -/sbin/init user_u:object_r:file_t -> user_u:object_r:init_exec_t -/usr/sbin/sshd user_u:object_r:file_t + File contexts: + Controlling terminal: system_u:object_r:file_t + /etc/passwd user_u:object_r:file_t + /etc/shadow user_u:object_r:file_t + /bin/bash user_u:object_r:file_t + /bin/login user_u:object_r:file_t + /bin/sh user_u:object_r:file_t -> user_u:object_r:file_t + /sbin/agetty user_u:object_r:file_t + /sbin/init user_u:object_r:file_t -> user_u:object_r:init_exec_t + /usr/sbin/sshd user_u:object_r:file_t SESTATUS_OUT allow(plugin).to receive(:which).with("sestatus").and_return("/usr/sbin/sestatus") allow(plugin).to receive(:shell_out).with("/usr/sbin/sestatus -v -b").and_return(mock_shell_out(0, sestatus_out, "")) diff --git a/spec/unit/plugins/packages_spec.rb b/spec/unit/plugins/packages_spec.rb index 0406aaac..cc658bff 100644 --- a/spec/unit/plugins/packages_spec.rb +++ b/spec/unit/plugins/packages_spec.rb @@ -190,10 +190,10 @@ describe Ohai::System, "plugin packages" do "Publisher" => "nxsec.com", "InstallDate" => "20150511", }, - { "DisplayName" => "Chef Development Kit v0.7.0", - "DisplayVersion" => "0.7.0.1", - "Publisher" => "\"Chef Software, Inc. \"", - "InstallDate" => "20150925" }] + { "DisplayName" => "Chef Development Kit v0.7.0", + "DisplayVersion" => "0.7.0.1", + "Publisher" => "\"Chef Software, Inc. \"", + "InstallDate" => "20150925" }] end shared_examples "windows_package_plugin" do diff --git a/spec/unit/plugins/shard_spec.rb b/spec/unit/plugins/shard_spec.rb index f0da5fb5..b0f3b154 100644 --- a/spec/unit/plugins/shard_spec.rb +++ b/spec/unit/plugins/shard_spec.rb @@ -119,7 +119,7 @@ describe Ohai::System, "shard plugin" do let(:os) { "aix" } it "provides a shard with a default-safe set of sources" do - # Note: this is different than the other defaults. + # NOTE: this is different than the other defaults. expect(subject).to eq(253499154) end end diff --git a/spec/unit/plugins/solaris2/network_spec.rb b/spec/unit/plugins/solaris2/network_spec.rb index 07151ce7..9bbf300c 100644 --- a/spec/unit/plugins/solaris2/network_spec.rb +++ b/spec/unit/plugins/solaris2/network_spec.rb @@ -177,7 +177,7 @@ describe Ohai::System, "Solaris2.X network plugin" do end it "finds the flags for a PHYSRUNNING interface" do - expect(@plugin[:network][:interfaces]["net1:1"][:flags]).to eq(%w{ UP BROADCAST RUNNING MULTICAST IPv4 PHYSRUNNING }) + expect(@plugin[:network][:interfaces]["net1:1"][:flags]).to eq(%w{UP BROADCAST RUNNING MULTICAST IPv4 PHYSRUNNING}) end it "finds the default interface for a solaris 11 zone" do -- cgit v1.2.1 From 2ae04e544f05e448b283355c865053456f6d242f Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Mon, 23 Nov 2020 20:09:19 -0800 Subject: Fix XLC compiler detection to support 3 part version numbers Add a spec with the newer XLC output from our build systems. Signed-off-by: Tim Smith --- spec/unit/plugins/c_spec.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'spec') diff --git a/spec/unit/plugins/c_spec.rb b/spec/unit/plugins/c_spec.rb index e295e0ca..0b895291 100644 --- a/spec/unit/plugins/c_spec.rb +++ b/spec/unit/plugins/c_spec.rb @@ -65,6 +65,11 @@ C_XLC = <<~EOF.freeze Version: 09.00.0000.0000 EOF +C_XLC_NEWER = <<~EOF.freeze + IBM XL C/C++ for AIX, V13.1.3 (5725-C72, 5765-J07) + Version: 13.01.0003.0000 +EOF + C_SUN = <<~EOF.freeze cc: Sun C 5.8 Patch 121016-06 2007/08/01 EOF @@ -108,6 +113,13 @@ describe Ohai::System, "plugin c" do expect(plugin[:languages][:c]).not_to have_key(:xlc) end + it "properly parses 3 part version numbers in newer XLC releases" do + expect(plugin).to receive(:shell_out).with("xlc -qversion").and_return(mock_shell_out(0, C_XLC_NEWER, "")) + plugin.run + expect(plugin.languages[:c][:xlc][:version]).to eql("13.1.3") + expect(plugin.languages[:c][:xlc][:description]).to eql("IBM XL C/C++ for AIX, V13.1.3 (5725-C72, 5765-J07)") + end + it "does not set the languages[:c][:xlc] tree up if xlc command fails" do allow(plugin).to receive(:shell_out).with("xlc -qversion").and_raise(Ohai::Exceptions::Exec) plugin.run -- cgit v1.2.1 From a81624c0debe6ed3dbf4d4f150eacdfdb60198a3 Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Mon, 23 Nov 2020 20:22:05 -0800 Subject: Prevent docker plugin crashes on AIX AIX lacks node['virtualization']['systems'] like every other OS so we need to be a bit more defensive here. Just skip running this plugin entirely on platforms without Docker Signed-off-by: Tim Smith --- spec/unit/plugins/docker_spec.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'spec') diff --git a/spec/unit/plugins/docker_spec.rb b/spec/unit/plugins/docker_spec.rb index 781b1f97..5816bc37 100644 --- a/spec/unit/plugins/docker_spec.rb +++ b/spec/unit/plugins/docker_spec.rb @@ -78,10 +78,14 @@ expected_output = { describe Ohai::System, "plugin docker" do let(:plugin) { get_plugin("docker") } + before do + plugin[:virtualization] = Mash.new + plugin[:virtualization][:systems] = Mash.new + allow(plugin).to receive(:collect_os).and_return(:linux) + end + context "without docker installed" do it "does not create a docker attribute" do - plugin[:virtualization] = Mash.new - plugin[:virtualization][:systems] = Mash.new plugin.run expect(plugin).not_to have_key(:docker) end @@ -89,8 +93,6 @@ describe Ohai::System, "plugin docker" do context "with docker installed" do it "creates a docker attribute with correct data" do - plugin[:virtualization] = Mash.new - plugin[:virtualization][:systems] = Mash.new plugin[:virtualization][:systems][:docker] = "host" allow(plugin).to receive(:shell_out).with("docker info --format '{{json .}}'").and_return(mock_shell_out(0, docker_output, "")) plugin.run -- cgit v1.2.1 From 9c6256d28c316c7196ac1ee3daebbe9dbc6eefd6 Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Mon, 23 Nov 2020 21:17:57 -0800 Subject: Limit several of the Cloud/VM plugins to certain platforms Running these on platforms these hypervisors / clouds don't support is pointless and in the case of scaleway it crashes on at least AIX. I went off the list of platforms these clouds / hypervisors support. Signed-off-by: Tim Smith --- spec/unit/plugins/digital_ocean_spec.rb | 1 + spec/unit/plugins/linode_spec.rb | 1 + spec/unit/plugins/scaleway_spec.rb | 1 + 3 files changed, 3 insertions(+) (limited to 'spec') diff --git a/spec/unit/plugins/digital_ocean_spec.rb b/spec/unit/plugins/digital_ocean_spec.rb index 280668c8..ed1d55a4 100644 --- a/spec/unit/plugins/digital_ocean_spec.rb +++ b/spec/unit/plugins/digital_ocean_spec.rb @@ -35,6 +35,7 @@ describe Ohai::System, "plugin digital_ocean" do end before do + allow(plugin).to receive(:collect_os).and_return(:linux) allow(plugin).to receive(:hint?).with("digital_ocean").and_return(false) end diff --git a/spec/unit/plugins/linode_spec.rb b/spec/unit/plugins/linode_spec.rb index 75d1a933..ae5c2508 100644 --- a/spec/unit/plugins/linode_spec.rb +++ b/spec/unit/plugins/linode_spec.rb @@ -21,6 +21,7 @@ describe Ohai::System, "plugin linode" do let(:plugin) { get_plugin("linode") } before do + allow(plugin).to receive(:collect_os).and_return(:linux) plugin[:network] = { "interfaces" => { "eth0" => { diff --git a/spec/unit/plugins/scaleway_spec.rb b/spec/unit/plugins/scaleway_spec.rb index 1869322a..238cd51d 100644 --- a/spec/unit/plugins/scaleway_spec.rb +++ b/spec/unit/plugins/scaleway_spec.rb @@ -21,6 +21,7 @@ describe Ohai::System, "plugin scaleway" do let(:plugin) { get_plugin("scaleway") } before do + allow(plugin).to receive(:collect_os).and_return(:linux) allow(plugin).to receive(:hint?).with("scaleway").and_return(false) allow(plugin).to receive(:file_exist?).with("/proc/cmdline").and_return(false) end -- cgit v1.2.1 From d731d765232e20d3d0769615522fe48df0208ecc Mon Sep 17 00:00:00 2001 From: Tim Smith Date: Fri, 27 Nov 2020 11:08:43 -0800 Subject: Update Linode plugin to use domain / apt data to detect Linode The current Linode plugin doesn't work at all. They no longer roll custom kernels so the kernel name detection doesn't ever fire. Instead we can look at the domain to see if it includes linode on RHEL boxes on check the apt sources on Debian/Ubuntu boxes. Signed-off-by: Tim Smith --- spec/unit/plugins/linode_spec.rb | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'spec') diff --git a/spec/unit/plugins/linode_spec.rb b/spec/unit/plugins/linode_spec.rb index ae5c2508..a591b564 100644 --- a/spec/unit/plugins/linode_spec.rb +++ b/spec/unit/plugins/linode_spec.rb @@ -20,8 +20,12 @@ require "spec_helper" describe Ohai::System, "plugin linode" do let(:plugin) { get_plugin("linode") } + let(:apt_sources) { "# \n\n# deb cdrom:[Ubuntu-Server 20.04.1 LTS _Focal Fossa_ - Release amd64 (20200731)]/ focal main restricted\n\n#deb cdrom:[Ubuntu-Server 20.04.1 LTS _Focal Fossa_ - Release amd64 (20200731)]/ focal main restricted\n\n# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to\n# newer versions of the distribution.\ndeb http://mirrors.linode.com/ubuntu/ focal main restricted\n# deb-src http://mirrors.linode.com/ubuntu/ focal main restricted\n\n## Major bug fix updates produced after the final release of the\n## distribution.\ndeb http://mirrors.linode.com/ubuntu/ focal-updates main restricted\n# deb-src http://mirrors.linode.com/ubuntu/ focal-updates main restricted\n\n## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu\n## team. Also, please note that software in universe WILL NOT receive any\n## review or updates from the Ubuntu security team.\ndeb http://mirrors.linode.com/ubuntu/ focal universe\n# deb-src http://mirrors.linode.com/ubuntu/ focal universe\ndeb http://mirrors.linode.com/ubuntu/ focal-updates universe\n# deb-src http://mirrors.linode.com/ubuntu/ focal-updates universe\n\n## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu \n## team, and may not be under a free licence. Please satisfy yourself as to \n## your rights to use the software. Also, please note that software in \n## multiverse WILL NOT receive any review or updates from the Ubuntu\n## security team.\ndeb http://mirrors.linode.com/ubuntu/ focal multiverse\n# deb-src http://mirrors.linode.com/ubuntu/ focal multiverse\ndeb http://mirrors.linode.com/ubuntu/ focal-updates multiverse\n# deb-src http://mirrors.linode.com/ubuntu/ focal-updates multiverse\n\n## N.B. software from this repository may not have been tested as\n## extensively as that contained in the main release, although it includes\n## newer versions of some applications which may provide useful features.\n## Also, please note that software in backports WILL NOT receive any review\n## or updates from the Ubuntu security team.\ndeb http://mirrors.linode.com/ubuntu/ focal-backports main restricted universe multiverse\n# deb-src http://mirrors.linode.com/ubuntu/ focal-backports main restricted universe multiverse\n\n## Uncomment the following two lines to add software from Canonical's\n## 'partner' repository.\n## This software is not part of Ubuntu, but is offered by Canonical and the\n## respective vendors as a service to Ubuntu users.\n# deb http://archive.canonical.com/ubuntu focal partner\n# deb-src http://archive.canonical.com/ubuntu focal partner\n\ndeb http://security.ubuntu.com/ubuntu focal-security main restricted\n# deb-src http://security.ubuntu.com/ubuntu focal-security main restricted\ndeb http://security.ubuntu.com/ubuntu focal-security universe\n# deb-src http://security.ubuntu.com/ubuntu focal-security universe\ndeb http://security.ubuntu.com/ubuntu focal-security multiverse\n# deb-src http://security.ubuntu.com/ubuntu focal-security multiverse\n\n# This system was installed using small removable media\n# (e.g. netinst, live or single CD). The matching \"deb cdrom\"\n# entries were disabled at the end of the installation process.\n# For information about how to configure apt package sources,\n# see the sources.list(5) manual.\n" } + before do allow(plugin).to receive(:collect_os).and_return(:linux) + allow(plugin).to receive(:file_exist?).with("/etc/apt/sources.list").and_return(false) + plugin[:domain] = "nope.example.com" plugin[:network] = { "interfaces" => { "eth0" => { @@ -70,17 +74,13 @@ describe Ohai::System, "plugin linode" do end - context "without linode kernel" do - before do - plugin[:kernel] = { "release" => "3.5.2-x86_64" } - end - + context "without linode domain or apt data" do it_behaves_like "!linode" end - context "with linode kernel" do + context "with linode domain" do before do - plugin[:kernel] = { "release" => "3.5.2-x86_64-linode24" } + plugin[:domain] = "members.linode.com" end it_behaves_like "linode" @@ -117,6 +117,15 @@ describe Ohai::System, "plugin linode" do end + describe "with linode apt sources" do + before do + allow(plugin).to receive(:file_exist?).with("/etc/apt/sources.list").and_return(true) + allow(plugin).to receive(:file_read).with("/etc/apt/sources.list").and_return(apt_sources) + end + + it_behaves_like "linode" + end + describe "with linode hint file" do before do allow(plugin).to receive(:hint?).with("linode").and_return({}) -- cgit v1.2.1 From 6df8966707bf8a2436188c95e61bea7afe838b9c Mon Sep 17 00:00:00 2001 From: Davide Cavalca Date: Fri, 4 Dec 2020 13:36:17 -0800 Subject: grub2: add plugin to expose GRUB2 environment variables Signed-off-by: Davide Cavalca --- spec/unit/plugins/grub2_spec.rb | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 spec/unit/plugins/grub2_spec.rb (limited to 'spec') diff --git a/spec/unit/plugins/grub2_spec.rb b/spec/unit/plugins/grub2_spec.rb new file mode 100644 index 00000000..03fae9cd --- /dev/null +++ b/spec/unit/plugins/grub2_spec.rb @@ -0,0 +1,51 @@ +# +# Author:: Davide Cavalca +# Copyright:: Copyright (c) 2020 Facebook +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require "spec_helper" + +describe Ohai::System, "grub2 plugin" do + let(:plugin) { get_plugin("grub2") } + + before do + allow(plugin).to receive(:collect_os).and_return(:linux) + end + + it "populates grub2 if grub2-editenv is found" do + editenv_out = <<-EDITENV_OUT +saved_entry=f4fd6be6243646e1a76a42d50f219818-5.2.9-229 +boot_success=1 +kernelopts=root=UUID=6db0ffcd-70ec-4333-86c3-873a9e2a0d77 ro + EDITENV_OUT + allow(plugin).to receive(:which).with("grub2-editenv").and_return("/bin/grub2-editenv") + allow(plugin).to receive(:shell_out).with("/bin/grub2-editenv list").and_return(mock_shell_out(0, editenv_out, "")) + plugin.run + expect(plugin[:grub2].to_hash).to eq({ + "environment" => { + "saved_entry" => "f4fd6be6243646e1a76a42d50f219818-5.2.9-229", + "boot_success" => "1", + "kernelopts" => "root=UUID=6db0ffcd-70ec-4333-86c3-873a9e2a0d77 ro", + }, + }) + end + + it "does not populate grub2 if grub2-editenv is not found" do + allow(plugin).to receive(:which).with("grub2-editenv").and_return(false) + plugin.run + expect(plugin[:grub2]).to be(nil) + end +end -- cgit v1.2.1