summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2015-08-07 14:30:11 +0300
committerSteve Kemp <steve@steve.org.uk>2015-08-07 14:30:11 +0300
commitbc17ed3dec538e8124606bccaab3b33bf1b94665 (patch)
tree567671d96d6cbb09a0d20b6c1c3d6b0f20c480bb /t
parent21c55f59318a677d56b9a73581619a5f8cae02a3 (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-xt/test-custodian-parser.rb54
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
#