cucumber_fm-core 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/LICENCE +20 -0
  2. data/lib/cucumber_f_m/aggregator.rb +65 -0
  3. data/lib/cucumber_f_m/comment_module/comment.rb +7 -0
  4. data/lib/cucumber_f_m/config.rb +37 -0
  5. data/lib/cucumber_f_m/cvs/git.rb +7 -0
  6. data/lib/cucumber_f_m/feature.rb +141 -0
  7. data/lib/cucumber_f_m/feature_element/background.rb +10 -0
  8. data/lib/cucumber_f_m/feature_element/comment.rb +13 -0
  9. data/lib/cucumber_f_m/feature_element/component/comments.rb +21 -0
  10. data/lib/cucumber_f_m/feature_element/component/information/component.rb +16 -0
  11. data/lib/cucumber_f_m/feature_element/component/tags.rb +108 -0
  12. data/lib/cucumber_f_m/feature_element/component/title.rb +26 -0
  13. data/lib/cucumber_f_m/feature_element/component/total_estimation.rb +42 -0
  14. data/lib/cucumber_f_m/feature_element/example.rb +7 -0
  15. data/lib/cucumber_f_m/feature_element/info.rb +13 -0
  16. data/lib/cucumber_f_m/feature_element/narrative.rb +7 -0
  17. data/lib/cucumber_f_m/feature_element/scenario.rb +15 -0
  18. data/lib/cucumber_f_m/feature_element/scenario_outline.rb +23 -0
  19. data/lib/cucumber_f_m/feature_element/step.rb +7 -0
  20. data/lib/cucumber_f_m/statistic.rb +31 -0
  21. data/lib/cucumber_f_m/tag_filter.rb +85 -0
  22. data/lib/cucumber_feature_manager.rb +164 -0
  23. data/lib/grit/lib/grit.rb +75 -0
  24. data/lib/grit/lib/grit/actor.rb +36 -0
  25. data/lib/grit/lib/grit/blame.rb +61 -0
  26. data/lib/grit/lib/grit/blob.rb +126 -0
  27. data/lib/grit/lib/grit/commit.rb +247 -0
  28. data/lib/grit/lib/grit/commit_stats.rb +128 -0
  29. data/lib/grit/lib/grit/config.rb +44 -0
  30. data/lib/grit/lib/grit/diff.rb +70 -0
  31. data/lib/grit/lib/grit/errors.rb +7 -0
  32. data/lib/grit/lib/grit/git-ruby.rb +267 -0
  33. data/lib/grit/lib/grit/git-ruby/commit_db.rb +52 -0
  34. data/lib/grit/lib/grit/git-ruby/file_index.rb +193 -0
  35. data/lib/grit/lib/grit/git-ruby/git_object.rb +350 -0
  36. data/lib/grit/lib/grit/git-ruby/internal/file_window.rb +58 -0
  37. data/lib/grit/lib/grit/git-ruby/internal/loose.rb +137 -0
  38. data/lib/grit/lib/grit/git-ruby/internal/pack.rb +384 -0
  39. data/lib/grit/lib/grit/git-ruby/internal/raw_object.rb +37 -0
  40. data/lib/grit/lib/grit/git-ruby/object.rb +325 -0
  41. data/lib/grit/lib/grit/git-ruby/repository.rb +767 -0
  42. data/lib/grit/lib/grit/git.rb +323 -0
  43. data/lib/grit/lib/grit/index.rb +122 -0
  44. data/lib/grit/lib/grit/lazy.rb +33 -0
  45. data/lib/grit/lib/grit/merge.rb +45 -0
  46. data/lib/grit/lib/grit/ref.rb +74 -0
  47. data/lib/grit/lib/grit/repo.rb +482 -0
  48. data/lib/grit/lib/grit/ruby1.9.rb +7 -0
  49. data/lib/grit/lib/grit/status.rb +151 -0
  50. data/lib/grit/lib/grit/submodule.rb +88 -0
  51. data/lib/grit/lib/grit/tag.rb +16 -0
  52. data/lib/grit/lib/grit/tree.rb +123 -0
  53. data/lib/grit/lib/open3_detach.rb +46 -0
  54. data/spec/cucumber_f_m/aggregator_spec.rb +210 -0
  55. data/spec/cucumber_f_m/comment_module/comment_spec.rb +4 -0
  56. data/spec/cucumber_f_m/config_spec.rb +27 -0
  57. data/spec/cucumber_f_m/cvs/git_spec.rb +40 -0
  58. data/spec/cucumber_f_m/feature_all_tags_to_scenario_spec.rb +7 -0
  59. data/spec/cucumber_f_m/feature_file_manipulation_spec.rb +29 -0
  60. data/spec/cucumber_f_m/feature_module/background_spec.rb +30 -0
  61. data/spec/cucumber_f_m/feature_module/comment_spec.rb +23 -0
  62. data/spec/cucumber_f_m/feature_module/example_spec.rb +5 -0
  63. data/spec/cucumber_f_m/feature_module/info_spec.rb +30 -0
  64. data/spec/cucumber_f_m/feature_module/narrative_spec.rb +7 -0
  65. data/spec/cucumber_f_m/feature_module/scenario_outline_spec.rb +39 -0
  66. data/spec/cucumber_f_m/feature_module/scenario_spec.rb +33 -0
  67. data/spec/cucumber_f_m/feature_module/step_spec.rb +7 -0
  68. data/spec/cucumber_f_m/feature_module/tag_spec.rb +96 -0
  69. data/spec/cucumber_f_m/feature_spec.rb +229 -0
  70. data/spec/cucumber_f_m/tag_filter_spec.rb +191 -0
  71. data/spec/cucumber_feature_manager_spec.rb +59 -0
  72. data/spec/data/feature_manager/some_ruby_file.rb +0 -0
  73. data/spec/spec_helper.rb +1 -0
  74. metadata +141 -0
@@ -0,0 +1,191 @@
1
+ require 'spec_helper'
2
+
3
+ describe CucumberFM::TagFilter do
4
+ context "empty expression" do
5
+ before(:each) do
6
+ @filter = CucumberFM::TagFilter.new('')
7
+ end
8
+ it "should pass when we give any kind of tags" do
9
+ @filter.pass?(['@td', '@m2', '@i1']).should be_true
10
+ end
11
+ end
12
+
13
+ context "single tag expression" do
14
+ before(:each) do
15
+ @filter = CucumberFM::TagFilter.new('@m1')
16
+ end
17
+ it "should return false we give empty array of tags" do
18
+ @filter.pass?([]).should be_false
19
+ end
20
+ it "should return false if there is no tag like this" do
21
+ @filter.pass?(['@m2', '@mc']).should be_false
22
+ end
23
+
24
+ it "should return true if there is tag like in expression" do
25
+ @filter.pass?(['@tb', '@m1']).should be_true
26
+ end
27
+ end
28
+
29
+ context "logic AND" do
30
+ before(:each) do
31
+ @filter = CucumberFM::TagFilter.new('@m1 @mc')
32
+ end
33
+
34
+ it "should return false if there is no tag like this" do
35
+ @filter.pass?(['@m1', '@tc', '@__ads']).should be_false
36
+ end
37
+
38
+ it "should return true if there is tag like in expression" do
39
+ @filter.pass?(['@mc', '@__user', '@m1']).should be_true
40
+ end
41
+ end
42
+
43
+ context "logic OR" do
44
+ before(:each) do
45
+ @filter = CucumberFM::TagFilter.new('@m1,@mc')
46
+ end
47
+
48
+ it "should return false if there is no tag like this" do
49
+ @filter.pass?(['@m2', '@tc', '@__ads']).should be_false
50
+ end
51
+
52
+ it "should return true if there is any tag like in expression" do
53
+ @filter.pass?(['@tb', '@__user', '@m1']).should be_true
54
+ @filter.pass?(['@mc', '@__user', '@m3']).should be_true
55
+ end
56
+ end
57
+
58
+ context "negation" do
59
+ before(:each) do
60
+ @filter = CucumberFM::TagFilter.new('~@_done')
61
+ end
62
+
63
+ it "should return false if there is tag: @_done" do
64
+ @filter.pass?(['@_done', '@mc']).should be_false
65
+ end
66
+
67
+ it "should return true if there is no tag: @_done" do
68
+ @filter.pass?(['@_todo', '@mc']).should be_true
69
+ end
70
+
71
+ end
72
+
73
+ context "more complex examples" do
74
+
75
+ context "@tb,@mc @m1,@m2 @user" do
76
+ before(:each) do
77
+ @filter = CucumberFM::TagFilter.new('@tb,@mc @m1,@m2 @user')
78
+ end
79
+ [
80
+ ['@mc', '@user'],
81
+ ['@m1', '@m2', '@user'],
82
+ ['@tb', '@m2', '@forum'],
83
+ [],
84
+ ].each do |tags|
85
+ it "should return false for: #{tags.join(', ')}" do
86
+ @filter.pass?(tags).should be_false
87
+ end
88
+ end
89
+
90
+ [
91
+ ['@mc', '@user', '@forum', '@m2'],
92
+ ['@mc', '@user', '@forum', '@m1'],
93
+ ['@tb', '@user', '@forum', '@m1']
94
+ ].each do |tags|
95
+ it "should return true for: #{tags.join(', ')}" do
96
+ @filter.pass?(tags).should be_true
97
+ end
98
+ end
99
+
100
+ end
101
+
102
+
103
+ context "@tb,@mc ~@m1,@m2 @user ~@ak" do
104
+ before(:each) do
105
+ @filter = CucumberFM::TagFilter.new('@tb,@mc ~@m1,@m2 @user ~@ak')
106
+ end
107
+ [
108
+
109
+ ['@tb', '@m2', '@forum'],
110
+ ['@mc', '@user', '@forum', '@m2'],
111
+ ['@mc', '@user', '@forum', '@m1'],
112
+ ['@tb', '@user', '@forum', '@m1'],
113
+ ['@mc', '@user', '@m3', '@ak'],
114
+ [],
115
+ ].each do |tags|
116
+ it "should return false for: #{tags.join(', ')}" do
117
+ @filter.pass?(tags).should be_false
118
+ end
119
+ end
120
+
121
+ [
122
+ ['@mc', '@user', '@m3'],
123
+ ['@tb', '@user', '@m4'],
124
+
125
+ ].each do |tags|
126
+ it "should return true for: #{tags.join(', ')}" do
127
+ @filter.pass?(tags).should be_true
128
+ end
129
+ end
130
+ end
131
+
132
+ ["@tb, @mc", "@tb ,@mc", "@tb , @mc"].each do |filter|
133
+ context filter do
134
+ before(:each) do
135
+ @filter = CucumberFM::TagFilter.new(filter)
136
+ end
137
+
138
+ [
139
+
140
+ ['@wp', '@m2', '@forum'],
141
+ ['@ak', '@user', '@forum', '@m2'],
142
+ [],
143
+ ].each do |tags|
144
+ it "should return false for: #{tags.join(', ')}" do
145
+ @filter.pass?(tags).should be_false
146
+ end
147
+ end
148
+
149
+ [
150
+ ['@mc', '@user', '@m3'],
151
+ ['@tb', '@user', '@m4'],
152
+
153
+ ].each do |tags|
154
+ it "should return true for: #{tags.join(', ')}" do
155
+ @filter.pass?(tags).should be_true
156
+ end
157
+ end
158
+ end
159
+ end
160
+
161
+
162
+ ["@tb @mc", "@tb @mc ", " @tb @mc"].each do |filter|
163
+ context filter do
164
+ before(:each) do
165
+ @filter = CucumberFM::TagFilter.new(filter)
166
+ end
167
+
168
+ [
169
+
170
+ ['@mc', '@m2', '@forum'],
171
+ ['@tb', '@user', '@forum', '@m2'],
172
+ [],
173
+ ].each do |tags|
174
+ it "should return false for: #{tags.join(', ')}" do
175
+ @filter.pass?(tags).should be_false
176
+ end
177
+ end
178
+
179
+ [
180
+ ['@mc', '@user', '@m3', '@tb']
181
+
182
+ ].each do |tags|
183
+ it "should return true for: #{tags.join(', ')}" do
184
+ @filter.pass?(tags).should be_true
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
190
+
191
+ end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe CucumberFeatureManager do
4
+ context "files scaning" do
5
+ before(:all) do
6
+ @cfm = CucumberFeatureManager.new("spec/data/feature_manager")
7
+ end
8
+ it "should store path for features" do
9
+ @cfm.prefix.should == 'spec/data/feature_manager'
10
+ end
11
+ it "should scan files in specific directory" do
12
+ @cfm.should have(5).features
13
+ end
14
+ it "should return list of all scenarios" do
15
+ @cfm.should have(5).scenarios
16
+ end
17
+ it "should compute correct total estimation value" do
18
+ @cfm.estimation.should == 15.25
19
+ end
20
+ end
21
+
22
+ context "features filtering by one tag" do
23
+ before(:all) do
24
+ @cfm = CucumberFeatureManager.new("spec/data/feature_manager", "spec/data", {'tags' => '@m1'})
25
+ end
26
+ it "should scan files that have one tag" do
27
+ @cfm.should have(3).features
28
+ end
29
+ it "should return list of all scenarios that have this tag" do
30
+ @cfm.should have(4).scenarios
31
+ end
32
+ end
33
+
34
+
35
+ context "features filtering by one multiple tags" do
36
+ before(:all) do
37
+ @cfm = CucumberFeatureManager.new("spec/data/feature_manager", "spec/data", {'tags' => '@m1 @mc'})
38
+ end
39
+ it "should scan files that have every one tag" do
40
+ @cfm.should have(1).features
41
+ end
42
+ it "should return list of all scenarios that have both tag" do
43
+ @cfm.should have(1).scenarios
44
+ end
45
+ end
46
+
47
+ context "dir scoping" do
48
+ before(:all) do
49
+ @cfm = CucumberFeatureManager.new("spec/data/feature_manager", "spec/data", {'dir' => 'subdir'})
50
+ end
51
+ it "should scan files in specific directory" do
52
+ @cfm.should have(3).features
53
+ end
54
+ it "should return list of all scenarios" do
55
+ @cfm.should have(1).scenarios
56
+ end
57
+ end
58
+
59
+ end
File without changes
@@ -0,0 +1 @@
1
+ require 'cucumber_feature_manager'
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cucumber_fm-core
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Michał Czyż [@cs3b]
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: diff-lcs
16
+ requirement: &13648480 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *13648480
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &13648040 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *13648040
36
+ description: Use it with cucumber_fm-plugin (<= Rails 3.0) or cucumber_fm-engine (>=
37
+ Rails 3.1)
38
+ email: michalczyz@gmail.com
39
+ executables: []
40
+ extensions: []
41
+ extra_rdoc_files: []
42
+ files:
43
+ - lib/cucumber_feature_manager.rb
44
+ - lib/grit/lib/grit.rb
45
+ - lib/grit/lib/open3_detach.rb
46
+ - lib/grit/lib/grit/lazy.rb
47
+ - lib/grit/lib/grit/diff.rb
48
+ - lib/grit/lib/grit/git-ruby/commit_db.rb
49
+ - lib/grit/lib/grit/git-ruby/repository.rb
50
+ - lib/grit/lib/grit/git-ruby/git_object.rb
51
+ - lib/grit/lib/grit/git-ruby/object.rb
52
+ - lib/grit/lib/grit/git-ruby/file_index.rb
53
+ - lib/grit/lib/grit/git-ruby/internal/loose.rb
54
+ - lib/grit/lib/grit/git-ruby/internal/raw_object.rb
55
+ - lib/grit/lib/grit/git-ruby/internal/pack.rb
56
+ - lib/grit/lib/grit/git-ruby/internal/file_window.rb
57
+ - lib/grit/lib/grit/commit.rb
58
+ - lib/grit/lib/grit/git.rb
59
+ - lib/grit/lib/grit/errors.rb
60
+ - lib/grit/lib/grit/repo.rb
61
+ - lib/grit/lib/grit/tag.rb
62
+ - lib/grit/lib/grit/commit_stats.rb
63
+ - lib/grit/lib/grit/blame.rb
64
+ - lib/grit/lib/grit/tree.rb
65
+ - lib/grit/lib/grit/git-ruby.rb
66
+ - lib/grit/lib/grit/merge.rb
67
+ - lib/grit/lib/grit/ruby1.9.rb
68
+ - lib/grit/lib/grit/submodule.rb
69
+ - lib/grit/lib/grit/blob.rb
70
+ - lib/grit/lib/grit/index.rb
71
+ - lib/grit/lib/grit/status.rb
72
+ - lib/grit/lib/grit/actor.rb
73
+ - lib/grit/lib/grit/config.rb
74
+ - lib/grit/lib/grit/ref.rb
75
+ - lib/cucumber_f_m/statistic.rb
76
+ - lib/cucumber_f_m/aggregator.rb
77
+ - lib/cucumber_f_m/feature_element/scenario_outline.rb
78
+ - lib/cucumber_f_m/feature_element/example.rb
79
+ - lib/cucumber_f_m/feature_element/info.rb
80
+ - lib/cucumber_f_m/feature_element/step.rb
81
+ - lib/cucumber_f_m/feature_element/scenario.rb
82
+ - lib/cucumber_f_m/feature_element/narrative.rb
83
+ - lib/cucumber_f_m/feature_element/background.rb
84
+ - lib/cucumber_f_m/feature_element/comment.rb
85
+ - lib/cucumber_f_m/feature_element/component/tags.rb
86
+ - lib/cucumber_f_m/feature_element/component/title.rb
87
+ - lib/cucumber_f_m/feature_element/component/information/component.rb
88
+ - lib/cucumber_f_m/feature_element/component/total_estimation.rb
89
+ - lib/cucumber_f_m/feature_element/component/comments.rb
90
+ - lib/cucumber_f_m/cvs/git.rb
91
+ - lib/cucumber_f_m/feature.rb
92
+ - lib/cucumber_f_m/tag_filter.rb
93
+ - lib/cucumber_f_m/config.rb
94
+ - lib/cucumber_f_m/comment_module/comment.rb
95
+ - spec/cucumber_feature_manager_spec.rb
96
+ - spec/data/feature_manager/some_ruby_file.rb
97
+ - spec/spec_helper.rb
98
+ - spec/cucumber_f_m/feature_module/comment_spec.rb
99
+ - spec/cucumber_f_m/feature_module/info_spec.rb
100
+ - spec/cucumber_f_m/feature_module/background_spec.rb
101
+ - spec/cucumber_f_m/feature_module/tag_spec.rb
102
+ - spec/cucumber_f_m/feature_module/scenario_outline_spec.rb
103
+ - spec/cucumber_f_m/feature_module/example_spec.rb
104
+ - spec/cucumber_f_m/feature_module/scenario_spec.rb
105
+ - spec/cucumber_f_m/feature_module/step_spec.rb
106
+ - spec/cucumber_f_m/feature_module/narrative_spec.rb
107
+ - spec/cucumber_f_m/tag_filter_spec.rb
108
+ - spec/cucumber_f_m/aggregator_spec.rb
109
+ - spec/cucumber_f_m/feature_spec.rb
110
+ - spec/cucumber_f_m/feature_all_tags_to_scenario_spec.rb
111
+ - spec/cucumber_f_m/cvs/git_spec.rb
112
+ - spec/cucumber_f_m/config_spec.rb
113
+ - spec/cucumber_f_m/feature_file_manipulation_spec.rb
114
+ - spec/cucumber_f_m/comment_module/comment_spec.rb
115
+ - LICENCE
116
+ homepage: http://cucumber.fm
117
+ licenses:
118
+ - MIT
119
+ post_install_message:
120
+ rdoc_options: []
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ none: false
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubyforge_project:
137
+ rubygems_version: 1.8.11
138
+ signing_key:
139
+ specification_version: 3
140
+ summary: Core libraries for parsing cucumber feature files
141
+ test_files: []