Skip to content

Allow Regexp class to be described

gitlab-qa-bot requested to merge github/fork/durran/regexp-testing into master

Created by: durran

In 3.0.x and previously, the Regexp class could be described for testing. This regressed in 3.1.x and persists in master. This pull request fixes the issue.

The code to reproduce:

describe Regexp do
  # Any code can go here, this fails on parsing.
end

The stacktrace:

/Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:575:in `block in base_name_for': undefined method `last_match' for RSpec::ExampleGroups::Regexp:Class (NoMethodError)
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:575:in `gsub!'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:575:in `base_name_for'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:557:in `assign_const'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:324:in `subclass'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:219:in `block in define_example_group_method'
    from /Users/modetojoy/work/bson-ruby/spec/bson/regexp_spec.rb:19:in `block in <top (required)>'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `module_exec'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:325:in `subclass'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:219:in `block in define_example_group_method'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/dsl.rb:41:in `block in expose_example_group_alias'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/dsl.rb:79:in `block (2 levels) in expose_example_group_alias_globally'
    from /Users/modetojoy/work/bson-ruby/spec/bson/regexp_spec.rb:17:in `<top (required)>'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `block in load_spec_files'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `each'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/configuration.rb:1105:in `load_spec_files'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:96:in `setup'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:84:in `run'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:69:in `run'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in `invoke'
    from /Users/modetojoy/.rvm/gems/ruby-2.1.0@bson/gems/rspec-core-3.1.7/exe/rspec:4:in `<main>'

Why would one be testing a core class like Regexp? We extend the core class to provide extra functionality for BSON serialization, similar to JSON and XML. Regexp is one of the classes we extend. The specs can be found here: https://github.com/mongodb/bson-ruby/blob/master/spec/bson/regexp_spec.rb

I was not exactly sure where the spec for this pull request should go in the project, so I put it under integration for now just to demonstrate the issue and get a failing spec.

Merge request reports