From 6fd6ce0a162fb24594cdf5af59ece4b291d00f46 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Tue, 16 Jul 2013 15:59:38 -0400 Subject: [PATCH] Return an empty array of partitions on a non-zero rc from parted. In the event the disk label/partition table is missing, parted exits with the fixnum 1 from Linux Admin. --- lib/linux_admin/disk.rb | 3 +++ spec/disk_spec.rb | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/lib/linux_admin/disk.rb b/lib/linux_admin/disk.rb index 783047f..25b2ac6 100644 --- a/lib/linux_admin/disk.rb +++ b/lib/linux_admin/disk.rb @@ -25,9 +25,12 @@ def partitions # requires sudo out = run(cmd(:parted), + :return_exitstatus => true, :return_output => true, :params => { nil => [@path, 'print'] }) + return [] if out.kind_of?(Fixnum) + out.each_line do |l| if l =~ /^ [0-9].*/ p = l.split diff --git a/spec/disk_spec.rb b/spec/disk_spec.rb index cd05a03..3174ce2 100644 --- a/spec/disk_spec.rb +++ b/spec/disk_spec.rb @@ -17,11 +17,19 @@ disk = LinuxAdmin::Disk.new :path => '/dev/hda' disk.should_receive(:run). with(disk.cmd(:parted), + :return_exitstatus => true, :return_output => true, :params => { nil => ['/dev/hda', 'print'] }).and_return "" disk.partitions end + it "returns [] on non-zero parted rc" do + disk = LinuxAdmin::Disk.new :path => '/dev/hda' + disk.stub(:exitstatus => 1) + disk.stub(:launch) + disk.partitions.should == [] + end + it "sets partitons" do partitions = <