lucid 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +0 -3
- data/HISTORY.md +12 -0
- data/LICENSE +0 -3
- data/README.md +7 -5
- data/Rakefile +0 -14
- data/lib/lucid.rb +4 -0
- data/lib/lucid/cli/app.rb +1 -5
- data/lib/lucid/cli/context.rb +8 -6
- data/lib/lucid/cli/profile.rb +9 -9
- data/lib/lucid/context.rb +1 -1
- data/lib/lucid/interface_rb/matcher.rb +1 -2
- data/lib/lucid/platform.rb +2 -1
- data/lucid.gemspec +12 -12
- data/spec/lucid/lucid_spec.rb +7 -0
- data/spec/spec_helper.rb +0 -19
- metadata +34 -116
- data/.travis.yml +0 -15
- data/lib/lucid/sequence.rb +0 -5
- data/lib/lucid/sequence/sequence_errors.rb +0 -64
- data/lib/lucid/sequence/sequence_group.rb +0 -35
- data/lib/lucid/sequence/sequence_phrase.rb +0 -166
- data/lib/lucid/sequence/sequence_steps.rb +0 -20
- data/lib/lucid/sequence/sequence_support.rb +0 -26
- data/lib/lucid/sequence/sequence_template.rb +0 -354
- data/spec/lucid/ansicolor_spec.rb +0 -31
- data/spec/lucid/app_spec.rb +0 -82
- data/spec/lucid/ast/background_spec.rb +0 -128
- data/spec/lucid/ast/doc_string_spec.rb +0 -36
- data/spec/lucid/ast/feature_spec.rb +0 -66
- data/spec/lucid/ast/outline_table_spec.rb +0 -21
- data/spec/lucid/ast/scenario_outline_spec.rb +0 -81
- data/spec/lucid/ast/specs_spec.rb +0 -48
- data/spec/lucid/ast/step_invocation_spec.rb +0 -45
- data/spec/lucid/ast/step_spec.rb +0 -72
- data/spec/lucid/ast/table_spec.rb +0 -265
- data/spec/lucid/ast/tdl_factory.rb +0 -78
- data/spec/lucid/ast/tdl_walker_spec.rb +0 -21
- data/spec/lucid/context_spec.rb +0 -328
- data/spec/lucid/duration_spec.rb +0 -22
- data/spec/lucid/facade_spec.rb +0 -31
- data/spec/lucid/factory_spec.rb +0 -16
- data/spec/lucid/matcher_spec.rb +0 -127
- data/spec/lucid/options_spec.rb +0 -346
- data/spec/lucid/orchestrator_spec.rb +0 -117
- data/spec/lucid/pending_spec.rb +0 -45
- data/spec/lucid/progress_spec.rb +0 -34
- data/spec/lucid/rb_step_definition_spec.rb +0 -127
- data/spec/lucid/rb_transform_spec.rb +0 -24
- data/spec/lucid/regexp_argument_matcher_spec.rb +0 -19
- data/spec/lucid/results_spec.rb +0 -81
- data/spec/lucid/runtime_spec.rb +0 -38
- data/spec/lucid/sequences/sequence_conditional_spec.rb +0 -74
- data/spec/lucid/sequences/sequence_group_spec.rb +0 -55
- data/spec/lucid/sequences/sequence_phrase_spec.rb +0 -122
- data/spec/lucid/sequences/sequence_placeholder_spec.rb +0 -56
- data/spec/lucid/sequences/sequence_section_spec.rb +0 -61
- data/spec/lucid/sequences/sequence_support_spec.rb +0 -65
- data/spec/lucid/sequences/sequence_template_spec.rb +0 -298
- data/spec/lucid/step_match_spec.rb +0 -55
data/spec/lucid/options_spec.rb
DELETED
@@ -1,346 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'lucid/cli/options'
|
3
|
-
|
4
|
-
module Lucid
|
5
|
-
module CLI
|
6
|
-
describe Options do
|
7
|
-
|
8
|
-
before(:each) do
|
9
|
-
Kernel.stub(:exit).and_return(nil)
|
10
|
-
end
|
11
|
-
|
12
|
-
def output_stream
|
13
|
-
@output_stream ||= StringIO.new
|
14
|
-
end
|
15
|
-
|
16
|
-
def error_stream
|
17
|
-
@error_stream ||= StringIO.new
|
18
|
-
end
|
19
|
-
|
20
|
-
def options
|
21
|
-
@options ||= Options.new(output_stream, error_stream)
|
22
|
-
end
|
23
|
-
|
24
|
-
def prep_args(args)
|
25
|
-
args.is_a?(Array) ? args : args.split(' ')
|
26
|
-
end
|
27
|
-
|
28
|
-
def with_this_configuration(info)
|
29
|
-
Dir.stub(:glob).with('{,.config/,config/}lucid{.yml,.yaml}').and_return(['lucid.yml'])
|
30
|
-
File.stub(:exist?).and_return(true)
|
31
|
-
lucid_yml = info.is_a?(Hash) ? info.to_yaml : info
|
32
|
-
IO.stub(:read).with('lucid.yml').and_return(lucid_yml)
|
33
|
-
end
|
34
|
-
|
35
|
-
describe 'parsing options' do
|
36
|
-
|
37
|
-
def during_parsing(command)
|
38
|
-
yield
|
39
|
-
options.parse(prep_args(command))
|
40
|
-
end
|
41
|
-
|
42
|
-
def after_parsing(command)
|
43
|
-
options.parse(prep_args(command))
|
44
|
-
yield
|
45
|
-
end
|
46
|
-
|
47
|
-
context '--version' do
|
48
|
-
it 'should display Lucid version' do
|
49
|
-
after_parsing('--version') do
|
50
|
-
output_stream.string.should =~ /#{Lucid::VERSION}/
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'should exit from any Lucid execution' do
|
55
|
-
during_parsing('--version') { Kernel.should_receive(:exit) }
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
context 'environment variables' do
|
60
|
-
it 'should put all environment variables into a hash' do
|
61
|
-
after_parsing('MODE=symbiont AUTOSPEC=true') do
|
62
|
-
options[:env_vars].should == {'MODE' => 'symbiont', 'AUTOSPEC' => 'true'}
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context '--i18n' do
|
68
|
-
context "with LANG specified as 'help'" do
|
69
|
-
it 'lists all known languages' do
|
70
|
-
during_parsing '--i18n help' do
|
71
|
-
Kernel.should_receive(:exit)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'exits the program' do
|
76
|
-
during_parsing('--i18n help') { Kernel.should_receive(:exit) }
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context '-r or --require' do
|
82
|
-
it 'should collect all specified files into an array' do
|
83
|
-
after_parsing('--require file_a.rb -r file_b.rb') do
|
84
|
-
options[:require].should == ['file_a.rb', 'file_b.rb']
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
context '-n NAME or --name NAME' do
|
90
|
-
it 'should store provided scenario names as regular expressions' do
|
91
|
-
after_parsing('-n sc1 --name sc2') { options[:name_regexps].should == [/sc1/,/sc2/] }
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
context '-l LINES or --lines LINES' do
|
96
|
-
it 'should add line numbers to spec files' do
|
97
|
-
options.parse(%w{-l 42 FILE})
|
98
|
-
options.instance_variable_get(:@args).should == ['FILE:42']
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
context '-e PATTERN or --exclude PATTERN' do
|
103
|
-
it 'should stored provided exclusions as regular expressions' do
|
104
|
-
after_parsing('-e file1 --exclude file2') { options[:excludes].should == [/file1/,/file2/] }
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
context '-b or --backtrace' do
|
109
|
-
it 'should use a full backtrace during Lucid execution' do
|
110
|
-
during_parsing('-b') do
|
111
|
-
Lucid.should_receive(:use_full_backtrace=).with(true)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
context '-t TAGS --tags TAGS' do
|
117
|
-
it 'should store tags passed with different --tags options separately' do
|
118
|
-
after_parsing('--tags @smoke --tags @wip') { options[:tag_expressions].should == ['@smoke', '@wip'] }
|
119
|
-
end
|
120
|
-
|
121
|
-
it 'should designate tags prefixed with ~ as tags to be excluded' do
|
122
|
-
after_parsing('--tags ~@smoke,@wip') { options[:tag_expressions].should == ['~@smoke,@wip'] }
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
context '-f FORMAT or --format FORMAT' do
|
127
|
-
it 'should default to using the standard output stream (STDOUT) formatter' do
|
128
|
-
after_parsing('-f standard') { options[:formats].should == [['standard', output_stream]] }
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
context '-o [FILE|DIR] or --out [FILE|DIR]' do
|
133
|
-
it 'should default to the standard formatter when not specified' do
|
134
|
-
after_parsing('-o file.txt') { options[:formats].should == [['standard', 'file.txt']] }
|
135
|
-
end
|
136
|
-
|
137
|
-
it 'should set the output for the formatter defined for each option' do
|
138
|
-
after_parsing('-f profile --out file.txt -f standard -o file2.txt') do
|
139
|
-
options[:formats].should == [['profile', 'file.txt'], ['standard', 'file2.txt']]
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
context '-P or --no-profile' do
|
145
|
-
it 'disables profiles' do
|
146
|
-
with_this_configuration({'default' => '-v --require code_file.rb'})
|
147
|
-
|
148
|
-
after_parsing('-P --require other_code_file.rb') do
|
149
|
-
options[:require].should == ['other_code_file.rb']
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
it 'notifies the user that the profiles are being disabled' do
|
154
|
-
with_this_configuration({'default' => '-v'})
|
155
|
-
|
156
|
-
after_parsing('--no-profile --require other_code_file.rb') do
|
157
|
-
output_stream.string.should =~ /Disabling profiles.../
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
context '-p PROFILE or --profile PROFILE' do
|
163
|
-
it 'respects --quiet when defined in the profile' do
|
164
|
-
with_this_configuration('test' => '-q')
|
165
|
-
|
166
|
-
options.parse(%w[-p test])
|
167
|
-
options[:matchers].should be_false
|
168
|
-
options[:source].should be_false
|
169
|
-
end
|
170
|
-
|
171
|
-
it 'uses the default profile passed in during initialization if none is specified by the user' do
|
172
|
-
with_this_configuration({'default' => '--require test_helper'})
|
173
|
-
|
174
|
-
options = Options.new(output_stream, error_stream, :default_profile => 'default')
|
175
|
-
options.parse(%w{--format progress})
|
176
|
-
options[:require].should include('test_helper')
|
177
|
-
end
|
178
|
-
|
179
|
-
it 'merges all unique values from both the command line and the profile' do
|
180
|
-
with_this_configuration('test' => %w[--verbose])
|
181
|
-
|
182
|
-
options.parse(%w[--wip --profile test])
|
183
|
-
options[:wip].should be_true
|
184
|
-
options[:verbose].should be_true
|
185
|
-
end
|
186
|
-
|
187
|
-
it 'gives precedence to the original options spec source path' do
|
188
|
-
with_this_configuration('test' => %w[specs])
|
189
|
-
|
190
|
-
options.parse(%w[test.spec -p test])
|
191
|
-
options[:spec_source].should == %w[test.spec]
|
192
|
-
end
|
193
|
-
|
194
|
-
it 'combines the require files of both' do
|
195
|
-
with_this_configuration('bar' => %w[--require specs -r helper.rb])
|
196
|
-
|
197
|
-
options.parse(%w[--require test.rb -p bar])
|
198
|
-
options[:require].should == %w[test.rb specs helper.rb]
|
199
|
-
end
|
200
|
-
|
201
|
-
it 'combines the tag names of both' do
|
202
|
-
with_this_configuration('test' => %w[-t @smoke])
|
203
|
-
|
204
|
-
options.parse(%w[--tags @wip -p test])
|
205
|
-
options[:tag_expressions].should == ['@wip', '@smoke']
|
206
|
-
end
|
207
|
-
|
208
|
-
it 'only takes the paths from the original options, and disregards the profiles' do
|
209
|
-
with_this_configuration('test' => %w[specs])
|
210
|
-
|
211
|
-
options.parse(%w[test.spec -p test])
|
212
|
-
options[:spec_source].should == ['test.spec']
|
213
|
-
end
|
214
|
-
|
215
|
-
it 'uses the paths from the profile when none are specified originally' do
|
216
|
-
with_this_configuration('test' => %w[test.spec])
|
217
|
-
|
218
|
-
options.parse(%w[-p test])
|
219
|
-
options[:spec_source].should == ['test.spec']
|
220
|
-
end
|
221
|
-
|
222
|
-
it 'combines environment variables from the profile but gives precedence to command line args' do
|
223
|
-
with_this_configuration('test' => %w[BROWSER=firefox DRIVER=mechanize])
|
224
|
-
|
225
|
-
options.parse(%w[-p test DRIVER=watir CI=jenkins])
|
226
|
-
options[:env_vars].should == {'CI' => 'jenkins', 'BROWSER' => 'firefox', 'DRIVER' => 'watir'}
|
227
|
-
end
|
228
|
-
|
229
|
-
it 'disregards STDOUT formatter defined in profile when another is passed in via command line' do
|
230
|
-
with_this_configuration({'test' => %w[--format standard]})
|
231
|
-
|
232
|
-
options.parse(%w{--format progress --profile test})
|
233
|
-
options[:formats].should == [['progress', output_stream]]
|
234
|
-
end
|
235
|
-
|
236
|
-
it 'includes any non-STDOUT formatters from the profile' do
|
237
|
-
with_this_configuration({'report' => %w[--format html -o results.html]})
|
238
|
-
|
239
|
-
options.parse(%w{--format progress --profile report})
|
240
|
-
options[:formats].should == [['progress', output_stream], ['html', 'results.html']]
|
241
|
-
end
|
242
|
-
|
243
|
-
it 'does not include STDOUT formatters from the profile if there is a STDOUT formatter in command line' do
|
244
|
-
with_this_configuration({'report' => %w[--format html -o results.html --format standard]})
|
245
|
-
|
246
|
-
options.parse(%w{--format progress --profile report})
|
247
|
-
options[:formats].should == [['progress', output_stream], ['html', 'results.html']]
|
248
|
-
end
|
249
|
-
|
250
|
-
it 'includes any STDOUT formatters from the profile if no STDOUT formatter was specified in command line' do
|
251
|
-
with_this_configuration({'report' => %w[--format html]})
|
252
|
-
|
253
|
-
options.parse(%w{--format rerun -o rerun.txt --profile report})
|
254
|
-
options[:formats].should == [['html', output_stream], ['rerun', 'rerun.txt']]
|
255
|
-
end
|
256
|
-
|
257
|
-
it 'assumes all of the formatters defined in the profile when none are specified on command line' do
|
258
|
-
with_this_configuration({'report' => %w[--format progress --format html -o results.html]})
|
259
|
-
|
260
|
-
options.parse(%w{--profile report})
|
261
|
-
options[:formats].should == [['progress', output_stream], ['html', 'results.html']]
|
262
|
-
end
|
263
|
-
|
264
|
-
it 'only reads lucid.yml once' do
|
265
|
-
original_parse_count = $lucid_yml_read_count
|
266
|
-
$lucid_yml_read_count = 0
|
267
|
-
|
268
|
-
begin
|
269
|
-
with_this_configuration(<<-END
|
270
|
-
<% $lucid_yml_read_count += 1 %>
|
271
|
-
default: --format standard
|
272
|
-
END
|
273
|
-
)
|
274
|
-
options = Options.new(output_stream, error_stream, :default_profile => 'default')
|
275
|
-
options.parse(%w(-f progress))
|
276
|
-
|
277
|
-
$lucid_yml_read_count.should == 1
|
278
|
-
ensure
|
279
|
-
$lucid_yml_read_count = original_parse_count
|
280
|
-
end
|
281
|
-
end
|
282
|
-
end
|
283
|
-
|
284
|
-
context '-P or --no-profile' do
|
285
|
-
it 'disables profiles' do
|
286
|
-
with_this_configuration({'default' => '-v --require file_specified_in_default_profile.rb'})
|
287
|
-
|
288
|
-
after_parsing('-P --require test_helper.rb') do
|
289
|
-
options[:require].should == ['test_helper.rb']
|
290
|
-
end
|
291
|
-
end
|
292
|
-
|
293
|
-
it 'notifies the user that the profiles are being disabled' do
|
294
|
-
with_this_configuration({'default' => '-v'})
|
295
|
-
|
296
|
-
after_parsing('--no-profile --require test_helper.rb') do
|
297
|
-
output_stream.string.should =~ /Disabling profiles.../
|
298
|
-
end
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
context '--matcher-type' do
|
303
|
-
it 'parses the matcher type argument' do
|
304
|
-
after_parsing('--matcher-type classic') do
|
305
|
-
options[:matcher_type].should eql :classic
|
306
|
-
end
|
307
|
-
end
|
308
|
-
end
|
309
|
-
|
310
|
-
it 'assigns any extra arguments as paths to specs' do
|
311
|
-
after_parsing('-f pretty test.spec other_specs') do
|
312
|
-
options[:spec_source].should == ['test.spec', 'other_specs']
|
313
|
-
end
|
314
|
-
end
|
315
|
-
|
316
|
-
it 'does not mistake environment variables as spec paths' do
|
317
|
-
after_parsing('test.spec ENV=ci') do
|
318
|
-
options[:spec_source].should == ['test.spec']
|
319
|
-
end
|
320
|
-
end
|
321
|
-
|
322
|
-
describe 'dry-run' do
|
323
|
-
it 'should have the default value for matchers' do
|
324
|
-
with_this_configuration({'test' => %w[--dry-run]})
|
325
|
-
options.parse(%w{--dry-run})
|
326
|
-
options[:matchers].should == true
|
327
|
-
end
|
328
|
-
|
329
|
-
it 'should set matchers to false when no-matchers is provided after dry-run' do
|
330
|
-
with_this_configuration({'test' => %w[--dry-run --no-snippets]})
|
331
|
-
options.parse(%w{--dry-run --no-matchers})
|
332
|
-
options[:matchers].should == false
|
333
|
-
end
|
334
|
-
|
335
|
-
it 'should set matchers to false when no-matchers is provided before dry-run' do
|
336
|
-
with_this_configuration({'test' => %w[--no-snippet --dry-run]})
|
337
|
-
options.parse(%w{--no-matchers --dry-run})
|
338
|
-
options[:matchers].should == false
|
339
|
-
end
|
340
|
-
end
|
341
|
-
|
342
|
-
end
|
343
|
-
|
344
|
-
end
|
345
|
-
end
|
346
|
-
end
|
@@ -1,117 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Lucid
|
4
|
-
describe ContextLoader::Orchestrator do
|
5
|
-
let(:options) { {} }
|
6
|
-
let(:interface) { double('interface') }
|
7
|
-
subject { ContextLoader::Orchestrator.new(interface, options) }
|
8
|
-
|
9
|
-
let(:dsl) do
|
10
|
-
@rb = subject.load_code_language('rb')
|
11
|
-
Object.new.extend(InterfaceRb::RbLucid)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should format step names' do
|
15
|
-
dsl.Given(/it (.*) in (.*)/) { |what, month| }
|
16
|
-
dsl.Given(/some other phrase/) { |what, month| }
|
17
|
-
|
18
|
-
format = subject.step_match('it works in lucid').format_args('[%s]')
|
19
|
-
format.should == 'it [works] in [lucid]'
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should cache step match results' do
|
23
|
-
dsl.Given(/it (.*) in (.*)/) { |what, month| }
|
24
|
-
step_match = subject.step_match('it works in lucid')
|
25
|
-
@rb.should_not_receive :step_matches
|
26
|
-
second_step_match = subject.step_match('it works in lucid')
|
27
|
-
step_match.should equal(second_step_match)
|
28
|
-
end
|
29
|
-
|
30
|
-
|
31
|
-
describe 'resolving test definition matches' do
|
32
|
-
it 'should raise Undefined error when no test definitions match' do
|
33
|
-
lambda do
|
34
|
-
subject.step_match('Simple Lucid Test')
|
35
|
-
end.should raise_error(Undefined)
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'should raise Ambiguous error with guess hint when multiple test definitions match' do
|
39
|
-
expected_error = %{Ambiguous match of "Simple Lucid Test":
|
40
|
-
|
41
|
-
spec/lucid/orchestrator_spec.rb:\\d+:in `/Simple (.*) Test/'
|
42
|
-
spec/lucid/orchestrator_spec.rb:\\d+:in `/Simple Lucid (.*)/'
|
43
|
-
|
44
|
-
You can run again with --guess to make Lucid be a little more smart about it.
|
45
|
-
}
|
46
|
-
dsl.Given(/Simple (.*) Test/) {|app|}
|
47
|
-
dsl.Given(/Simple Lucid (.*)/) {|action|}
|
48
|
-
|
49
|
-
lambda do
|
50
|
-
subject.step_match("Simple Lucid Test")
|
51
|
-
end.should raise_error(Ambiguous, /#{expected_error}/)
|
52
|
-
end
|
53
|
-
|
54
|
-
describe 'when --guess is used' do
|
55
|
-
let(:options) { {:guess => true} }
|
56
|
-
|
57
|
-
it 'should not show --guess hint' do
|
58
|
-
expected_error = %{Ambiguous match of "Simple lucid test":
|
59
|
-
|
60
|
-
spec/lucid/orchestrator_spec.rb:\\d+:in `/Simple (.*)/'
|
61
|
-
spec/lucid/orchestrator_spec.rb:\\d+:in `/Simple (.*)/'
|
62
|
-
|
63
|
-
}
|
64
|
-
dsl.Given(/Simple (.*)/) {|phrase|}
|
65
|
-
dsl.Given(/Simple (.*)/) {|phrase|}
|
66
|
-
|
67
|
-
lambda do
|
68
|
-
subject.step_match('Simple lucid test')
|
69
|
-
end.should raise_error(Ambiguous, /#{expected_error}/)
|
70
|
-
end
|
71
|
-
|
72
|
-
it 'should pick right test definition when an equal number of capture groups' do
|
73
|
-
right = dsl.Given(/Simple (.*) test/) {|app|}
|
74
|
-
wrong = dsl.Given(/Simple (.*)/) {|phrase|}
|
75
|
-
|
76
|
-
subject.step_match('Simple lucid test').step_definition.should == right
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'should pick right test definition when an unequal number of capture groups' do
|
80
|
-
right = dsl.Given(/Simple (.*) test ran (.*)/) {|app|}
|
81
|
-
wrong = dsl.Given(/Simple (.*)/) {|phrase|}
|
82
|
-
|
83
|
-
subject.step_match('Simple lucid test ran well').step_definition.should == right
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'should pick most specific test definition when an unequal number of capture groups' do
|
87
|
-
general = dsl.Given(/Simple (.*) test ran (.*)/) {|app|}
|
88
|
-
specific = dsl.Given(/Simple lucid test ran well/) do; end
|
89
|
-
more_specific = dsl.Given(/^Simple lucid test ran well$/) do; end
|
90
|
-
|
91
|
-
subject.step_match('Simple lucid test ran well').step_definition.should == more_specific
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'should not raise Ambiguous error when multiple test definitions match' do
|
95
|
-
dsl.Given(/Simple (.*) test/) {|app|}
|
96
|
-
dsl.Given(/Simple (.*)/) {|phrase|}
|
97
|
-
|
98
|
-
lambda do
|
99
|
-
subject.step_match('Simple lucid test')
|
100
|
-
end.should_not raise_error
|
101
|
-
end
|
102
|
-
|
103
|
-
it 'should not raise NoMethodError when guessing from multiple test definitions with nil fields' do
|
104
|
-
dsl.Given(/Simple (.*) test( cannot run well)?/) {|app, status|}
|
105
|
-
dsl.Given(/Simple (.*)?/) {|phrase|}
|
106
|
-
|
107
|
-
lambda do
|
108
|
-
subject.step_match('Simple lucid test')
|
109
|
-
end.should_not raise_error
|
110
|
-
end
|
111
|
-
|
112
|
-
end
|
113
|
-
|
114
|
-
end
|
115
|
-
|
116
|
-
end
|
117
|
-
end
|