lucid 0.2.1 → 0.3.0
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/HISTORY.md +13 -0
- data/bin/lucid +1 -7
- data/lib/lucid/ast/doc_string.rb +1 -1
- data/lib/lucid/ast/step_invocation.rb +2 -2
- data/lib/lucid/cli/app.rb +6 -2
- data/lib/lucid/cli/configuration.rb +18 -5
- data/lib/lucid/cli/options.rb +56 -53
- data/lib/lucid/core_ext/instance_exec.rb +1 -2
- data/lib/lucid/core_ext/proc.rb +2 -2
- data/lib/lucid/errors.rb +3 -3
- data/lib/lucid/formatter/ansicolor.rb +20 -21
- data/lib/lucid/formatter/console.rb +1 -1
- data/lib/lucid/formatter/progress.rb +1 -1
- data/lib/lucid/generators/project.rb +1 -7
- data/lib/lucid/generators/project/browser-fluent.rb +0 -1
- data/lib/lucid/generators/project/events-fluent.rb +1 -4
- data/lib/lucid/interface_rb/matcher.rb +7 -7
- data/lib/lucid/interface_rb/rb_lucid.rb +2 -0
- data/lib/lucid/interface_rb/rb_step_definition.rb +5 -6
- data/lib/lucid/interface_rb/rb_world.rb +2 -3
- data/lib/lucid/platform.rb +3 -3
- data/lib/lucid/runtime/facade.rb +9 -11
- data/lib/lucid/runtime/orchestrator.rb +2 -3
- data/lib/lucid/runtime/results.rb +0 -2
- data/lib/lucid/spec_file.rb +1 -3
- data/spec/lucid/ansicolor_spec.rb +31 -0
- data/spec/lucid/app_spec.rb +73 -4
- data/spec/lucid/ast/background_spec.rb +128 -0
- data/spec/lucid/ast/doc_string_spec.rb +36 -0
- data/spec/lucid/ast/feature_spec.rb +66 -0
- data/spec/lucid/ast/outline_table_spec.rb +21 -0
- data/spec/lucid/ast/scenario_outline_spec.rb +81 -0
- data/spec/lucid/ast/specs_spec.rb +48 -0
- data/spec/lucid/ast/step_invocation_spec.rb +45 -0
- data/spec/lucid/ast/step_spec.rb +72 -0
- data/spec/lucid/ast/table_spec.rb +265 -0
- data/spec/lucid/ast/tdl_factory.rb +78 -0
- data/spec/lucid/ast/tdl_walker_spec.rb +21 -0
- data/spec/lucid/configuration_spec.rb +163 -8
- data/spec/lucid/duration_spec.rb +22 -0
- data/spec/lucid/facade_spec.rb +31 -0
- data/spec/lucid/matcher_spec.rb +127 -0
- data/spec/lucid/options_spec.rb +223 -3
- data/spec/lucid/orchestrator_spec.rb +117 -0
- data/spec/lucid/pending_spec.rb +45 -0
- data/spec/lucid/progress_spec.rb +34 -0
- data/spec/lucid/rb_step_definition_spec.rb +127 -0
- data/spec/lucid/rb_transform_spec.rb +24 -0
- data/spec/lucid/regexp_argument_matcher_spec.rb +19 -0
- data/spec/lucid/results_spec.rb +81 -0
- data/spec/lucid/runtime_spec.rb +1 -1
- data/spec/lucid/step_match_spec.rb +55 -0
- data/spec/spec_helper.rb +11 -5
- metadata +51 -7
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/lib/lucid/generators/project/lucid-fluent.yml +0 -6
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'lucid/ast'
|
4
|
+
require 'lucid/interface_rb/rb_language'
|
5
|
+
|
6
|
+
module Lucid
|
7
|
+
module AST
|
8
|
+
describe Background do
|
9
|
+
|
10
|
+
let(:language) { double.as_null_object }
|
11
|
+
|
12
|
+
before do
|
13
|
+
extend(Lucid::InterfaceRb::RbLucid)
|
14
|
+
@runtime = Lucid::Runtime.new
|
15
|
+
@rb = @runtime.load_code_language('rb')
|
16
|
+
|
17
|
+
$x = $y = nil
|
18
|
+
Before do
|
19
|
+
$x = 2
|
20
|
+
end
|
21
|
+
Given /y is (\d+)/ do |n|
|
22
|
+
$y = $x * n.to_i
|
23
|
+
end
|
24
|
+
|
25
|
+
@visitor = TDLWalker.new(@runtime)
|
26
|
+
|
27
|
+
@feature = double('feature', :visit? => true, :feature_elements => []).as_null_object
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should execute Before blocks before background steps' do
|
31
|
+
background = Background.new(
|
32
|
+
language,
|
33
|
+
Location.new('test.spec', 2),
|
34
|
+
comment = Comment.new(''),
|
35
|
+
keyword = '',
|
36
|
+
title = '',
|
37
|
+
description = '',
|
38
|
+
steps = [
|
39
|
+
Step.new(language,Location.new('test.spec', 7), "Given", "y is 5")
|
40
|
+
]
|
41
|
+
)
|
42
|
+
|
43
|
+
scenario = Scenario.new(
|
44
|
+
language,
|
45
|
+
background,
|
46
|
+
comment = Comment.new(''),
|
47
|
+
tags = Tags.new(98,[]),
|
48
|
+
feature_tags = Tags.new(1,[]),
|
49
|
+
line = 99,
|
50
|
+
keyword = '',
|
51
|
+
title = '',
|
52
|
+
description = '',
|
53
|
+
steps=[]
|
54
|
+
)
|
55
|
+
|
56
|
+
background.feature = @feature
|
57
|
+
background.accept(@visitor)
|
58
|
+
$x.should == 2
|
59
|
+
$y.should == 10
|
60
|
+
end
|
61
|
+
|
62
|
+
describe 'should respond to #name' do
|
63
|
+
it 'with a value' do
|
64
|
+
background = Background.new(
|
65
|
+
language,
|
66
|
+
Location.new('test.spec', 2),
|
67
|
+
comment = Comment.new(''),
|
68
|
+
keyword = '',
|
69
|
+
title = 'background name',
|
70
|
+
description = '',
|
71
|
+
steps=[]
|
72
|
+
)
|
73
|
+
|
74
|
+
lambda{ background.name }.should_not raise_error
|
75
|
+
background.name.should == 'background name'
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'without a value' do
|
79
|
+
background = Background.new(
|
80
|
+
language,
|
81
|
+
comment = Comment.new(''),
|
82
|
+
line = 2,
|
83
|
+
keyword = '',
|
84
|
+
title = '',
|
85
|
+
description = '',
|
86
|
+
steps=[]
|
87
|
+
)
|
88
|
+
|
89
|
+
lambda{ background.name }.should_not raise_error
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe 'failures in a Before hook' do
|
94
|
+
before do
|
95
|
+
Before do
|
96
|
+
raise Exception, 'Exception from Before hook'
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'should state that the background has failed' do
|
101
|
+
background = Background.new(
|
102
|
+
language,
|
103
|
+
Location.new('test.spec', 2),
|
104
|
+
comment = Comment.new(''),
|
105
|
+
keyword = '',
|
106
|
+
title = '',
|
107
|
+
description = '',
|
108
|
+
steps = [
|
109
|
+
Step.new(language, Location.new('test.spec', 7), "Given", "y is 5")
|
110
|
+
]
|
111
|
+
)
|
112
|
+
|
113
|
+
background.feature = @feature
|
114
|
+
|
115
|
+
@visitor.should_receive( :visit_exception ) do |exception, status|
|
116
|
+
exception.should be_instance_of( Exception )
|
117
|
+
exception.message.should == "Exception from Before hook"
|
118
|
+
status.should == :failed
|
119
|
+
end
|
120
|
+
|
121
|
+
lambda{ background.accept(@visitor) }.should_not raise_error
|
122
|
+
background.should be_failed
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'lucid/ast/doc_string'
|
3
|
+
|
4
|
+
module Lucid
|
5
|
+
module AST
|
6
|
+
describe DocString do
|
7
|
+
|
8
|
+
describe 'replacing arguments' do
|
9
|
+
before(:each) do
|
10
|
+
@ps = DocString.new("<book>\n<qty>\n", '')
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should return a new doc_string with arguments replaced with values' do
|
14
|
+
doc_string_with_replaced_arg = @ps.arguments_replaced({'<book>' => 'Leviathan', '<qty>' => '5'})
|
15
|
+
doc_string_with_replaced_arg.to_step_definition_arg.should == "Leviathan\n5\n"
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should not change the original doc_string' do
|
19
|
+
doc_string_with_replaced_arg = @ps.arguments_replaced({'<book>' => 'Leviathan'})
|
20
|
+
@ps.to_s.should_not include('Leviathan')
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should replace nil with empty string' do
|
24
|
+
ps = DocString.new("'<book>'", '')
|
25
|
+
doc_string_with_replaced_arg = ps.arguments_replaced({'<book>' => nil})
|
26
|
+
doc_string_with_replaced_arg.to_step_definition_arg.should == "''"
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should recognise when just a subset of a cell is delimited' do
|
30
|
+
@ps.should have_text('<qty>')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'lucid/ast/tdl_factory'
|
3
|
+
|
4
|
+
module Lucid
|
5
|
+
module AST
|
6
|
+
describe Feature do
|
7
|
+
include TDLFactory
|
8
|
+
|
9
|
+
it 'should convert to a symbolic expression' do
|
10
|
+
runtime = Lucid::Runtime.new
|
11
|
+
runtime.load_code_language('rb')
|
12
|
+
dsl = Object.new
|
13
|
+
dsl.extend Lucid::InterfaceRb::RbLucid
|
14
|
+
|
15
|
+
feature = create_feature(dsl)
|
16
|
+
if Lucid::WINDOWS
|
17
|
+
feature_file_path = 'specs\\test.spec'
|
18
|
+
else
|
19
|
+
feature_file_path = 'specs/test.spec'
|
20
|
+
end
|
21
|
+
|
22
|
+
feature.to_sexp.should ==
|
23
|
+
[
|
24
|
+
:feature,
|
25
|
+
feature_file_path,
|
26
|
+
'Testing TDL',
|
27
|
+
[:comment, "# Feature Comment Line\n"],
|
28
|
+
[:tag, 'smoke'],
|
29
|
+
[:tag, 'critical'],
|
30
|
+
[:background, 2, 'Background:',
|
31
|
+
[:step, 3, 'Given', 'a passing step']],
|
32
|
+
[:scenario, 9, 'Scenario:',
|
33
|
+
'Test Scenario',
|
34
|
+
[:comment, " # Scenario Comment Line 1 \n# Scenario Comment Line 2 \n"],
|
35
|
+
[:tag, 'regression'],
|
36
|
+
[:tag, 'selenium'],
|
37
|
+
[:step_invocation, 3, 'Given', 'a passing step'],
|
38
|
+
[:step_invocation, 10, 'Given', 'a passing step with an inline argument:',
|
39
|
+
[:table,
|
40
|
+
[:row, -1,
|
41
|
+
[:cell, '1'], [:cell, '22'], [:cell, '333']],
|
42
|
+
[:row, -1,
|
43
|
+
[:cell, '4444'], [:cell, '55555'], [:cell, '666666']]]],
|
44
|
+
[:step_invocation, 11, 'Given', 'a working step with an inline argument:',
|
45
|
+
[:doc_string, "\n Testing with\nLucid tools\n"]],
|
46
|
+
[:step_invocation, 12, 'Given', 'a non-passing step']]
|
47
|
+
]
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should store operating system specific file paths' do
|
51
|
+
runtime = Lucid::Runtime.new
|
52
|
+
runtime.load_code_language('rb')
|
53
|
+
dsl = Object.new
|
54
|
+
dsl.extend Lucid::InterfaceRb::RbLucid
|
55
|
+
feature = create_feature(dsl)
|
56
|
+
|
57
|
+
if Lucid::WINDOWS
|
58
|
+
feature.file.should == 'specs\test.spec'
|
59
|
+
else
|
60
|
+
feature.file.should == 'specs/test.spec'
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Lucid::AST
|
4
|
+
describe OutlineTable do
|
5
|
+
describe OutlineTable::ExampleRow do
|
6
|
+
describe 'a header row' do
|
7
|
+
before(:each) do
|
8
|
+
@row = OutlineTable::ExampleRow.new(
|
9
|
+
double('table', :index => 0),
|
10
|
+
[double('cell', :status= => nil, :accept => nil)]
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should raise an error if you try to call #failed?' do
|
15
|
+
@row.accept_plain double('visitor', :visit_table_cell => nil)
|
16
|
+
lambda{ @row.failed? }.should raise_error(NoMethodError, /cannot pass or fail/)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'lucid/ast'
|
4
|
+
require 'lucid/core_ext/string'
|
5
|
+
require 'lucid/interface_rb/rb_language'
|
6
|
+
|
7
|
+
module Lucid
|
8
|
+
module AST
|
9
|
+
|
10
|
+
describe ScenarioOutline do
|
11
|
+
|
12
|
+
before do
|
13
|
+
@runtime = Lucid::Runtime.new
|
14
|
+
@runtime.load_code_language('rb')
|
15
|
+
@dsl = Object.new
|
16
|
+
@dsl.extend(Lucid::InterfaceRb::RbLucid)
|
17
|
+
|
18
|
+
@dsl.Given(/^there are (\d+) tests$/) do |n|
|
19
|
+
@initial = n.to_i
|
20
|
+
end
|
21
|
+
|
22
|
+
@dsl.When(/^testing (\d+) scenarios$/) do |n|
|
23
|
+
@tested = n.to_i
|
24
|
+
end
|
25
|
+
|
26
|
+
@dsl.Then(/^there should be (\d+) tests$/) do |n|
|
27
|
+
(@initial - @tested).should == n.to_i
|
28
|
+
end
|
29
|
+
|
30
|
+
@dsl.Then(/^there should be (\d+) tests completed$/) do |n|
|
31
|
+
@tested.should == n.to_i
|
32
|
+
end
|
33
|
+
|
34
|
+
location = AST::Location.new('test.spec', 19)
|
35
|
+
language = double
|
36
|
+
|
37
|
+
@scenario_outline = ScenarioOutline.new(
|
38
|
+
language,
|
39
|
+
location,
|
40
|
+
background=AST::EmptyBackground.new,
|
41
|
+
Comment.new(''),
|
42
|
+
Tags.new(18, []),
|
43
|
+
Tags.new(0, []),
|
44
|
+
'Scenario:', 'Test Outline', '',
|
45
|
+
[
|
46
|
+
Step.new(language, location.on_line(20), 'Given', 'there are <start> tests'),
|
47
|
+
Step.new(language, location.on_line(21), 'When', 'testing <tests> scenarios'),
|
48
|
+
Step.new(language, location.on_line(22), 'Then', 'there should be <left> tests'),
|
49
|
+
Step.new(language, location.on_line(23), 'And', 'there should be <tests> tests completed')
|
50
|
+
],
|
51
|
+
[
|
52
|
+
[
|
53
|
+
[
|
54
|
+
location.on_line(24),
|
55
|
+
Comment.new("# Testing\n"),
|
56
|
+
'Examples:',
|
57
|
+
'First table',
|
58
|
+
'',
|
59
|
+
[
|
60
|
+
%w{start tests left},
|
61
|
+
%w{12 5 7},
|
62
|
+
%w{20 6 14}
|
63
|
+
]
|
64
|
+
],
|
65
|
+
Gherkin::Formatter::Model::Examples.new(nil, nil, nil, nil, nil, nil, nil, nil)
|
66
|
+
]
|
67
|
+
]
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'should replace all variables and call outline once for each table row' do
|
72
|
+
visitor = TDLWalker.new(@runtime)
|
73
|
+
visitor.should_receive(:visit_table_row).exactly(3).times
|
74
|
+
@scenario_outline.feature = double.as_null_object
|
75
|
+
@scenario_outline.accept(visitor)
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Lucid
|
4
|
+
module AST
|
5
|
+
describe Specs do
|
6
|
+
let(:specs) { Specs.new }
|
7
|
+
|
8
|
+
def parse_feature(gherkin)
|
9
|
+
path = 'specs/test.spec'
|
10
|
+
builder = Lucid::Parser::TDLBuilder.new(path)
|
11
|
+
parser = Gherkin::Parser::Parser.new(builder, true, 'root', false)
|
12
|
+
parser.parse(gherkin, path, 0)
|
13
|
+
builder.language = parser.i18n_language
|
14
|
+
feature = builder.result
|
15
|
+
specs.add_feature(feature)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'has a step_count' do
|
19
|
+
parse_feature(<<-GHERKIN)
|
20
|
+
Feature:
|
21
|
+
Background:
|
22
|
+
Given step 1
|
23
|
+
And step 2
|
24
|
+
|
25
|
+
Scenario:
|
26
|
+
Given step 3
|
27
|
+
And step 4
|
28
|
+
And step 5
|
29
|
+
|
30
|
+
Scenario Outline:
|
31
|
+
Given step <n>
|
32
|
+
And another step
|
33
|
+
|
34
|
+
Examples:
|
35
|
+
| n |
|
36
|
+
| 6 |
|
37
|
+
| 7 |
|
38
|
+
|
39
|
+
Examples:
|
40
|
+
| n |
|
41
|
+
| 8 |
|
42
|
+
GHERKIN
|
43
|
+
|
44
|
+
specs.step_count.should == (2 + 3) + (3 * (2 + 2))
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'lucid/ast/step_invocation'
|
3
|
+
|
4
|
+
module Lucid
|
5
|
+
module AST
|
6
|
+
describe StepInvocation do
|
7
|
+
let(:step_invocation) do
|
8
|
+
matched_cells = []
|
9
|
+
StepInvocation.new(double, double, double, matched_cells)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'filtering backtraces' do
|
13
|
+
context 'when enabled' do
|
14
|
+
before { Lucid.stub use_full_backtrace: false }
|
15
|
+
|
16
|
+
it "removes lines with 'gems' in the path" do
|
17
|
+
original_backtrace = ['/foo/bar/gems/baz', '/path/to/my/file.rb']
|
18
|
+
exception = StandardError.new
|
19
|
+
exception.set_backtrace(original_backtrace)
|
20
|
+
result = step_invocation.filter_backtrace(exception).backtrace
|
21
|
+
result.should == ['/path/to/my/file.rb']
|
22
|
+
end
|
23
|
+
|
24
|
+
it "removes lines with '.gem' in the path" do
|
25
|
+
original_backtrace = ['/foo/bar/.gem/baz', '/path/to/my/file.rb']
|
26
|
+
exception = StandardError.new
|
27
|
+
exception.set_backtrace(original_backtrace)
|
28
|
+
result = step_invocation.filter_backtrace(exception).backtrace
|
29
|
+
result.should == ['/path/to/my/file.rb']
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when disabled' do
|
34
|
+
before { Lucid.stub use_full_backtrace: true }
|
35
|
+
|
36
|
+
it 'return the exception unmodified' do
|
37
|
+
exception = double
|
38
|
+
step_invocation.filter_backtrace(exception).should == exception
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'lucid/ast'
|
4
|
+
require 'lucid/core_ext/string'
|
5
|
+
|
6
|
+
module Lucid
|
7
|
+
module AST
|
8
|
+
|
9
|
+
describe Step do
|
10
|
+
let(:language) { double }
|
11
|
+
|
12
|
+
it 'should replace arguments in name' do
|
13
|
+
step = Step.new(language, 1, 'Given', 'a <status> test')
|
14
|
+
|
15
|
+
invocation_table = Table.new([
|
16
|
+
%w{status build},
|
17
|
+
%w{passing failing}
|
18
|
+
])
|
19
|
+
|
20
|
+
cells = invocation_table.cells_rows[1]
|
21
|
+
step_invocation = step.step_invocation_from_cells(cells)
|
22
|
+
|
23
|
+
step_invocation.name.should == 'a passing test'
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should use empty string for the replacement of arguments in name when replace value is nil' do
|
27
|
+
step = Step.new(language, 1, 'Given', 'a <status> test')
|
28
|
+
|
29
|
+
invocation_table = Table.new([
|
30
|
+
%w(status),
|
31
|
+
[nil]
|
32
|
+
])
|
33
|
+
|
34
|
+
cells = invocation_table.cells_rows[1]
|
35
|
+
step_invocation = step.step_invocation_from_cells(cells)
|
36
|
+
|
37
|
+
step_invocation.name.should == 'a test'
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should replace arguments in provided table arguments' do
|
41
|
+
arg_table = Table.new([%w{status_<status> type_<type>}])
|
42
|
+
step = Step.new(language, 1, 'Given', 'a <status> test', arg_table)
|
43
|
+
|
44
|
+
invocation_table = Table.new([
|
45
|
+
%w{status type},
|
46
|
+
%w{passing regression}
|
47
|
+
])
|
48
|
+
|
49
|
+
cells = invocation_table.cells_rows[1]
|
50
|
+
step_invocation = step.step_invocation_from_cells(cells)
|
51
|
+
|
52
|
+
step_invocation.instance_variable_get('@multiline_arg').raw.should == [%w{status_passing type_regression}]
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should replace arguments in a doc string argument' do
|
56
|
+
doc_string = DocString.new('status_<status> type_<type>', '')
|
57
|
+
step = Step.new(language, 1, 'Given', 'a <status> test', doc_string)
|
58
|
+
|
59
|
+
invocation_table = Table.new([
|
60
|
+
%w{status type},
|
61
|
+
%w{passing regression}
|
62
|
+
])
|
63
|
+
|
64
|
+
cells = invocation_table.cells_rows[1]
|
65
|
+
step_invocation = step.step_invocation_from_cells(cells)
|
66
|
+
|
67
|
+
step_invocation.instance_variable_get('@multiline_arg').to_step_definition_arg.should == 'status_passing type_regression'
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|