# This is a template used only for rspec tests

# Yaml of the whole scope
<%= scope.to_hash.reject { |k,v| !( k.is_a?(String) && v.is_a?(String) ) }.to_yaml %>

# Custom Options
<%= @options['opt_a'] %>
<%= @options['opt_b'] %>
