cucumber_fm-core 0.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.
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: []