puppet-strings/spec/lib/strings_spec/parsing.rb

43 lines
1.2 KiB
Ruby

require 'spec_helper'
module StringsSpec
module Parsing
# Cleans up the Registry and gives YARD some source code
# to generate documentation for
def parse(string, parser = :ruby)
YARD::Registry.clear
YARD::Parser::SourceParser.parse_string(string, parser)
end
# A custom matcher that allows us to compare aspects of a
# Code Objects to the specified values. This gives us a
# simplified way to ensure that the Code Object added to the
# Registry is what we expect when testing handlers
RSpec::Matchers.define :document_a do |arguments|
match do |actual|
@mismatches = compare_values(actual, arguments)
@mismatches.empty?
end
failure_message_for_should do
@mismatches.collect do |key, value|
"Expected #{key} to be <#{value[1]}>, but got <#{value[0]}>."
end.join("\n")
end
def compare_values(actual, expected)
mismatched_arguments = {}
expected.each do |key, value|
actual_value = actual.send(key)
if actual_value != value
mismatched_arguments[key] = [actual_value, value]
end
end
mismatched_arguments
end
end
end
end