linux_admin 1.2.1 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/linux_admin.rb +0 -8
  4. data/lib/linux_admin/chrony.rb +1 -0
  5. data/lib/linux_admin/disk.rb +31 -7
  6. data/lib/linux_admin/fstab.rb +29 -14
  7. data/lib/linux_admin/partition.rb +1 -1
  8. data/lib/linux_admin/registration_system.rb +8 -4
  9. data/lib/linux_admin/scap.rb +1 -1
  10. data/lib/linux_admin/service/sys_v_init_service.rb +2 -1
  11. data/lib/linux_admin/service/systemd_service.rb +6 -2
  12. data/lib/linux_admin/version.rb +1 -1
  13. metadata +36 -120
  14. data/lib/linux_admin/registration_system/rhn.rb +0 -111
  15. data/spec/chrony_spec.rb +0 -64
  16. data/spec/common_spec.rb +0 -37
  17. data/spec/data/rhn/output_rhn-channel_list +0 -2
  18. data/spec/data/rhn/output_rhn-channel_list_available +0 -4
  19. data/spec/data/rhn/systemid +0 -57
  20. data/spec/data/rhn/systemid.missing_system_id +0 -57
  21. data/spec/data/rpm/cmd_output_for_list_installed +0 -20
  22. data/spec/data/subscription_manager/output_list_all_available +0 -42
  23. data/spec/data/subscription_manager/output_list_installed_not_subscribed +0 -19
  24. data/spec/data/subscription_manager/output_list_installed_subscribed +0 -19
  25. data/spec/data/subscription_manager/output_orgs +0 -6
  26. data/spec/data/subscription_manager/output_repos +0 -18
  27. data/spec/data/time_date/timedatectl_output +0 -14
  28. data/spec/data/yum/first.repo +0 -19
  29. data/spec/data/yum/output_repo_list +0 -13
  30. data/spec/data/yum/output_repoquery_multiple +0 -3
  31. data/spec/data/yum/output_repoquery_single +0 -1
  32. data/spec/data/yum/second.repo +0 -9
  33. data/spec/deb_spec.rb +0 -52
  34. data/spec/disk_spec.rb +0 -244
  35. data/spec/distro_spec.rb +0 -77
  36. data/spec/dns_spec.rb +0 -105
  37. data/spec/etc_issue_spec.rb +0 -37
  38. data/spec/fstab_spec.rb +0 -66
  39. data/spec/hardware_spec.rb +0 -46
  40. data/spec/hosts_spec.rb +0 -150
  41. data/spec/ip_address_spec.rb +0 -148
  42. data/spec/logical_volume_spec.rb +0 -166
  43. data/spec/mountable_spec.rb +0 -182
  44. data/spec/network_interface/network_interface_rh_spec.rb +0 -291
  45. data/spec/network_interface_spec.rb +0 -284
  46. data/spec/partition_spec.rb +0 -24
  47. data/spec/physical_volume_spec.rb +0 -101
  48. data/spec/registration_system_spec.rb +0 -85
  49. data/spec/rhn_spec.rb +0 -144
  50. data/spec/rpm_spec.rb +0 -85
  51. data/spec/scap_spec.rb +0 -48
  52. data/spec/service/sys_v_init_service_spec.rb +0 -127
  53. data/spec/service/systemd_service_spec.rb +0 -133
  54. data/spec/service_spec.rb +0 -54
  55. data/spec/spec_helper.rb +0 -116
  56. data/spec/ssh_spec.rb +0 -53
  57. data/spec/subscription_manager_spec.rb +0 -228
  58. data/spec/system_spec.rb +0 -15
  59. data/spec/time_date_spec.rb +0 -106
  60. data/spec/volume_group_spec.rb +0 -99
  61. data/spec/yum_spec.rb +0 -155
@@ -1,6 +0,0 @@
1
- +-------------------------------------------+
2
- myUser Organizations
3
- +-------------------------------------------+
4
-
5
- Name: SomeOrg
6
- Key: 1234567
@@ -1,18 +0,0 @@
1
- +----------------------------------------------------------+
2
- Available Repositories in /etc/yum.repos.d/redhat.repo
3
- +----------------------------------------------------------+
4
- Repo ID: some-repo-source-rpms
5
- Repo Name: Some Repo (Source RPMs)
6
- Repo URL: https://my.host.example.com/repos/some-repo/source/rpms
7
- Enabled: 1
8
-
9
- Repo ID: some-repo-rpms
10
- Repo Name: Some Repo
11
- Repo URL: https://my.host.example.com/repos/some-repo/rpms
12
- Enabled: 1
13
-
14
- Repo ID: some-repo-2-beta-rpms
15
- Repo Name: Some Repo (Beta RPMs)
16
- Repo URL: https://my.host.example.com/repos/some-repo-2/beta/rpms
17
- Enabled: 0
18
-
@@ -1,14 +0,0 @@
1
- Local time: Thu 2015-09-24 17:54:02 EDT
2
- Universal time: Thu 2015-09-24 21:54:02 UTC
3
- RTC time: Thu 2015-09-24 21:54:02
4
- Time zone: America/New_York (EDT, -0400)
5
- NTP enabled: yes
6
- NTP synchronized: yes
7
- RTC in local TZ: no
8
- DST active: yes
9
- Last DST change: DST began at
10
- Sun 2015-03-08 01:59:59 EST
11
- Sun 2015-03-08 03:00:00 EDT
12
- Next DST change: DST ends (the clock jumps one hour backwards) at
13
- Sun 2015-11-01 01:59:59 EDT
14
- Sun 2015-11-01 01:00:00 EST
@@ -1,19 +0,0 @@
1
- [my-local-repo-a]
2
- name = My Local Repo A
3
- baseurl = https://mirror.example.com/a/content/os_ver
4
- enabled = 0
5
- gpgcheck = 1
6
- gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-my-local-server
7
- sslverify = 1
8
- sslcacert = /etc/rhsm/ca/my-loacl-server.pem
9
- sslclientkey = /etc/pki/entitlement/0123456789012345678-key.pem
10
- sslclientcert = /etc/pki/entitlement/0123456789012345678.pem
11
- metadata_expire = 86400
12
-
13
- [my-local-repo-b]
14
- name = My Local Repo B
15
- baseurl = https://mirror.example.com/b/content/os_ver
16
- enabled = 1
17
- gpgcheck = 0
18
- sslverify = 0
19
- metadata_expire = 86400
@@ -1,13 +0,0 @@
1
- Loaded plugins: product-id, rhnplugin, security, subscription-manager
2
- This system is receiving updates from Red Hat Subscription Management.
3
- This system is not registered with RHN Classic or RHN Satellite.
4
- You can use rhn_register to register.
5
- RHN Satellite or RHN Classic support will be disabled.
6
- rhel-6-server-rpms | 3.7 kB 00:00
7
- rhel-ha-for-rhel-6-server-rpms | 3.7 kB 00:00
8
- rhel-lb-for-rhel-6-server-rpms | 3.7 kB 00:00
9
- repo id repo name status
10
- rhel-6-server-rpms Red Hat Enterprise Linux 6 Server (RPMs) 11,016
11
- rhel-ha-for-rhel-6-server-rpms Red Hat Enterprise Linux High Availability (for RHEL 6 Server) (RPMs) 269
12
- rhel-lb-for-rhel-6-server-rpms Red Hat Enterprise Linux Load Balancer (for RHEL 6 Server) (RPMs) 0
13
- repolist: 11,909
@@ -1,3 +0,0 @@
1
- curl 7.19.7
2
- subscription-manager 1.1.23.1
3
- wget 1.12
@@ -1 +0,0 @@
1
- subscription-manager 1.1.23.1
@@ -1,9 +0,0 @@
1
- [my-local-repo-c]
2
- name=My Local Repo c
3
- baseurl=https://mirror.example.com/c/content/os_ver
4
- enabled=0
5
- cost=100
6
- gpgcheck=1
7
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-my-local-server
8
- sslverify=0
9
- metadata_expire=1
@@ -1,52 +0,0 @@
1
- describe LinuxAdmin::Deb do
2
- describe "#info" do
3
- it "returns package metadata" do
4
- # as output w/ apt-cache show ruby on ubuntu 13.04
5
- data = <<EOS
6
- Package: ruby
7
- Priority: optional
8
- Section: interpreters
9
- Installed-Size: 31
10
- Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
11
- Original-Maintainer: akira yamada <akira@debian.org>
12
- Architecture: all
13
- Source: ruby-defaults
14
- Version: 4.9
15
- Replaces: irb, rdoc
16
- Provides: irb, rdoc
17
- Depends: ruby1.9.1 (>= 1.9.3.194-1)
18
- Suggests: ri, ruby-dev
19
- Conflicts: irb, rdoc
20
- Filename: pool/main/r/ruby-defaults/ruby_4.9_all.deb
21
- Size: 4896
22
- MD5sum: b1991f2e0eafb04f5930ed242cfe1476
23
- SHA1: a7c55fbb83dd8382631ea771b5555d989351f840
24
- SHA256: 84d042e0273bd2f0082dd9e7dda0246267791fd09607041a35485bfff92f38d9
25
- Description-en: Interpreter of object-oriented scripting language Ruby (default version)
26
- Ruby is the interpreted scripting language for quick and easy
27
- object-oriented programming. It has many features to process text
28
- files and to do system management tasks (as in perl). It is simple,
29
- straight-forward, and extensible.
30
- .
31
- This package is a dependency package, which depends on Debian's default Ruby
32
- version (currently v1.9.3).
33
- Homepage: http://www.ruby-lang.org/
34
- Description-md5: da2991b37e3991230d79ba70f9c01682
35
- Bugs: https://bugs.launchpad.net/ubuntu/+filebug
36
- Origin: Ubuntu
37
- Supported: 9m
38
- Task: kubuntu-desktop, kubuntu-full, kubuntu-active, kubuntu-active-desktop, kubuntu-active-full, kubuntu-active, edubuntu-desktop-gnome, ubuntustudio-font-meta
39
- EOS
40
- expect(LinuxAdmin::Common).to receive(:run!)
41
- .with(described_class::APT_CACHE_CMD, :params => %w(show ruby))
42
- .and_return(double(:output => data))
43
- metadata = described_class.info("ruby")
44
- expect(metadata['package']).to eq('ruby')
45
- expect(metadata['priority']).to eq('optional')
46
- expect(metadata['section']).to eq('interpreters')
47
- expect(metadata['architecture']).to eq('all')
48
- expect(metadata['version']).to eq('4.9')
49
- expect(metadata['origin']).to eq('Ubuntu')
50
- end
51
- end
52
- end
@@ -1,244 +0,0 @@
1
- describe LinuxAdmin::Disk do
2
- describe "#local" do
3
- it "returns local disks" do
4
- expect(Dir).to receive(:glob).with(['/dev/[vhs]d[a-z]', '/dev/xvd[a-z]']).
5
- and_return(['/dev/hda', '/dev/sda'])
6
- disks = LinuxAdmin::Disk.local
7
- paths = disks.collect { |disk| disk.path }
8
- expect(paths).to include('/dev/hda')
9
- expect(paths).to include('/dev/sda')
10
- end
11
- end
12
-
13
- describe "#size" do
14
- it "uses fdisk" do
15
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
16
- expect(LinuxAdmin::Common).to receive(:run!)
17
- .with(LinuxAdmin::Common.cmd(:fdisk),
18
- :params => {"-l" => nil})
19
- .and_return(double(:output => ""))
20
- disk.size
21
- end
22
-
23
- it "returns disk size" do
24
- fdisk = <<eos
25
- Disk /dev/hda: 500.1 GB, 500107862016 bytes
26
- 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
27
- Units = sectors of 1 * 512 = 512 bytes
28
- Sector size (logical/physical): 512 bytes / 512 bytes
29
- I/O size (minimum/optimal): 512 bytes / 512 bytes
30
- Disk identifier: 0x3ddb508b
31
-
32
- Device Boot Start End Blocks Id System
33
- 1 1259MB 81.8GB 80.5GB primary ntfs
34
- 2 81.8GB 162GB 80.5GB primary ext4
35
- 3 162GB 163GB 1074MB logical linux-swap(v1)
36
- eos
37
-
38
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
39
- allow(LinuxAdmin::Common).to receive(:run!).and_return(double(:output => fdisk))
40
- expect(disk.size).to eq(500_107_862_016)
41
- end
42
- end
43
-
44
- describe "#partitions" do
45
- it "uses parted" do
46
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
47
- expect(LinuxAdmin::Common).to receive(:run)
48
- .with(LinuxAdmin::Common.cmd(:parted),
49
- :params => {nil => %w(--script /dev/hda print)}).and_return(double(:output => ""))
50
- disk.partitions
51
- end
52
-
53
- it "returns [] on non-zero parted rc" do
54
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
55
- expect(LinuxAdmin::Common).to receive(:run).and_return(double(:output => "", :exit_status => 1))
56
- expect(disk.partitions).to eq([])
57
- end
58
-
59
- it "sets partitons" do
60
- partitions = <<eos
61
- Model: ATA TOSHIBA MK5061GS (scsi)
62
- Disk /dev/sda: 500GB
63
- Sector size (logical/physical): 512B/512B
64
- Partition Table: msdos
65
- Disk Flags:
66
-
67
- Number Start End Size Type File system Flags
68
- 1 1259MB 81.8GB 80.5GB primary ntfs
69
- 2 81.8GB 162GB 80.5GB primary ext4
70
- 3 162GB 163GB 1074MB logical linux-swap(v1)
71
- eos
72
- disk = LinuxAdmin::Disk.new
73
- expect(LinuxAdmin::Common).to receive(:run).and_return(double(:output => partitions))
74
-
75
- expect(disk.partitions[0].id).to eq(1)
76
- expect(disk.partitions[0].disk).to eq(disk)
77
- expect(disk.partitions[0].size).to eq(86_436_216_832.0) # 80.5.gigabytes
78
- expect(disk.partitions[0].start_sector).to eq(1_320_157_184) # 1259.megabytes
79
- expect(disk.partitions[0].end_sector).to eq(87_832_081_203.2) # 81.8.gigabytes
80
- expect(disk.partitions[0].partition_type).to eq('primary')
81
- expect(disk.partitions[0].fs_type).to eq('ntfs')
82
- expect(disk.partitions[1].id).to eq(2)
83
- expect(disk.partitions[1].disk).to eq(disk)
84
- expect(disk.partitions[1].size).to eq(86_436_216_832.0) # 80.5.gigabytes
85
- expect(disk.partitions[1].start_sector).to eq(87_832_081_203.2) # 81.8.gigabytes
86
- expect(disk.partitions[1].end_sector).to eq(173_946_175_488) # 162.gigabytes
87
- expect(disk.partitions[1].partition_type).to eq('primary')
88
- expect(disk.partitions[1].fs_type).to eq('ext4')
89
- expect(disk.partitions[2].id).to eq(3)
90
- expect(disk.partitions[2].disk).to eq(disk)
91
- expect(disk.partitions[2].size).to eq(1_126_170_624) # 1074.megabytes
92
- expect(disk.partitions[2].start_sector).to eq(173_946_175_488) # 162.gigabytes
93
- expect(disk.partitions[2].end_sector).to eq(175_019_917_312) # 163.gigabytes
94
- expect(disk.partitions[2].partition_type).to eq('logical')
95
- expect(disk.partitions[2].fs_type).to eq('linux-swap(v1)')
96
- end
97
- end
98
-
99
- describe "#create_partitions" do
100
- before(:each) do
101
- @disk = LinuxAdmin::Disk.new(:path => '/dev/hda')
102
- end
103
-
104
- it "dispatches to create_partition" do
105
- expect(@disk).to receive(:create_partition).with("primary", "0%", "50%")
106
- @disk.create_partitions "primary", :start => "0%", :end => "50%"
107
- end
108
-
109
- context "multiple partitions specified" do
110
- it "calls create_partition for each partition" do
111
- expect(@disk).to receive(:create_partition).with("primary", "0%", "49%")
112
- expect(@disk).to receive(:create_partition).with("primary", "50%", "100%")
113
- @disk.create_partitions("primary", {:start => "0%", :end => "49%"},
114
- {:start => "50%", :end => "100%"})
115
- end
116
-
117
- context "partitions overlap" do
118
- it "raises argument error" do
119
- expect{
120
- @disk.create_partitions("primary", {:start => "0%", :end => "50%"},
121
- {:start => "49%", :end => "100%"})
122
- }.to raise_error(ArgumentError)
123
- end
124
- end
125
- end
126
- end
127
-
128
- describe "#create_partition" do
129
- before(:each) do
130
- # test disk w/ existing partition
131
- @disk = LinuxAdmin::Disk.new :path => '/dev/hda'
132
- @disk.instance_variable_set(:@partitions,
133
- [LinuxAdmin::Partition.new(:id => 1,
134
- :end_sector => 1024)])
135
- allow(@disk).to receive_messages(:has_partition_table? => true)
136
- end
137
-
138
- it "uses parted" do
139
- params = ['--script', '/dev/hda', 'mkpart', '-a', 'opt', 'primary', 1024, 2048]
140
- expect(LinuxAdmin::Common).to receive(:run!).with(LinuxAdmin::Common.cmd(:parted), :params => {nil => params})
141
- @disk.create_partition 'primary', 1024
142
- end
143
-
144
- it "accepts start/end params" do
145
- params = ['--script', '/dev/hda', 'mkpart', '-a', 'opt', 'primary', "0%", "50%"]
146
- expect(LinuxAdmin::Common).to receive(:run!).with(LinuxAdmin::Common.cmd(:parted), :params => {nil => params})
147
- @disk.create_partition 'primary', "0%", "50%"
148
- end
149
-
150
- context "missing params" do
151
- it "raises ArgumentError" do
152
- expect{
153
- @disk.create_partition 'primary'
154
- }.to raise_error(ArgumentError)
155
-
156
- expect{
157
- @disk.create_partition 'primary', '0%', '50%', 100
158
- }.to raise_error(ArgumentError)
159
- end
160
- end
161
-
162
- it "returns partition" do
163
- expect(LinuxAdmin::Common).to receive(:run!) # stub out call to parted
164
- partition = @disk.create_partition 'primary', 1024
165
- expect(partition).to be_an_instance_of(LinuxAdmin::Partition)
166
- end
167
-
168
- it "increments partition id" do
169
- expect(LinuxAdmin::Common).to receive(:run!) # stub out call to parted
170
- partition = @disk.create_partition 'primary', 1024
171
- expect(partition.id).to eq(2)
172
- end
173
-
174
- it "sets partition start to first unused sector on disk" do
175
- expect(LinuxAdmin::Common).to receive(:run!) # stub out call to parted
176
- partition = @disk.create_partition 'primary', 1024
177
- expect(partition.start_sector).to eq(1024)
178
- end
179
-
180
- it "stores new partition locally" do
181
- expect(LinuxAdmin::Common).to receive(:run!) # stub out call to parted
182
- expect {
183
- @disk.create_partition 'primary', 1024
184
- }.to change{@disk.partitions.size}.by(1)
185
- end
186
-
187
- it "creates partition table if missing" do
188
- allow(@disk).to receive_messages(:has_partition_table? => false)
189
- expect(@disk).to receive(:create_partition_table)
190
- expect(LinuxAdmin::Common).to receive(:run!)
191
- @disk.create_partition 'primary', 1024
192
- end
193
- end
194
-
195
- describe "#has_partition_table?" do
196
- it "positive case" do
197
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
198
- expect(LinuxAdmin::Common).to receive(:run).and_return(double(:output => "", :exit_status => 0))
199
- expect(disk).to have_partition_table
200
- end
201
-
202
- it "negative case" do
203
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
204
- output = "\e[?1034h\r\rError: /dev/sdb: unrecognised disk label\n"
205
- expect(LinuxAdmin::Common).to receive(:run).and_return(double(:output => output, :exit_status => 1))
206
- expect(disk).not_to have_partition_table
207
- end
208
- end
209
-
210
- it "#create_partition_table" do
211
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
212
- options = {:params => {nil => %w(--script /dev/hda mklabel msdos)}}
213
- expect(LinuxAdmin::Common).to receive(:run!).with(LinuxAdmin::Common.cmd(:parted), options)
214
- disk.create_partition_table
215
- end
216
-
217
- describe "#clear!" do
218
- it "clears partitions" do
219
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
220
- expect(LinuxAdmin::Common).to receive(:run).and_return(double(:output => "")) # stub out call to cmds
221
- disk.partitions << LinuxAdmin::Partition.new
222
-
223
- expect(LinuxAdmin::Common).to receive(:run!)
224
- disk.clear!
225
- expect(disk.partitions).to be_empty
226
- end
227
-
228
- it "uses dd to clear partition table" do
229
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
230
- expect(LinuxAdmin::Common).to receive(:run!)
231
- .with(LinuxAdmin::Common.cmd(:dd),
232
- :params => {'if=' => '/dev/zero', 'of=' => '/dev/hda',
233
- 'bs=' => 512, 'count=' => 1})
234
- disk.clear!
235
- end
236
-
237
- it "returns self" do
238
- disk = LinuxAdmin::Disk.new :path => '/dev/hda'
239
- allow(LinuxAdmin::Common).to receive(:run!) # stub out call to dd
240
- expect(disk.clear!).to eq(disk)
241
- end
242
- end
243
-
244
- end
@@ -1,77 +0,0 @@
1
- describe LinuxAdmin::Distros::Distro do
2
- let(:subject) { LinuxAdmin::Distros.local }
3
- describe "#local" do
4
- before do
5
- allow(LinuxAdmin::Distros).to receive(:local).and_call_original
6
- end
7
-
8
- [['ubuntu', :ubuntu],
9
- ['Fedora', :fedora],
10
- ['red hat', :rhel],
11
- ['CentOS', :rhel],
12
- ['centos', :rhel]].each do |i, d|
13
- context "/etc/issue contains '#{i}'" do
14
- before(:each) do
15
- etc_issue_contains(i)
16
- exists("/etc/fedora-release" => false, "/etc/redhat-release" => false)
17
- end
18
-
19
- it "returns Distros.#{d}" do
20
- distro = LinuxAdmin::Distros.send(d)
21
- expect(subject).to eq(distro)
22
- end
23
- end
24
- end
25
-
26
- context "/etc/issue did not match" do
27
- before(:each) do
28
- etc_issue_contains('')
29
- end
30
-
31
- context "/etc/redhat-release exists" do
32
- it "returns Distros.rhel" do
33
- exists("/etc/fedora-release" => false, "/etc/redhat-release" => true)
34
- expect(subject).to eq(LinuxAdmin::Distros.rhel)
35
- end
36
- end
37
-
38
- context "/etc/fedora-release exists" do
39
- it "returns Distros.fedora" do
40
- exists("/etc/fedora-release" => true, "/etc/redhat-release" => false)
41
- expect(subject).to eq(LinuxAdmin::Distros.fedora)
42
- end
43
- end
44
- end
45
-
46
- it "returns Distros.generic" do
47
- etc_issue_contains('')
48
- exists("/etc/fedora-release" => false, "/etc/redhat-release" => false)
49
- expect(subject).to eq(LinuxAdmin::Distros.generic)
50
- end
51
- end
52
-
53
- describe "#info" do
54
- it "dispatches to redhat lookup mechanism" do
55
- stub_distro(LinuxAdmin::Distros.rhel)
56
- expect(LinuxAdmin::Rpm).to receive(:info).with('ruby')
57
- LinuxAdmin::Distros.local.info 'ruby'
58
- end
59
-
60
- it "dispatches to ubuntu lookup mechanism" do
61
- stub_distro(LinuxAdmin::Distros.ubuntu)
62
- expect(LinuxAdmin::Deb).to receive(:info).with('ruby')
63
- LinuxAdmin::Distros.local.info 'ruby'
64
- end
65
-
66
- it "dispatches to ubuntu lookup mechanism" do
67
- stub_distro(LinuxAdmin::Distros.generic)
68
- expect { LinuxAdmin::Distros.local.info 'ruby' }.not_to raise_error
69
- end
70
- end
71
-
72
- private
73
-
74
- def exists(files)
75
- files.each_pair { |file, value| allow(File).to receive(:exist?).with(file).and_return(value) }
76
- end
77
- end