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 = <