lucid 0.3.3 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +13 -9
- data/README.md +2 -6
- data/lib/lucid.rb +22 -3
- data/lib/lucid/{term/ansicolor.rb → ansicolor.rb} +34 -41
- data/lib/lucid/ast.rb +2 -2
- data/lib/lucid/ast/outline_table.rb +2 -2
- data/lib/lucid/ast/{specs.rb → spec.rb} +10 -1
- data/lib/lucid/ast/step.rb +3 -3
- data/lib/lucid/ast/step_invocation.rb +16 -16
- data/lib/lucid/ast/table.rb +1 -1
- data/lib/lucid/ast/{tdl_walker.rb → walker.rb} +15 -16
- data/lib/lucid/cli/app.rb +23 -21
- data/lib/lucid/cli/{configuration.rb → context.rb} +66 -38
- data/lib/lucid/cli/options.rb +59 -40
- data/lib/lucid/{configuration.rb → context.rb} +2 -3
- data/lib/lucid/{runtime.rb → context_loader.rb} +58 -61
- data/lib/lucid/{runtime/facade.rb → facade.rb} +5 -6
- data/lib/lucid/formatter/ansicolor.rb +15 -14
- data/lib/lucid/formatter/debug.rb +1 -1
- data/lib/lucid/formatter/usage.rb +2 -2
- data/lib/lucid/interface.rb +121 -0
- data/lib/lucid/{runtime/interface_io.rb → interface_io.rb} +2 -2
- data/lib/lucid/interface_rb/rb_language.rb +6 -23
- data/lib/lucid/interface_rb/rb_step_definition.rb +1 -2
- data/lib/lucid/{core_ext/instance_exec.rb → lang_extend.rb} +112 -69
- data/lib/lucid/{runtime/orchestrator.rb → orchestrator.rb} +36 -24
- data/lib/lucid/platform.rb +1 -1
- data/lib/lucid/{runtime/results.rb → results.rb} +10 -10
- data/lib/lucid/{tdl_builder.rb → spec_builder.rb} +26 -22
- data/lib/lucid/spec_file.rb +33 -13
- data/lib/lucid/{runtime/specs_loader.rb → spec_loader.rb} +13 -22
- data/lib/lucid/{step_definition_light.rb → step_definition_usage.rb} +2 -4
- data/lib/lucid/step_definitions.rb +4 -4
- data/spec/lucid/app_spec.rb +6 -18
- data/spec/lucid/ast/background_spec.rb +4 -4
- data/spec/lucid/ast/feature_spec.rb +7 -7
- data/spec/lucid/ast/scenario_outline_spec.rb +9 -9
- data/spec/lucid/ast/specs_spec.rb +8 -8
- data/spec/lucid/ast/step_spec.rb +5 -5
- data/spec/lucid/ast/tdl_walker_spec.rb +5 -5
- data/spec/lucid/{configuration_spec.rb → context_spec.rb} +78 -78
- data/spec/lucid/facade_spec.rb +7 -7
- data/spec/lucid/orchestrator_spec.rb +7 -7
- data/spec/lucid/pending_spec.rb +3 -3
- data/spec/lucid/progress_spec.rb +3 -3
- data/spec/lucid/rb_step_definition_spec.rb +4 -4
- data/spec/lucid/results_spec.rb +2 -2
- data/spec/lucid/runtime_spec.rb +7 -7
- metadata +20 -32
- data/bin/lucid-gen +0 -4
- data/lib/lucid/core_ext/proc.rb +0 -36
- data/lib/lucid/core_ext/string.rb +0 -9
- data/lib/lucid/generator.rb +0 -21
- data/lib/lucid/generators/project.rb +0 -64
- data/lib/lucid/generators/project/Gemfile.tt +0 -6
- data/lib/lucid/generators/project/browser-fluent.rb +0 -37
- data/lib/lucid/generators/project/driver-fluent.rb +0 -1
- data/lib/lucid/generators/project/errors.rb +0 -26
- data/lib/lucid/generators/project/events-fluent.rb +0 -33
- data/lib/lucid/interface_methods.rb +0 -125
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b390e73608f98acdafab429d0931d92a51aa9716
|
4
|
+
data.tar.gz: 16d88cf605d75074f38cbaa18a2dffb05e4039ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2e758b4b1d1816639a404479501ce44ba35602bd34670953e75e92f661c786a9e92920ab2ed6a60b6ac91a3d5b2a6279d3f3cd4a68de0dee7c04909fab4abb5
|
7
|
+
data.tar.gz: 166a0a2a6e087fbf28b9dd00431a463a35e0929df17b731ee48847375a9d4dedaeb46450dcd160517b520b7cdc41ad5642b413d7b846c736455580994c450f09
|
data/HISTORY.md
CHANGED
@@ -1,6 +1,19 @@
|
|
1
1
|
Change Log and History
|
2
2
|
======================
|
3
3
|
|
4
|
+
Version 0.4.0 / 2013-02-15
|
5
|
+
--------------------------
|
6
|
+
|
7
|
+
A large purpose for this release of Lucid is to clean up the internals of the code base, in particular naming code structures in such a way that they are more reflective of what they actually do. This release is very much in the category of tech-debt reduction.
|
8
|
+
|
9
|
+
* This version of Lucid removes the project generator (lucid-gen) that was originally part of it. That project has been separated off into its own project [LucidGen](https://github.com/jnyman/lucid-gen). This, at least partially, responds to the issue [External Project Generator Mechanism](https://github.com/jnyman/lucid/issues/14).
|
10
|
+
|
11
|
+
* A slightly better logging mechanism is in place such that executing Lucid with `--debug` specified will now provide a much better output of objects, making it easier to determine the internal state of Lucid's operations. Included with this is debug output of the AST when a spec file is read.
|
12
|
+
|
13
|
+
* A change has been put in place regarding how the `--dry-run` functionality works. Prior to this release, the driver file (by default, common/support/driver.rb) would not be included when you performed a dry-run against your repository. That's still in place but now Lucid will also exclude any page or activity definition files. This was found to be necessary because those files will often utilize elements that are required in the driver file.
|
14
|
+
|
15
|
+
* It is now possible to specifically indicate, via the command line, the steps path (by default, steps) and the definitions page (by default, pages). The latter is meant to build in support for the concept of page objects.
|
16
|
+
|
4
17
|
Version 0.3.3 / 2013-02-13
|
5
18
|
--------------------------
|
6
19
|
|
@@ -17,13 +30,11 @@ Lucid already uses the concept of a Domain, which is similar to Cucumber's World
|
|
17
30
|
|
18
31
|
The project generator for creating Fluent projects has been updated. The main change of note here is that the `lucid.yml` configuration file is no longer automatically generated. The reason for this is that Lucid operation requires no configuration at all if the conventions in place are what you want to use.
|
19
32
|
|
20
|
-
|
21
33
|
Version 0.2.1 / 2013-10-21
|
22
34
|
--------------------------
|
23
35
|
|
24
36
|
This is a small patch release. The patch is in the project generator. The [Symbiont](https://github.com/jnyman/symbiont) test framework is being deprecated in favor of [Fluent](https://github.com/jnyman/fluent). The project generator has been updated accordingly.
|
25
37
|
|
26
|
-
|
27
38
|
Version 0.2.0 / 2013-09-28
|
28
39
|
--------------------------
|
29
40
|
|
@@ -31,7 +42,6 @@ This release introduces a fairly major change, which is that of sequences. The i
|
|
31
42
|
|
32
43
|
This release also introduces a new formatter called "condensed." This formatter is used simply to display a much more limited set of information about the scenarios that are being executed. Specifically, all that gets returned are the scenario titles, essentially hiding all of the steps. Pass/fail information is still reported.
|
33
44
|
|
34
|
-
|
35
45
|
Version 0.1.1 / 2013-06-04
|
36
46
|
--------------------------
|
37
47
|
|
@@ -41,7 +51,6 @@ This patch release was needed to fix one issue and update a gem dependency.
|
|
41
51
|
|
42
52
|
* I am trusting multi_json again by including just it and not forcing Ruby's built-in json gem. This is based on the issue [Incorrectly Reporting Old or Stdlib Json?](https://github.com/intridea/multi_json/issues/114) that I originally raised and finally had a response with the [Remove stdlib warning since it's doing more harm than good](https://github.com/intridea/multi_json/pull/122) update to multi_json.
|
43
53
|
|
44
|
-
|
45
54
|
Version 0.1.0 / 2013-06-02
|
46
55
|
--------------------------
|
47
56
|
|
@@ -59,7 +68,6 @@ This version is being released to introduce a few more behind-the-scenes logic r
|
|
59
68
|
|
60
69
|
As a note, this is the final "patch" version of Lucid prior to going to a semantic versioning approach. Lucid will next enter the initial development phase.
|
61
70
|
|
62
|
-
|
63
71
|
Version 0.0.8 / 2013-05-20
|
64
72
|
--------------------------
|
65
73
|
|
@@ -68,7 +76,6 @@ This version is being released to bring in two specific bug fixes.
|
|
68
76
|
* Certain profile options were not being recognized. ([Spec Type Specified in Profile Not Recognized](https://github.com/jnyman/lucid/issues/10).)
|
69
77
|
* The strict mode now works more as intended. ([Using "strict" Does Not Return Errors](https://github.com/jnyman/lucid/issues/8).)
|
70
78
|
|
71
|
-
|
72
79
|
Version 0.0.7 / 2013-05-17
|
73
80
|
--------------------------
|
74
81
|
|
@@ -81,7 +88,6 @@ Two specific changes worth calling out:
|
|
81
88
|
|
82
89
|
The driver file in Cucumber is env.rb. In Lucid this defaults to driver.rb. Now, however, you can override that default. Regarding the library path, this is equivalent to what Cucumber refers to as the "support" directory. The main reason for these changes is that Lucid is trying to be a little more configurable than Cucumber.
|
83
90
|
|
84
|
-
|
85
91
|
Version 0.0.6 / 2013-05-09
|
86
92
|
--------------------------
|
87
93
|
|
@@ -92,7 +98,6 @@ This version attempts to fix a few issues to improve general operation.
|
|
92
98
|
* Lucid now handles missing directories without raising exceptions. ([Extraneous "No File or Directory" Messages](https://github.com/jnyman/lucid/issues/3).)
|
93
99
|
* The default generator project recognizes a missing Symbiont gem. ([Stack Trace When Symbiont Not Installed](https://github.com/jnyman/lucid/issues/5).)
|
94
100
|
|
95
|
-
|
96
101
|
Version 0.0.5 / 2013-05-04
|
97
102
|
--------------------------
|
98
103
|
|
@@ -107,7 +112,6 @@ Lucid is aiming to be more flexible than other tools, so certain elements -- lik
|
|
107
112
|
|
108
113
|
This is very much an alpha release to determine how feasible Lucid is as a tool.
|
109
114
|
|
110
|
-
|
111
115
|
Versions 0.0.1 to 0.0.4
|
112
116
|
-----------------------
|
113
117
|
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ Description
|
|
13
13
|
|
14
14
|
Lucid is a Test Description Language (TDL) specification and execution engine. It is a clone of the popular tool [Cucumber](http://cukes.info/). Lucid is diverging in many ways from Cucumber but it does owe much of its initial structure to it. Lucid will also be incorporating some of the good ideas that have come to light in tools like [Spinach](https://github.com/codegram/spinach) and [Turnip](https://github.com/jnicklas/turnip).
|
15
15
|
|
16
|
-
|
16
|
+
Lucid is currently in an extended beta period, essentially becoming its own entity in the world of BDD tools.
|
17
17
|
|
18
18
|
|
19
19
|
Installation
|
@@ -35,16 +35,12 @@ Or install it yourself as:
|
|
35
35
|
Using Lucid
|
36
36
|
-----------
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
$ lucid-gen project tutorial
|
38
|
+
Right now the best way to learn about Lucid is to check out some of my [blog posts related to Lucid](http://testerstories.com/category/lucid/). They will take you through various aspects of using the framework.
|
41
39
|
|
42
40
|
In order to to check what options are available to you from the command line, do this:
|
43
41
|
|
44
42
|
$ lucid --help
|
45
43
|
|
46
|
-
You should also check out some of my [blog posts related to Lucid](http://testerstories.com/category/lucid/). They will take you through various aspects of using the framework.
|
47
|
-
|
48
44
|
|
49
45
|
Contributing
|
50
46
|
------------
|
data/lib/lucid.rb
CHANGED
@@ -1,18 +1,32 @@
|
|
1
1
|
$:.unshift(File.dirname(__FILE__)) unless
|
2
2
|
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
3
|
|
4
|
+
require 'pp'
|
4
5
|
require 'yaml'
|
5
6
|
require 'logger'
|
7
|
+
require 'stringio'
|
6
8
|
require 'lucid/platform'
|
7
|
-
require 'lucid/
|
9
|
+
require 'lucid/context_loader'
|
8
10
|
require 'lucid/cli/app'
|
9
11
|
require 'lucid/step_definitions'
|
10
|
-
require 'lucid/
|
12
|
+
require 'lucid/ansicolor'
|
11
13
|
|
12
14
|
module Lucid
|
13
15
|
class << self
|
14
16
|
attr_accessor :wants_to_quit
|
15
17
|
|
18
|
+
def breakdown(*args)
|
19
|
+
current_output = $stdout
|
20
|
+
begin
|
21
|
+
msg_string = StringIO.new
|
22
|
+
$stdout = msg_string
|
23
|
+
pp(*args)
|
24
|
+
ensure
|
25
|
+
$stdout = current_output
|
26
|
+
end
|
27
|
+
msg_string.string
|
28
|
+
end
|
29
|
+
|
16
30
|
def logger
|
17
31
|
return @log if @log
|
18
32
|
@log = Logger.new(STDOUT)
|
@@ -27,7 +41,12 @@ module Lucid
|
|
27
41
|
|
28
42
|
class LogFormatter < ::Logger::Formatter
|
29
43
|
def call(severity, time, progname, msg)
|
30
|
-
|
44
|
+
if msg.is_a?(String)
|
45
|
+
"\n[ LUCID (#{severity}) ] #{msg}\n"
|
46
|
+
else
|
47
|
+
msg = Lucid.breakdown(msg)
|
48
|
+
"\n[ LUCID (#{severity}) ] \n#{msg}\n"
|
49
|
+
end
|
31
50
|
end
|
32
51
|
end
|
33
52
|
|
@@ -1,51 +1,44 @@
|
|
1
1
|
module Lucid
|
2
2
|
module Term
|
3
|
-
# The ANSIColor module can be used for namespacing and mixed into your own
|
4
|
-
# classes.
|
5
3
|
module ANSIColor
|
6
|
-
# :stopdoc:
|
7
4
|
ATTRIBUTES = [
|
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
|
-
[
|
5
|
+
[:clear , 0],
|
6
|
+
[:reset , 0], # synonym for :clear
|
7
|
+
[:bold , 1],
|
8
|
+
[:dark , 2],
|
9
|
+
[:italic , 3], # not widely implemented
|
10
|
+
[:underline , 4],
|
11
|
+
[:underscore , 4], # synonym for :underline
|
12
|
+
[:blink , 5],
|
13
|
+
[:rapid_blink , 6], # not widely implemented
|
14
|
+
[:negative , 7], # no reverse because of String#reverse
|
15
|
+
[:concealed , 8],
|
16
|
+
[:strikethrough, 9], # not widely implemented
|
17
|
+
[:black , 30],
|
18
|
+
[:red , 31],
|
19
|
+
[:green , 32],
|
20
|
+
[:yellow , 33],
|
21
|
+
[:blue , 34],
|
22
|
+
[:magenta , 35],
|
23
|
+
[:cyan , 36],
|
24
|
+
[:white , 37],
|
25
|
+
[:on_black , 40],
|
26
|
+
[:on_red , 41],
|
27
|
+
[:on_green , 42],
|
28
|
+
[:on_yellow , 43],
|
29
|
+
[:on_blue , 44],
|
30
|
+
[:on_magenta , 45],
|
31
|
+
[:on_cyan , 46],
|
32
|
+
[:on_white , 47],
|
36
33
|
]
|
37
34
|
|
38
35
|
ATTRIBUTE_NAMES = ATTRIBUTES.transpose.first
|
39
|
-
# :startdoc:
|
40
36
|
|
41
|
-
# Returns true, if the coloring function of this module
|
42
|
-
# is switched on, false otherwise.
|
43
37
|
def self.coloring?
|
44
38
|
@coloring
|
45
39
|
end
|
46
40
|
|
47
|
-
#
|
48
|
-
# this for example:
|
41
|
+
# Example Usage:
|
49
42
|
# Lucid::Term::ANSIColor::coloring = STDOUT.isatty
|
50
43
|
def self.coloring=(val)
|
51
44
|
@coloring = val
|
@@ -73,9 +66,9 @@ module Lucid
|
|
73
66
|
end
|
74
67
|
|
75
68
|
# Regular expression that is used to scan for ANSI-sequences while
|
76
|
-
#
|
69
|
+
# there are uncolored strings.
|
77
70
|
COLORED_REGEXP = /\e\[(?:[34][0-7]|[0-9])?m/
|
78
|
-
|
71
|
+
|
79
72
|
def self.included(klass)
|
80
73
|
if klass == String
|
81
74
|
ATTRIBUTES.delete(:clear)
|
@@ -83,9 +76,9 @@ module Lucid
|
|
83
76
|
end
|
84
77
|
end
|
85
78
|
|
86
|
-
# Returns an uncolored version of the string
|
87
|
-
# ANSI-sequences
|
88
|
-
def uncolored(string = nil)
|
79
|
+
# Returns an uncolored version of the string. This means all
|
80
|
+
# ANSI-sequences will be stripped from the string.
|
81
|
+
def uncolored(string = nil)
|
89
82
|
if block_given?
|
90
83
|
yield.gsub(COLORED_REGEXP, '')
|
91
84
|
elsif string
|
data/lib/lucid/ast.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'lucid/ast/comment'
|
2
|
-
require 'lucid/ast/
|
2
|
+
require 'lucid/ast/spec'
|
3
3
|
require 'lucid/ast/feature'
|
4
4
|
require 'lucid/ast/background'
|
5
5
|
require 'lucid/ast/scenario'
|
@@ -14,7 +14,7 @@ require 'lucid/ast/tags'
|
|
14
14
|
require 'lucid/ast/doc_string'
|
15
15
|
require 'lucid/ast/outline_table'
|
16
16
|
require 'lucid/ast/examples'
|
17
|
-
require 'lucid/ast/
|
17
|
+
require 'lucid/ast/walker'
|
18
18
|
|
19
19
|
module Lucid
|
20
20
|
module AST
|
@@ -83,7 +83,7 @@ module Lucid
|
|
83
83
|
end
|
84
84
|
|
85
85
|
def accept(visitor)
|
86
|
-
if visitor.
|
86
|
+
if visitor.context.expand?
|
87
87
|
accept_expand(visitor)
|
88
88
|
else
|
89
89
|
visitor.visit_table_row(self) do
|
@@ -101,7 +101,7 @@ module Lucid
|
|
101
101
|
else
|
102
102
|
visitor.runtime.with_hooks(self) do
|
103
103
|
@step_invocations.each do |step_invocation|
|
104
|
-
step_invocation.invoke(visitor.runtime, visitor.
|
104
|
+
step_invocation.invoke(visitor.runtime, visitor.context)
|
105
105
|
@exception ||= step_invocation.reported_exception
|
106
106
|
end
|
107
107
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Lucid
|
2
2
|
module AST
|
3
|
-
class
|
3
|
+
class Spec
|
4
4
|
include Enumerable
|
5
5
|
|
6
6
|
attr_reader :duration
|
@@ -17,6 +17,7 @@ module Lucid
|
|
17
17
|
@features.each(&proc)
|
18
18
|
end
|
19
19
|
|
20
|
+
# @see Lucid::SpecLoader.load
|
20
21
|
def add_feature(feature)
|
21
22
|
@features << feature
|
22
23
|
end
|
@@ -30,6 +31,8 @@ module Lucid
|
|
30
31
|
start = Time.now
|
31
32
|
|
32
33
|
self.each do |feature|
|
34
|
+
log.debug('Feature AST:')
|
35
|
+
log.debug(feature)
|
33
36
|
feature.accept(visitor)
|
34
37
|
end
|
35
38
|
|
@@ -40,6 +43,12 @@ module Lucid
|
|
40
43
|
def step_count
|
41
44
|
@features.inject(0) { |total, feature| total += feature.step_count }
|
42
45
|
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def log
|
50
|
+
Lucid.logger
|
51
|
+
end
|
43
52
|
end
|
44
53
|
end
|
45
54
|
end
|
data/lib/lucid/ast/step.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require 'lucid/
|
1
|
+
require 'lucid/lang_extend'
|
2
2
|
require 'lucid/step_match'
|
3
3
|
require 'lucid/ast/location'
|
4
4
|
|
5
5
|
module Lucid
|
6
6
|
module AST
|
7
|
-
class Step
|
7
|
+
class Step
|
8
8
|
include HasLocation
|
9
9
|
|
10
10
|
attr_reader :keyword, :name, :language
|
@@ -15,7 +15,7 @@ module Lucid
|
|
15
15
|
|
16
16
|
def initialize(language, location, keyword, name, multiline_arg=nil)
|
17
17
|
@language, @location, @keyword, @name, @multiline_arg = language, location, keyword, name, multiline_arg
|
18
|
-
@language || raise(
|
18
|
+
@language || raise('Language is required.')
|
19
19
|
end
|
20
20
|
|
21
21
|
attr_reader :gherkin_statement
|
@@ -5,7 +5,7 @@ require 'gherkin/rubify'
|
|
5
5
|
|
6
6
|
module Lucid
|
7
7
|
module AST
|
8
|
-
class StepInvocation
|
8
|
+
class StepInvocation
|
9
9
|
attr_writer :step_collection, :background
|
10
10
|
attr_reader :name, :matched_cells, :status, :reported_exception
|
11
11
|
attr_accessor :exception
|
@@ -33,58 +33,58 @@ module Lucid
|
|
33
33
|
|
34
34
|
def accept(visitor)
|
35
35
|
visitor.visit_step(self) do
|
36
|
-
invoke(visitor.runtime, visitor.
|
36
|
+
invoke(visitor.runtime, visitor.context)
|
37
37
|
step_result.accept(visitor)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
def invoke(runtime,
|
42
|
-
find_step_match!(runtime,
|
43
|
-
unless @skip_invoke ||
|
41
|
+
def invoke(runtime, context)
|
42
|
+
find_step_match!(runtime, context)
|
43
|
+
unless @skip_invoke || context.dry_run? || @exception || @step_collection.exception
|
44
44
|
@skip_invoke = true
|
45
45
|
begin
|
46
46
|
@step_match.invoke(@multiline_arg)
|
47
47
|
runtime.after_step
|
48
48
|
status!(:passed)
|
49
49
|
rescue Pending => e
|
50
|
-
failed(
|
50
|
+
failed(context, e, false)
|
51
51
|
status!(:pending)
|
52
52
|
rescue Undefined => e
|
53
|
-
failed(
|
53
|
+
failed(context, e, false)
|
54
54
|
status!(:undefined)
|
55
55
|
rescue Lucid::AST::Table::Different => e
|
56
56
|
@different_table = e.table
|
57
|
-
failed(
|
57
|
+
failed(context, e, false)
|
58
58
|
status!(:failed)
|
59
59
|
rescue Exception => e
|
60
|
-
failed(
|
60
|
+
failed(context, e, false)
|
61
61
|
status!(:failed)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def find_step_match!(runtime,
|
66
|
+
def find_step_match!(runtime, context)
|
67
67
|
return if @step_match
|
68
68
|
begin
|
69
69
|
@step_match = runtime.step_match(@name)
|
70
70
|
rescue Undefined => e
|
71
|
-
failed(
|
71
|
+
failed(context, e, true)
|
72
72
|
status!(:undefined)
|
73
73
|
@step_match = NoStepMatch.new(@step, @name)
|
74
74
|
rescue Ambiguous => e
|
75
|
-
failed(
|
75
|
+
failed(context, e, false)
|
76
76
|
status!(:failed)
|
77
77
|
@step_match = NoStepMatch.new(@step, @name)
|
78
78
|
end
|
79
79
|
runtime.step_visited(self)
|
80
80
|
end
|
81
81
|
|
82
|
-
def failed(
|
82
|
+
def failed(context, e, clear_backtrace)
|
83
83
|
e.set_backtrace([]) if e.backtrace.nil? || clear_backtrace
|
84
84
|
e.backtrace << @step.backtrace_line unless @step.backtrace_line.nil?
|
85
85
|
e = filter_backtrace(e)
|
86
86
|
@exception = e
|
87
|
-
if(
|
87
|
+
if(context.strict? || !(Undefined === e) || e.nested?)
|
88
88
|
@reported_exception = e
|
89
89
|
else
|
90
90
|
@reported_exception = nil
|
@@ -92,7 +92,7 @@ module Lucid
|
|
92
92
|
end
|
93
93
|
|
94
94
|
BACKTRACE_FILTER_PATTERNS = [/vendor\/rails|lib\/lucid|bin\/lucid:|lib\/rspec|gems\/|minitest|test\/unit|\/\.gem\//]
|
95
|
-
|
95
|
+
|
96
96
|
if(Lucid::JRUBY)
|
97
97
|
BACKTRACE_FILTER_PATTERNS << /org\/jruby/
|
98
98
|
end
|
@@ -101,7 +101,7 @@ module Lucid
|
|
101
101
|
|
102
102
|
def filter_backtrace(e)
|
103
103
|
return e if Lucid.use_full_backtrace
|
104
|
-
e.backtrace.each{|line| line.gsub!(PWD_PATTERN,
|
104
|
+
e.backtrace.each{|line| line.gsub!(PWD_PATTERN, './')}
|
105
105
|
|
106
106
|
filtered = (e.backtrace || []).reject do |line|
|
107
107
|
BACKTRACE_FILTER_PATTERNS.detect { |p| line =~ p }
|