cuke-inspector 0.0.5 → 0.0.6
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.
- data/.gitignore +1 -0
- data/VERSION +1 -1
- data/lib/cuke-inspector/formatter/pickle_sanitizer.rb +51 -0
- data/lib/cuke-inspector/formatter/stepdefs_json.rb +2 -1
- data/spec/cuke-inspector/formatter/pickle_sanitizer_spec.rb +95 -0
- data/spec/cuke-inspector/formatter/stepdefs_json_spec.rb +7 -0
- data/spec/spec_helper.rb +3 -1
- metadata +5 -2
data/.gitignore
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Cucumber
|
2
|
+
module Formatter
|
3
|
+
class PickleSanitizer
|
4
|
+
@@pickle_parser = nil
|
5
|
+
@@pickle_capture_methods = ['capture_model',
|
6
|
+
'capture_fields',
|
7
|
+
'capture_factory',
|
8
|
+
'capture_plural_factory',
|
9
|
+
'capture_predicate']
|
10
|
+
|
11
|
+
def self.unpickle(regexp_string)
|
12
|
+
if Gem.available?('pickle')
|
13
|
+
@@pickle_parser ||= Pickle::Parser.new(:config => Pickle::Config.new)
|
14
|
+
@@pickle_capture_methods.each do |capture_method|
|
15
|
+
regexp_string.gsub!(@@pickle_parser.send(capture_method), "\#{#{capture_method}}")
|
16
|
+
end
|
17
|
+
regexp_string = hacky_capture_predicate_sanitizer(regexp_string)
|
18
|
+
end
|
19
|
+
|
20
|
+
regexp_string
|
21
|
+
end
|
22
|
+
|
23
|
+
# Because the capture_predicate method at the time of running
|
24
|
+
# this code seems to differ from when it was run in the step
|
25
|
+
# that defined it, the simple method of replacing it does not
|
26
|
+
# work. Here is a convoluted regexp that does it. Better
|
27
|
+
# suggestions are welcome.
|
28
|
+
def self.hacky_capture_predicate_sanitizer(regexp_string)
|
29
|
+
regexp_string.gsub(/\(\(\?:((?:\w+(?:\[_ \]\w+)*)(?:\|\w+(?:\[_ \]\w+)*)*)\)\)/, '#{capture_predicate}')
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.find_methods_that_match(regexp_string)
|
33
|
+
methods = @@pickle_parser.methods.select { |m| m =~ /^match|capture/ }
|
34
|
+
methods.select do |method|
|
35
|
+
begin
|
36
|
+
foo = @@pickle_parser.send(method)
|
37
|
+
regexp_string.include?(foo)
|
38
|
+
rescue
|
39
|
+
false
|
40
|
+
end
|
41
|
+
end.sort
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def self.reset
|
47
|
+
@@pickle_parser = nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'cucumber'
|
2
2
|
require 'cucumber/formatter/usage'
|
3
|
+
require 'cuke-inspector/formatter/pickle_sanitizer'
|
3
4
|
|
4
5
|
module Cucumber
|
5
6
|
module Formatter
|
@@ -27,7 +28,7 @@ module Cucumber
|
|
27
28
|
regexp.gsub!(/\(\[\^\\?\"\]\*\??\)/, prompt)
|
28
29
|
regexp.gsub!('(.*)', prompt)
|
29
30
|
regexp.gsub!('\/([^\/]*)\/', "/#{prompt}/")
|
30
|
-
regexp
|
31
|
+
return PickleSanitizer.unpickle(regexp)
|
31
32
|
end
|
32
33
|
|
33
34
|
def progress(status)
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require 'cuke-inspector/formatter/pickle_sanitizer'
|
3
|
+
require 'pickle' # pickle is required to run the test suite
|
4
|
+
|
5
|
+
module Cucumber
|
6
|
+
module Formatter
|
7
|
+
describe PickleSanitizer do
|
8
|
+
describe "when pickle is not loaded" do
|
9
|
+
before do
|
10
|
+
Gem.stub!(:available?).with('pickle').and_return false
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns any regexp string unmodified" do
|
14
|
+
regexp_string = "a user exists with name: \"??\""
|
15
|
+
PickleSanitizer.unpickle(regexp_string).should == regexp_string
|
16
|
+
end
|
17
|
+
|
18
|
+
it "never creates a pickle parser" do
|
19
|
+
Pickle::Parser.should_not_receive(:new)
|
20
|
+
PickleSanitizer.unpickle('foo')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "when pickle is loaded" do
|
25
|
+
before do
|
26
|
+
PickleSanitizer.reset
|
27
|
+
Gem.stub!(:available?).with('pickle').and_return true
|
28
|
+
@parser = mock('pickle parser')
|
29
|
+
@parser.stub!(:capture_model).and_return 'mock capture model'
|
30
|
+
@parser.stub!(:capture_fields).and_return 'mock capture fields'
|
31
|
+
@parser.stub!(:capture_factory).and_return 'mock capture factory'
|
32
|
+
@parser.stub!(:capture_plural_factory).and_return 'mock capture plural factory'
|
33
|
+
@parser.stub!(:capture_predicate).and_return 'mock capture predicate'
|
34
|
+
Pickle::Parser.stub!(:new).and_return @parser
|
35
|
+
end
|
36
|
+
|
37
|
+
it "creates a pickle parser with a new config" do
|
38
|
+
mock_config = mock('pickle config')
|
39
|
+
Pickle::Config.stub!(:new).and_return mock_config
|
40
|
+
Pickle::Parser.should_receive(:new).with hash_including(:config => mock_config)
|
41
|
+
PickleSanitizer.unpickle('foo')
|
42
|
+
end
|
43
|
+
|
44
|
+
it "only creates a pickle parser once" do
|
45
|
+
PickleSanitizer.unpickle('foo')
|
46
|
+
Pickle::Parser.should_not_receive(:new)
|
47
|
+
PickleSanitizer.unpickle('foo')
|
48
|
+
end
|
49
|
+
|
50
|
+
it "maps a model capture to a placeholder" do
|
51
|
+
@parser.stub!(:capture_model).and_return('stubbed model capture regexp')
|
52
|
+
regexp_string = "this is a stubbed model capture regexp example"
|
53
|
+
PickleSanitizer.unpickle(regexp_string).should ==
|
54
|
+
"this is a \#{capture_model} example"
|
55
|
+
end
|
56
|
+
|
57
|
+
it "maps a fields capture to a placeholder" do
|
58
|
+
@parser.stub!(:capture_fields).and_return('stubbed fields capture regexp')
|
59
|
+
regexp_string = "this is a stubbed fields capture regexp example"
|
60
|
+
PickleSanitizer.unpickle(regexp_string).should ==
|
61
|
+
"this is a \#{capture_fields} example"
|
62
|
+
end
|
63
|
+
|
64
|
+
it "maps capture_factory to a placeholder" do
|
65
|
+
@parser.stub!(:capture_factory).and_return('stubbed factory capture regexp')
|
66
|
+
regexp_string = "this is a stubbed factory capture regexp example"
|
67
|
+
PickleSanitizer.unpickle(regexp_string).should ==
|
68
|
+
"this is a \#{capture_factory} example"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "maps capture_plural_factory to a place holder" do
|
72
|
+
@parser.stub!(:capture_plural_factory).and_return('stubbed plural factory capture regexp')
|
73
|
+
regexp_string = "this is a stubbed plural factory capture regexp example"
|
74
|
+
PickleSanitizer.unpickle(regexp_string).should ==
|
75
|
+
"this is a \#{capture_plural_factory} example"
|
76
|
+
end
|
77
|
+
|
78
|
+
it "maps capture_predicate" do
|
79
|
+
@parser.stub!(:capture_predicate).and_return('stubbed predicate capture regexp')
|
80
|
+
regexp_string = "this is a stubbed predicate capture regexp example"
|
81
|
+
PickleSanitizer.unpickle(regexp_string).should ==
|
82
|
+
"this is a \#{capture_predicate} example"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "maps capture_predicate even if it has changed" do
|
86
|
+
predicate_example = "((?:position[_ ]by[_ ]type|respond[_ ]to[_ ]without[_ ]attributes|invalid|publishing[_ ]enabled|attribute[_ ]present|nil|updated[_ ]at|acts[_ ]like|first[_ ]item|present))"
|
87
|
+
@parser.stub!(:capture_predicate).and_return(predicate_example)
|
88
|
+
regexp_string = "this string contains a simple predicate capture ((?:position[_ ]by[_ ]type|respond[_ ]to[_ ]without[_ ]attributes|invalid|publishing[_ ]enabled)) just before here"
|
89
|
+
PickleSanitizer.unpickle(regexp_string).should ==
|
90
|
+
'this string contains a simple predicate capture #{capture_predicate} just before here'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -5,6 +5,13 @@ module Cucumber
|
|
5
5
|
module Formatter
|
6
6
|
describe StepdefsJson do
|
7
7
|
describe "extracting text from regexp" do
|
8
|
+
before do
|
9
|
+
# Pretend that unpickle will always return its argument unmodified
|
10
|
+
def PickleSanitizer.unpickle(foo)
|
11
|
+
foo
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
8
15
|
it "should just return a simple string" do
|
9
16
|
StepdefsJson.extract_text_from_regexp("bla").should == "bla"
|
10
17
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cuke-inspector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom ten Thij
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-02 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -67,7 +67,9 @@ files:
|
|
67
67
|
- generators/cuke_inspector_view/templates/stylesheets/cuke_inspector.css
|
68
68
|
- generators/cuke_inspector_view/templates/stylesheets/tablesorter.css
|
69
69
|
- lib/cuke-inspector.rb
|
70
|
+
- lib/cuke-inspector/formatter/pickle_sanitizer.rb
|
70
71
|
- lib/cuke-inspector/formatter/stepdefs_json.rb
|
72
|
+
- spec/cuke-inspector/formatter/pickle_sanitizer_spec.rb
|
71
73
|
- spec/cuke-inspector/formatter/stepdefs_json_spec.rb
|
72
74
|
- spec/cuke-inspector_spec.rb
|
73
75
|
- spec/spec.opts
|
@@ -101,6 +103,7 @@ signing_key:
|
|
101
103
|
specification_version: 3
|
102
104
|
summary: Inspect the steps in a cucumber suite
|
103
105
|
test_files:
|
106
|
+
- spec/cuke-inspector/formatter/pickle_sanitizer_spec.rb
|
104
107
|
- spec/cuke-inspector/formatter/stepdefs_json_spec.rb
|
105
108
|
- spec/cuke-inspector_spec.rb
|
106
109
|
- spec/spec_helper.rb
|