-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrspec
executable file
·141 lines (108 loc) · 3.67 KB
/
rspec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/usr/bin/env ruby
# frozen_string_literal: true
require 'pathname'
require 'optparse'
module AnyCacheSpecRunner
extend self
def expand_gemfile_path(gemfile_name)
File.expand_path(File.join('..', 'gemfiles', gemfile_name), __dir__)
end
GEMFILES = {
redis: expand_gemfile_path('redis.gemfile'),
redis_store: expand_gemfile_path('redis_store.gemfile'),
dalli: expand_gemfile_path('dalli.gemfile'),
active_support: expand_gemfile_path('active_support.gemfile'),
active_support_with_redis: expand_gemfile_path('active_support_with_redis.gemfile'),
active_support_with_dalli: expand_gemfile_path('active_support_with_dalli.gemfile')
}.freeze
# rubocop:disable Metrics/MethodLength, Metrics/BlockLength, Metrics/AbcSize
def run!
OptionParser.new do |opts|
opts.banner = 'Usage: bin/rspec [options]'
opts.on(
'--test-redis',
'Run specs with Redis cache storage'
) { run_redis_cache_specs! }
opts.on(
'--test-redis-store',
'Run specs with Redis::Store cache storage'
) { run_redis_store_cache_specs! }
opts.on(
'--test-dalli',
'Run specs with Dalli spec storage'
) { run_dalli_cache_specs! }
opts.on(
'--test-as-redis-cache-store',
'Run specs with ActiveSupport::Cache::RedisCacheStore cache storage'
) { run_as_redis_cache_store_cache_specs! }
opts.on(
'--test-as-file-store',
'Run specs with ActiveSupport::Cache::FileStore cache storage'
) { run_as_file_store_cache_specs! }
opts.on(
'--test-as-memory-store',
'Run specs with ActiveSupport::Cache::MemoryStore cache storage'
) { run_as_memory_store_cache_specs! }
opts.on(
'--test-as-memcache-store',
'Run specs with ActiveSupport::Cache::MemCacheStore cache storage'
) { run_as_mem_cache_store_cache_specs! }
opts.on(
'--test-as-dalli-store',
'Run specs with ActiveSupport::Cache::DalliStore cache storage'
) { run_as_dalli_store_specs! }
opts.on(
'-h', '--help',
'Show this message'
) { puts opts }
end.parse!
end
# rubocop:enable Metrics/MethodLength, Metrics/BlockLength, Metrics/AbcSize
private
def run_redis_cache_specs!
ENV['TEST_REDIS_CACHE'] = 'true'
ENV['BUNDLE_GEMFILE'] = GEMFILES[:redis]
run_tests!
end
def run_redis_store_cache_specs!
ENV['TEST_REDIS_STORE_CACHE'] = 'true'
ENV['BUNDLE_GEMFILE'] = GEMFILES[:redis_store]
run_tests!
end
def run_dalli_cache_specs!
ENV['TEST_DALLI_CACHE'] = 'true'
ENV['BUNDLE_GEMFILE'] = GEMFILES[:dalli]
run_tests!
end
def run_as_redis_cache_store_cache_specs!
ENV['TEST_AS_REDIS_CACHE_STORE_CACHE'] = 'true'
ENV['BUNDLE_GEMFILE'] = GEMFILES[:active_support_with_redis]
run_tests!
end
def run_as_file_store_cache_specs!
ENV['TEST_AS_FILE_STORE_CACHE'] = 'true'
ENV['BUNDLE_GEMFILE'] = GEMFILES[:active_support]
run_tests!
end
def run_as_memory_store_cache_specs!
ENV['TEST_AS_MEMORY_STORE_CACHE'] = 'true'
ENV['BUNDLE_GEMFILE'] = GEMFILES[:active_support]
run_tests!
end
def run_as_mem_cache_store_cache_specs!
ENV['TEST_AS_MEM_CACHE_STORE_CACHE'] = 'true'
ENV['BUNDLE_GEMFILE'] = GEMFILES[:active_support_with_dalli]
run_tests!
end
def run_as_dalli_store_specs!
ENV['TEST_AS_DALLI_STORE'] = 'true'
ENV['BUNDLE_GEMFILE'] = GEMFILES[:active_support_with_dalli]
run_tests!
end
def run_tests!
require 'rubygems'
require 'bundler/setup'
load Gem.bin_path('rspec-core', 'rspec')
end
end
AnyCacheSpecRunner.run!