diff --git a/lib/facter/megaraid_serial.rb b/lib/facter/megaraid_serial.rb index fe1553c..12bd690 100644 --- a/lib/facter/megaraid_serial.rb +++ b/lib/facter/megaraid_serial.rb @@ -6,6 +6,7 @@ output = Facter::Util::Resolution.exec("#{megacli} -Version -Ctrl -aALL -NoLog") next if output.nil? m = output.match(/Serial No : (\S+)\s*$/) + next if m.nil? next unless m.size == 2 m[1] end diff --git a/spec/unit/facts/megaraid_serial_spec.rb b/spec/unit/facts/megaraid_serial_spec.rb index c042d69..d84beda 100644 --- a/spec/unit/facts/megaraid_serial_spec.rb +++ b/spec/unit/facts/megaraid_serial_spec.rb @@ -25,6 +25,16 @@ returns(File.read(fixtures('megacli', 'version-ctrl-aall-8.07.07'))) Facter.fact(:megaraid_serial).value.should == 'SV22925366' end + + context 'megacli output is missing serial number' do + it 'should get the version string' do + Facter.fact(:megacli).stubs(:value).returns('/usr/bin/MegaCli') + Facter::Util::Resolution.stubs(:exec). + with('/usr/bin/MegaCli -Version -Ctrl -aALL -NoLog'). + returns(File.read(fixtures('megacli', 'version-ctrl-aall-sm_no_serial'))) + Facter.fact(:megaraid_serial).value.should be_nil + end + end end end