Skip to content

Commit d9c9e16

Browse files
committed
Memoizes the regular expressions for path matching
1 parent 817f47d commit d9c9e16

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

lib/rspec/rails/example.rb

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,53 +13,61 @@ def c.escaped_path(*parts)
1313
Regexp.compile(parts.join('[\\\/]') + '[\\\/]')
1414
end
1515

16+
controller_path_regex = c.escaped_path(%w[spec controllers])
1617
c.include RSpec::Rails::ControllerExampleGroup,
1718
:type => :controller,
1819
:example_group => lambda { |example_group, metadata = {}|
19-
metadata[:type].nil? && c.escaped_path(%w[spec controllers]) =~ example_group[:file_path]
20+
metadata[:type].nil? && controller_path_regex =~ example_group[:file_path]
2021
}
2122

23+
helper_path_regex = c.escaped_path(%w[spec helpers])
2224
c.include RSpec::Rails::HelperExampleGroup,
2325
:type => :helper,
2426
:example_group => lambda { |example_group, metadata = {}|
25-
metadata[:type].nil? && c.escaped_path(%w[spec helpers]) =~ example_group[:file_path]
27+
metadata[:type].nil? && helper_path_regex =~ example_group[:file_path]
2628
}
2729

30+
mailer_path_regex = c.escaped_path(%w[spec mailers])
2831
if defined?(RSpec::Rails::MailerExampleGroup)
2932
c.include RSpec::Rails::MailerExampleGroup,
3033
:type => :mailer,
3134
:example_group => lambda { |example_group, metadata = {}|
32-
metadata[:type].nil? && c.escaped_path(%w[spec mailers]) =~ example_group[:file_path]
35+
metadata[:type].nil? && mailer_path_regex =~ example_group[:file_path]
3336
}
3437
end
3538

39+
model_path_regex = c.escaped_path(%w[spec models])
3640
c.include RSpec::Rails::ModelExampleGroup,
3741
:type => :model,
3842
:example_group => lambda { |example_group, metadata = {}|
39-
metadata[:type].nil? && c.escaped_path(%w[spec models]) =~ example_group[:file_path]
43+
metadata[:type].nil? && model_path_regex =~ example_group[:file_path]
4044
}
4145

46+
request_path_regex = c.escaped_path(%w[spec (requests|integration|api)])
4247
c.include RSpec::Rails::RequestExampleGroup,
4348
:type => :request,
4449
:example_group => lambda { |example_group, metadata = {}|
45-
metadata[:type].nil? && c.escaped_path(%w[spec (requests|integration|api)]) =~ example_group[:file_path]
50+
metadata[:type].nil? && request_path_regex =~ example_group[:file_path]
4651
}
4752

53+
routing_path_regex = c.escaped_path(%w[spec routing])
4854
c.include RSpec::Rails::RoutingExampleGroup,
4955
:type => :routing,
5056
:example_group => lambda { |example_group, metadata = {}|
51-
metadata[:type].nil? && c.escaped_path(%w[spec routing]) =~ example_group[:file_path]
57+
metadata[:type].nil? && routing_path_regex =~ example_group[:file_path]
5258
}
5359

60+
view_path_regex = c.escaped_path(%w[spec views])
5461
c.include RSpec::Rails::ViewExampleGroup,
5562
:type => :view,
5663
:example_group => lambda { |example_group, metadata = {}|
57-
metadata[:type].nil? && c.escaped_path(%w[spec views]) =~ example_group[:file_path]
64+
metadata[:type].nil? && view_path_regex =~ example_group[:file_path]
5865
}
5966

67+
feature_example_regex = c.escaped_path(%w[spec features])
6068
c.include RSpec::Rails::FeatureExampleGroup,
6169
:type => :feature,
6270
:example_group => lambda { |example_group, metadata = {}|
63-
metadata[:type].nil? && c.escaped_path(%w[spec features]) =~ example_group[:file_path]
71+
metadata[:type].nil? && feature_example_regex =~ example_group[:file_path]
6472
}
6573
end

0 commit comments

Comments
 (0)