diff options
author | Steve Kemp <steve@steve.org.uk> | 2015-08-07 14:30:11 +0300 |
---|---|---|
committer | Steve Kemp <steve@steve.org.uk> | 2015-08-07 14:30:11 +0300 |
commit | bc17ed3dec538e8124606bccaab3b33bf1b94665 (patch) | |
tree | 567671d96d6cbb09a0d20b6c1c3d6b0f20c480bb /t | |
parent | 21c55f59318a677d56b9a73581619a5f8cae02a3 (diff) |
Ensure that we correctly parse bogus macro-definitions.
We've always had an implicit rule in macro-definitions, that they
end with a period. This meant that the first line is valid:
FOO is bar.vm.bytemark.co.uk.
However we'd expect this to fail:
FOO is bar.vm.bytemark.co.uk
A similar issue would arise if a macro-definition involved more than
one host, only the first would be valid.
We've fixed this now, such that the trailing period is optional.
Diffstat (limited to 't')
-rwxr-xr-x | t/test-custodian-parser.rb | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/t/test-custodian-parser.rb b/t/test-custodian-parser.rb index aff1e9c..ddc1153 100755 --- a/t/test-custodian-parser.rb +++ b/t/test-custodian-parser.rb @@ -159,6 +159,60 @@ EOF end + # + # Test a macro-definition without a trailing period + # + def test_macros_lines_no_period + + parser = Custodian::Parser.new + + # + # Input text + # + text = <<EOF +ONE is kvm1.vm.bytemark.co.uk and kvm2.vm.bytemark.co.uk +TWO is kvm1.vm.bytemark.co.uk and kvm2.vm.bytemark.co.uk +EOF + + + # + # Test the parser with this text + # + parser.parse_lines(text) + + # + # We should now have two macros. + # + macros = parser.macros + assert(!macros.empty?, "We found some macros") + assert(macros.size == 2, "We found two macros") + + # + # Ensure they were defined. + # + assert( parser.is_macro?( "ONE" ), "The macro ONE exists" ) + assert( parser.is_macro?( "TWO" ), "The macro TWO exists" ) + + # + # Ensure we can get the values. + # + one = parser.get_macro_targets("ONE") + two = parser.get_macro_targets("TWO") + assert( one.kind_of? Array ) + assert( one.size() == 2, "Both targets are in the macro" ) + assert( one.find_index( "kvm1.vm.bytemark.co.uk" ) >= 0 , + "We found the expected host: kvm1") + assert( one.find_index( "kvm2.vm.bytemark.co.uk" ) >= 0 , + "We found the expected host: kvm2") + + assert( two.kind_of? Array ) + assert( two.size() == 2, "Both targets are in the macro" ) + assert( two.find_index( "kvm1.vm.bytemark.co.uk" ) >= 0 , + "We found the expected host: kvm1") + assert( two.find_index( "kvm2.vm.bytemark.co.uk" ) >= 0 , + "We found the expected host: kvm2") + + end # |