diff options
| -rwxr-xr-x | lib/custodian/parser.rb | 4 | ||||
| -rwxr-xr-x | t/test-parser.rb | 36 | 
2 files changed, 39 insertions, 1 deletions
| diff --git a/lib/custodian/parser.rb b/lib/custodian/parser.rb index 7ed7a51..268dd3b 100755 --- a/lib/custodian/parser.rb +++ b/lib/custodian/parser.rb @@ -190,6 +190,10 @@ class MonitorConfig      end +    if ( is_macro?( name ) ) +      raise ArgumentError, "The macro #{name} is already defined" +    end +      @MACROS[name] = val    end diff --git a/t/test-parser.rb b/t/test-parser.rb index c3e782f..f405433 100755 --- a/t/test-parser.rb +++ b/t/test-parser.rb @@ -57,7 +57,6 @@ class TestParser < Test::Unit::TestCase      assert_nothing_raised do        MonitorConfig.new("/dev/null" )      end -    end @@ -171,6 +170,41 @@ class TestParser < Test::Unit::TestCase +  # +  # Redefinining a macro should cause an error +  # +  def test_duplicate_macro + + +    # +    # Create the parser. +    # +    parser = MonitorConfig.new("/dev/null" ) + + +    # +    #  With nothing loaded we should have zero macros - so the +    # count of our macros hash should be zero +    # +    macros = parser.macros +    assert( macros.empty? ) +    assert( macros.size() == 0 ) + + +    # +    #  Define a macro twice.  The first will work, the second will fail +    # +    assert_nothing_raised do +      parser.define_macro( "FOO is kvm1.vm.bytemark.co.uk and kvm2.vm.bytemark.co.uk." ) +    end + +    assert_raise ArgumentError do +      parser.define_macro( "FOO is kvm1.vm.bytemark.co.uk and kvm2.vm.bytemark.co.uk." ) +    end +  end + + +    #    #  Test that we can define macros with only a single host. | 
