Sha256: 0529db1f52821eec898131b36ad387a60330438b8cad341e7c5bfb20377b0f69

Contents?: true

Size: 1.22 KB

Versions: 9

Compression:

Stored size: 1.22 KB

Contents

module Spec
  module DSL
    class ExampleMatcher

      attr_writer :example_desc
      def initialize(behaviour_desc, example_desc=nil)
        @behaviour_desc = behaviour_desc
        @example_desc = example_desc
      end
      
      def matches?(specified_examples)
        specified_examples.each do |specified_example|
          return true if matches_literal_example?(specified_example) || matches_example_not_considering_modules?(specified_example)
        end
        false
      end
      
      private
        def matches_literal_example?(specified_example)
          specified_example =~ /(^#{context_regexp} #{example_regexp}$|^#{context_regexp}$|^#{example_regexp}$)/
        end

        def matches_example_not_considering_modules?(specified_example)
          specified_example =~ /(^#{context_regexp_not_considering_modules} #{example_regexp}$|^#{context_regexp_not_considering_modules}$|^#{example_regexp}$)/
        end

        def context_regexp
          Regexp.escape(@behaviour_desc)
        end

        def context_regexp_not_considering_modules
          Regexp.escape(@behaviour_desc.split('::').last)
        end
        
        def example_regexp
          Regexp.escape(@example_desc)
        end
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
has_finder-0.1.2 spec/rails/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb
has_finder-0.1.1 spec/rails/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb
has_finder-0.1.3 spec/rails/vendor/plugins/rspec/lib/spec/dsl/example_matcher.rb
rspec-1.0.4 lib/spec/dsl/example_matcher.rb
rspec-1.0.3 lib/spec/dsl/example_matcher.rb
rspec-1.0.5 lib/spec/dsl/example_matcher.rb
rspec-1.0.8 lib/spec/dsl/example_matcher.rb
rspec-1.0.6 lib/spec/dsl/example_matcher.rb
rspec-1.0.7 lib/spec/dsl/example_matcher.rb