cucover 0.1.2

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 (106) hide show
  1. data/.gitignore +6 -0
  2. data/Licence.txt +22 -0
  3. data/README.markdown +69 -0
  4. data/Rakefile +86 -0
  5. data/VERSION +1 -0
  6. data/bin/cucover +3 -0
  7. data/cucover.gemspec +182 -0
  8. data/cucumber.yml +3 -0
  9. data/examples/self_test/rails/.gitignore +4 -0
  10. data/examples/self_test/rails/Rakefile +10 -0
  11. data/examples/self_test/rails/app/controllers/application_controller.rb +2 -0
  12. data/examples/self_test/rails/app/controllers/widgets_controller.rb +2 -0
  13. data/examples/self_test/rails/app/helpers/application_helper.rb +3 -0
  14. data/examples/self_test/rails/app/views/widgets/index.html.erb +1 -0
  15. data/examples/self_test/rails/config/boot.rb +110 -0
  16. data/examples/self_test/rails/config/cucumber.yml +7 -0
  17. data/examples/self_test/rails/config/database.yml +25 -0
  18. data/examples/self_test/rails/config/environment.rb +41 -0
  19. data/examples/self_test/rails/config/environments/cucumber.rb +27 -0
  20. data/examples/self_test/rails/config/environments/development.rb +17 -0
  21. data/examples/self_test/rails/config/environments/production.rb +28 -0
  22. data/examples/self_test/rails/config/environments/test.rb +28 -0
  23. data/examples/self_test/rails/config/initializers/backtrace_silencers.rb +7 -0
  24. data/examples/self_test/rails/config/initializers/inflections.rb +10 -0
  25. data/examples/self_test/rails/config/initializers/mime_types.rb +5 -0
  26. data/examples/self_test/rails/config/initializers/new_rails_defaults.rb +21 -0
  27. data/examples/self_test/rails/config/initializers/session_store.rb +15 -0
  28. data/examples/self_test/rails/config/locales/en.yml +5 -0
  29. data/examples/self_test/rails/config/routes.rb +43 -0
  30. data/examples/self_test/rails/db/seeds.rb +7 -0
  31. data/examples/self_test/rails/features/see_widgets.feature +7 -0
  32. data/examples/self_test/rails/features/step_definitions/web_steps.rb +273 -0
  33. data/examples/self_test/rails/features/support/env.rb +57 -0
  34. data/examples/self_test/rails/features/support/paths.rb +29 -0
  35. data/examples/self_test/rails/lib/tasks/cucumber.rake +47 -0
  36. data/examples/self_test/rails/public/404.html +30 -0
  37. data/examples/self_test/rails/public/422.html +30 -0
  38. data/examples/self_test/rails/public/500.html +30 -0
  39. data/examples/self_test/rails/public/favicon.ico +0 -0
  40. data/examples/self_test/rails/public/images/rails.png +0 -0
  41. data/examples/self_test/rails/public/index.html +275 -0
  42. data/examples/self_test/rails/public/javascripts/application.js +2 -0
  43. data/examples/self_test/rails/public/javascripts/controls.js +963 -0
  44. data/examples/self_test/rails/public/javascripts/dragdrop.js +973 -0
  45. data/examples/self_test/rails/public/javascripts/effects.js +1128 -0
  46. data/examples/self_test/rails/public/javascripts/prototype.js +4320 -0
  47. data/examples/self_test/rails/public/robots.txt +5 -0
  48. data/examples/self_test/rails/script/about +4 -0
  49. data/examples/self_test/rails/script/console +3 -0
  50. data/examples/self_test/rails/script/cucumber +10 -0
  51. data/examples/self_test/rails/script/dbconsole +3 -0
  52. data/examples/self_test/rails/script/destroy +3 -0
  53. data/examples/self_test/rails/script/generate +3 -0
  54. data/examples/self_test/rails/script/performance/benchmarker +3 -0
  55. data/examples/self_test/rails/script/performance/profiler +3 -0
  56. data/examples/self_test/rails/script/plugin +3 -0
  57. data/examples/self_test/rails/script/runner +3 -0
  58. data/examples/self_test/rails/script/server +3 -0
  59. data/examples/self_test/simple/features/call_foo.feature +4 -0
  60. data/examples/self_test/simple/features/call_foo_and_bar_together.feature +5 -0
  61. data/examples/self_test/simple/features/call_foo_from_background_then_bar.feature +7 -0
  62. data/examples/self_test/simple/features/call_foo_from_background_then_bar_then_baz.feature +10 -0
  63. data/examples/self_test/simple/features/call_foo_then_bar.feature +7 -0
  64. data/examples/self_test/simple/features/call_foo_then_bar_from_scenario_outline_examples.feature +9 -0
  65. data/examples/self_test/simple/features/fail.feature +10 -0
  66. data/examples/self_test/simple/features/step_definitions/main_steps.rb +15 -0
  67. data/examples/self_test/simple/lib/bar.rb +5 -0
  68. data/examples/self_test/simple/lib/baz.rb +5 -0
  69. data/examples/self_test/simple/lib/foo.rb +9 -0
  70. data/features/call_foo.feature +0 -0
  71. data/features/coverage_of.feature +81 -0
  72. data/features/fail.feature +60 -0
  73. data/features/help.feature +15 -0
  74. data/features/lazy_run.feature +76 -0
  75. data/features/lazy_run_per_scenario.feature +108 -0
  76. data/features/lazy_run_per_scenario_outline_example.feature +29 -0
  77. data/features/lazy_run_triggered_by_rails_view_change.feature +43 -0
  78. data/features/run.feature +25 -0
  79. data/features/show_recordings.feature +28 -0
  80. data/features/step_definitions/main_steps.rb +41 -0
  81. data/features/support/env.rb +52 -0
  82. data/lib/at_exit_hook.rb +3 -0
  83. data/lib/cucover.rb +65 -0
  84. data/lib/cucover/cli.rb +50 -0
  85. data/lib/cucover/cli_commands/coverage_of.rb +44 -0
  86. data/lib/cucover/cli_commands/cucumber.rb +46 -0
  87. data/lib/cucover/cli_commands/show_recordings.rb +29 -0
  88. data/lib/cucover/cli_commands/version.rb +13 -0
  89. data/lib/cucover/controller.rb +28 -0
  90. data/lib/cucover/cucumber_hooks.rb +45 -0
  91. data/lib/cucover/line_numbers.rb +10 -0
  92. data/lib/cucover/logging_config.rb +16 -0
  93. data/lib/cucover/monkey.rb +14 -0
  94. data/lib/cucover/rails.rb +23 -0
  95. data/lib/cucover/recorder.rb +37 -0
  96. data/lib/cucover/recording.rb +66 -0
  97. data/lib/cucover/recording/covered_file.rb +53 -0
  98. data/lib/cucover/store.rb +70 -0
  99. data/lib/dependencies.rb +10 -0
  100. data/spec/cucover/cli_spec.rb +31 -0
  101. data/spec/cucover/controller_spec.rb +16 -0
  102. data/spec/cucover/recording/covered_file_spec.rb +20 -0
  103. data/spec/cucover/store_spec.rb +28 -0
  104. data/spec/spec_helper.rb +7 -0
  105. data/tmp/.gitignore +0 -0
  106. metadata +236 -0
@@ -0,0 +1,6 @@
1
+ .coverage
2
+ *.data
3
+ *.log
4
+ *.gem
5
+ rerun
6
+ coverage
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2009 Matt Wynne
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,69 @@
1
+ # Cucover
2
+
3
+ Cucover is a thin wrapper for [Cucumber](http://github.com/aslakhellesoy/cucumber/tree/master) which makes it lazy.
4
+
5
+ >> Question:
6
+ >> What does it mean for Cucumber to be lazy?
7
+
8
+ > Answer:
9
+ > It will only run a scenario if it needs to.
10
+
11
+ How does it decide whether it needs to run a scenario? Every time you run a feature using Cucover, it watches the code in your application that is executed, and remembers. The next time you run Cucover, it skips a scenario if the source files (or the feature itself) have not been changed since it was last run.
12
+
13
+ ## Features
14
+
15
+ * Within a feature, Cucover will only re-run the Scenarios that have been affected by your changes
16
+ * Uses RCov to map features to covered source files
17
+ * Patches Rails to also map scenarios to covered .erb view templates
18
+ * Shows skipped Scenarios, for confidence
19
+ * Re-runs failing features, even when nothing has changed, for that good old red-bar feel.
20
+ * Allows you to see which lines of a source file are tested by which scenarios
21
+
22
+ ## Installation and Usage
23
+
24
+ sudo gem install mattwynne-cucover --source http://gems.github.com
25
+
26
+ To run your features lazily, use the cucover binary instead of cucumber:
27
+
28
+ cucover -- features/lamb_chops.feature
29
+
30
+ To see what Cucover has already recorded (in the cucover.data file):
31
+
32
+ cucover --show-recordings
33
+
34
+ To find out which tests cover which lines of a given source file:
35
+
36
+ cucover --coverage_of path/to/some_source_file.rb
37
+
38
+ ## Limitations
39
+
40
+ * Anything that runs out of process will not be covered, and therefore cannot trigger a re-run, so if you use Cucumber to drive Selenium, for example, you're out of luck.
41
+ * This is very new and experimental. There may be bugs. Feedback is welcome via github messages.
42
+
43
+ ## Todo
44
+ * Proper args parsing and command-line help
45
+ * Work on a way to include coverage from out-of-process ruby code run during a test
46
+ * Speed up the whole thing by only writing the recordings to disk when the process exits
47
+ * Run code coverage and remove any slop following refactoring
48
+ * Speed up the Rails test - maybe strip some guff out of the environment load?
49
+
50
+ ## Similar 'Selective Testing' Tools
51
+
52
+ * JTestMe
53
+ * http://xircles.codehaus.org/projects/jtestme
54
+ * [Agile2008 conference submission](http://submissions.agile2008.org/node/3435)
55
+ * Infinitest
56
+ * http://code.google.com/p/infinitest/
57
+ * Contact: [Ben Rady](http://submissions.agile2008.org/node/377)
58
+ * Google Testar
59
+ * http://code.google.com/p/google-testar/
60
+ * Contact: Misha Dmitriev
61
+ * Clover test optimization
62
+ * http://www.atlassian.com/software/clover/features/optimization.jsp
63
+ * JUnitMax
64
+ * a selective testing tool by [Kent Beck](http://www.threeriversinstitute.org/blog)
65
+ * http://junitmax.com/
66
+
67
+ ## Authors
68
+ * Matt Wynne
69
+ * Joseph Wilk
@@ -0,0 +1,86 @@
1
+ require 'cucumber/rake/task'
2
+
3
+ module Cucover
4
+ module Rake
5
+ class Task < Cucumber::Rake::Task
6
+ def feature_pattern=(value)
7
+ @feature_pattern = value
8
+ end
9
+
10
+ def pretty!
11
+ @format = 'pretty'
12
+ end
13
+
14
+ def tags=(value)
15
+ @tags = value
16
+ end
17
+
18
+ private
19
+
20
+ def feature_pattern
21
+ @feature_pattern || 'features/**/*.feature'
22
+ end
23
+
24
+ def feature_files(task_arguments = nil)
25
+ FileList[feature_pattern]
26
+ end
27
+
28
+ def formatters
29
+ [
30
+ '-f', 'rerun', '-o', 'rerun',
31
+ '-f', @format || 'progress',
32
+ ]
33
+ end
34
+
35
+ def tags
36
+ return [] unless @tags
37
+ [ '-t', @tags ]
38
+ end
39
+
40
+ def cucumber_opts
41
+ formatters + tags
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ def rerun
48
+ return nil unless File.exist?('rerun')
49
+ result = File.read('rerun').strip
50
+ return nil if result.empty?
51
+ result
52
+ end
53
+
54
+ Cucover::Rake::Task.new(:default) do |t|
55
+ t.tags = '~in-progress'
56
+ end
57
+
58
+ Cucover::Rake::Task.new(:all)
59
+
60
+ Cucover::Rake::Task.new(:failed) do |t|
61
+ t.pretty!
62
+ t.feature_pattern = rerun if rerun
63
+ end
64
+
65
+ Cucumber::Rake::Task.new(:coverage) do |t|
66
+ t.rcov = true
67
+ t.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/}
68
+ end
69
+
70
+ begin
71
+ require 'jeweler'
72
+ Jeweler::Tasks.new do |gemspec|
73
+ gemspec.name = "cucover"
74
+ gemspec.summary = "Lazy coverage-aware running of Cucumber acceptance tests"
75
+ gemspec.email = "matt@mattwynne.net"
76
+ gemspec.homepage = "http://github.com/mattwynne/cucover/"
77
+ gemspec.description = "Lazy coverage-aware running of Cucumber acceptance tests"
78
+ gemspec.authors = ["Matt Wynne"]
79
+
80
+ gemspec.add_dependency('cucumber', '>= 0.3.11')
81
+ gemspec.add_dependency('relevance-rcov', '>= 0.8.3.4')
82
+ gemspec.add_dependency('logging', '>= 1.1.4')
83
+ end
84
+ rescue LoadError
85
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
86
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.2
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.expand_path(File.dirname(__FILE__) + '../../lib/cucover')
3
+ Cucover::Cli.new(ARGV).start
@@ -0,0 +1,182 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{cucover}
8
+ s.version = "0.1.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Matt Wynne"]
12
+ s.date = %q{2010-04-08}
13
+ s.default_executable = %q{cucover}
14
+ s.description = %q{Lazy coverage-aware running of Cucumber acceptance tests}
15
+ s.email = %q{matt@mattwynne.net}
16
+ s.executables = ["cucover"]
17
+ s.extra_rdoc_files = [
18
+ "README.markdown"
19
+ ]
20
+ s.files = [
21
+ ".gitignore",
22
+ "Licence.txt",
23
+ "README.markdown",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "bin/cucover",
27
+ "cucover.gemspec",
28
+ "cucumber.yml",
29
+ "examples/self_test/rails/.gitignore",
30
+ "examples/self_test/rails/Rakefile",
31
+ "examples/self_test/rails/app/controllers/application_controller.rb",
32
+ "examples/self_test/rails/app/controllers/widgets_controller.rb",
33
+ "examples/self_test/rails/app/helpers/application_helper.rb",
34
+ "examples/self_test/rails/app/views/widgets/index.html.erb",
35
+ "examples/self_test/rails/config/boot.rb",
36
+ "examples/self_test/rails/config/cucumber.yml",
37
+ "examples/self_test/rails/config/database.yml",
38
+ "examples/self_test/rails/config/environment.rb",
39
+ "examples/self_test/rails/config/environments/cucumber.rb",
40
+ "examples/self_test/rails/config/environments/development.rb",
41
+ "examples/self_test/rails/config/environments/production.rb",
42
+ "examples/self_test/rails/config/environments/test.rb",
43
+ "examples/self_test/rails/config/initializers/backtrace_silencers.rb",
44
+ "examples/self_test/rails/config/initializers/inflections.rb",
45
+ "examples/self_test/rails/config/initializers/mime_types.rb",
46
+ "examples/self_test/rails/config/initializers/new_rails_defaults.rb",
47
+ "examples/self_test/rails/config/initializers/session_store.rb",
48
+ "examples/self_test/rails/config/locales/en.yml",
49
+ "examples/self_test/rails/config/routes.rb",
50
+ "examples/self_test/rails/db/seeds.rb",
51
+ "examples/self_test/rails/db/test.sqlite3",
52
+ "examples/self_test/rails/features/see_widgets.feature",
53
+ "examples/self_test/rails/features/step_definitions/web_steps.rb",
54
+ "examples/self_test/rails/features/support/env.rb",
55
+ "examples/self_test/rails/features/support/paths.rb",
56
+ "examples/self_test/rails/lib/tasks/cucumber.rake",
57
+ "examples/self_test/rails/public/404.html",
58
+ "examples/self_test/rails/public/422.html",
59
+ "examples/self_test/rails/public/500.html",
60
+ "examples/self_test/rails/public/favicon.ico",
61
+ "examples/self_test/rails/public/images/rails.png",
62
+ "examples/self_test/rails/public/index.html",
63
+ "examples/self_test/rails/public/javascripts/application.js",
64
+ "examples/self_test/rails/public/javascripts/controls.js",
65
+ "examples/self_test/rails/public/javascripts/dragdrop.js",
66
+ "examples/self_test/rails/public/javascripts/effects.js",
67
+ "examples/self_test/rails/public/javascripts/prototype.js",
68
+ "examples/self_test/rails/public/robots.txt",
69
+ "examples/self_test/rails/script/about",
70
+ "examples/self_test/rails/script/console",
71
+ "examples/self_test/rails/script/cucumber",
72
+ "examples/self_test/rails/script/dbconsole",
73
+ "examples/self_test/rails/script/destroy",
74
+ "examples/self_test/rails/script/generate",
75
+ "examples/self_test/rails/script/performance/benchmarker",
76
+ "examples/self_test/rails/script/performance/profiler",
77
+ "examples/self_test/rails/script/plugin",
78
+ "examples/self_test/rails/script/runner",
79
+ "examples/self_test/rails/script/server",
80
+ "examples/self_test/simple/features/call_foo.feature",
81
+ "examples/self_test/simple/features/call_foo_and_bar_together.feature",
82
+ "examples/self_test/simple/features/call_foo_from_background_then_bar.feature",
83
+ "examples/self_test/simple/features/call_foo_from_background_then_bar_then_baz.feature",
84
+ "examples/self_test/simple/features/call_foo_then_bar.feature",
85
+ "examples/self_test/simple/features/call_foo_then_bar_from_scenario_outline_examples.feature",
86
+ "examples/self_test/simple/features/fail.feature",
87
+ "examples/self_test/simple/features/step_definitions/main_steps.rb",
88
+ "examples/self_test/simple/lib/bar.rb",
89
+ "examples/self_test/simple/lib/baz.rb",
90
+ "examples/self_test/simple/lib/foo.rb",
91
+ "features/call_foo.feature",
92
+ "features/coverage_of.feature",
93
+ "features/fail.feature",
94
+ "features/help.feature",
95
+ "features/lazy_run.feature",
96
+ "features/lazy_run_per_scenario.feature",
97
+ "features/lazy_run_per_scenario_outline_example.feature",
98
+ "features/lazy_run_triggered_by_rails_view_change.feature",
99
+ "features/run.feature",
100
+ "features/show_recordings.feature",
101
+ "features/step_definitions/main_steps.rb",
102
+ "features/support/env.rb",
103
+ "lib/at_exit_hook.rb",
104
+ "lib/cucover.rb",
105
+ "lib/cucover/cli.rb",
106
+ "lib/cucover/cli_commands/coverage_of.rb",
107
+ "lib/cucover/cli_commands/cucumber.rb",
108
+ "lib/cucover/cli_commands/show_recordings.rb",
109
+ "lib/cucover/cli_commands/version.rb",
110
+ "lib/cucover/controller.rb",
111
+ "lib/cucover/cucumber_hooks.rb",
112
+ "lib/cucover/line_numbers.rb",
113
+ "lib/cucover/logging_config.rb",
114
+ "lib/cucover/monkey.rb",
115
+ "lib/cucover/rails.rb",
116
+ "lib/cucover/recorder.rb",
117
+ "lib/cucover/recording.rb",
118
+ "lib/cucover/recording/covered_file.rb",
119
+ "lib/cucover/store.rb",
120
+ "lib/dependencies.rb",
121
+ "spec/cucover/cli_spec.rb",
122
+ "spec/cucover/controller_spec.rb",
123
+ "spec/cucover/recording/covered_file_spec.rb",
124
+ "spec/cucover/store_spec.rb",
125
+ "spec/spec_helper.rb",
126
+ "tmp/.gitignore"
127
+ ]
128
+ s.homepage = %q{http://github.com/mattwynne/cucover/}
129
+ s.rdoc_options = ["--charset=UTF-8"]
130
+ s.require_paths = ["lib"]
131
+ s.rubygems_version = %q{1.3.6}
132
+ s.summary = %q{Lazy coverage-aware running of Cucumber acceptance tests}
133
+ s.test_files = [
134
+ "spec/cucover/cli_spec.rb",
135
+ "spec/cucover/controller_spec.rb",
136
+ "spec/cucover/recording/covered_file_spec.rb",
137
+ "spec/cucover/store_spec.rb",
138
+ "spec/spec_helper.rb",
139
+ "examples/self_test/rails/app/controllers/application_controller.rb",
140
+ "examples/self_test/rails/app/controllers/widgets_controller.rb",
141
+ "examples/self_test/rails/app/helpers/application_helper.rb",
142
+ "examples/self_test/rails/config/boot.rb",
143
+ "examples/self_test/rails/config/environment.rb",
144
+ "examples/self_test/rails/config/environments/cucumber.rb",
145
+ "examples/self_test/rails/config/environments/development.rb",
146
+ "examples/self_test/rails/config/environments/production.rb",
147
+ "examples/self_test/rails/config/environments/test.rb",
148
+ "examples/self_test/rails/config/initializers/backtrace_silencers.rb",
149
+ "examples/self_test/rails/config/initializers/inflections.rb",
150
+ "examples/self_test/rails/config/initializers/mime_types.rb",
151
+ "examples/self_test/rails/config/initializers/new_rails_defaults.rb",
152
+ "examples/self_test/rails/config/initializers/session_store.rb",
153
+ "examples/self_test/rails/config/routes.rb",
154
+ "examples/self_test/rails/db/seeds.rb",
155
+ "examples/self_test/rails/features/step_definitions/web_steps.rb",
156
+ "examples/self_test/rails/features/support/env.rb",
157
+ "examples/self_test/rails/features/support/paths.rb",
158
+ "examples/self_test/simple/features/step_definitions/main_steps.rb",
159
+ "examples/self_test/simple/lib/bar.rb",
160
+ "examples/self_test/simple/lib/baz.rb",
161
+ "examples/self_test/simple/lib/foo.rb"
162
+ ]
163
+
164
+ if s.respond_to? :specification_version then
165
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
166
+ s.specification_version = 3
167
+
168
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
169
+ s.add_runtime_dependency(%q<cucumber>, [">= 0.3.11"])
170
+ s.add_runtime_dependency(%q<relevance-rcov>, [">= 0.8.3.4"])
171
+ s.add_runtime_dependency(%q<logging>, [">= 1.1.4"])
172
+ else
173
+ s.add_dependency(%q<cucumber>, [">= 0.3.11"])
174
+ s.add_dependency(%q<relevance-rcov>, [">= 0.8.3.4"])
175
+ s.add_dependency(%q<logging>, [">= 1.1.4"])
176
+ end
177
+ else
178
+ s.add_dependency(%q<cucumber>, [">= 0.3.11"])
179
+ s.add_dependency(%q<relevance-rcov>, [">= 0.8.3.4"])
180
+ s.add_dependency(%q<logging>, [">= 1.1.4"])
181
+ end
182
+ end
@@ -0,0 +1,3 @@
1
+ default: --profile 1_8
2
+ 1_8: --tags ~@ruby_1_9
3
+ 1_9: --tags @ruby_1_9
@@ -0,0 +1,4 @@
1
+ log/*.log
2
+ tmp/*.*
3
+ db/*.sqlite3
4
+ rerun.txt
@@ -0,0 +1,10 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require(File.join(File.dirname(__FILE__), 'config', 'boot'))
5
+
6
+ require 'rake'
7
+ require 'rake/testtask'
8
+ require 'rake/rdoctask'
9
+
10
+ require 'tasks/rails'
@@ -0,0 +1,2 @@
1
+ class ApplicationController < ActionController::Base
2
+ end
@@ -0,0 +1,2 @@
1
+ class WidgetsController < ApplicationController
2
+ end
@@ -0,0 +1,3 @@
1
+ # Methods added to this helper will be available to all templates in the application.
2
+ module ApplicationHelper
3
+ end
@@ -0,0 +1 @@
1
+ <p>Look at all these lovely widgets</p>
@@ -0,0 +1,110 @@
1
+ # Don't change this file!
2
+ # Configure your app in config/environment.rb and config/environments/*.rb
3
+
4
+ RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
5
+
6
+ module Rails
7
+ class << self
8
+ def boot!
9
+ unless booted?
10
+ preinitialize
11
+ pick_boot.run
12
+ end
13
+ end
14
+
15
+ def booted?
16
+ defined? Rails::Initializer
17
+ end
18
+
19
+ def pick_boot
20
+ (vendor_rails? ? VendorBoot : GemBoot).new
21
+ end
22
+
23
+ def vendor_rails?
24
+ File.exist?("#{RAILS_ROOT}/vendor/rails")
25
+ end
26
+
27
+ def preinitialize
28
+ load(preinitializer_path) if File.exist?(preinitializer_path)
29
+ end
30
+
31
+ def preinitializer_path
32
+ "#{RAILS_ROOT}/config/preinitializer.rb"
33
+ end
34
+ end
35
+
36
+ class Boot
37
+ def run
38
+ load_initializer
39
+ Rails::Initializer.run(:set_load_path)
40
+ end
41
+ end
42
+
43
+ class VendorBoot < Boot
44
+ def load_initializer
45
+ require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
46
+ Rails::Initializer.run(:install_gem_spec_stubs)
47
+ Rails::GemDependency.add_frozen_gem_path
48
+ end
49
+ end
50
+
51
+ class GemBoot < Boot
52
+ def load_initializer
53
+ self.class.load_rubygems
54
+ load_rails_gem
55
+ require 'initializer'
56
+ end
57
+
58
+ def load_rails_gem
59
+ if version = self.class.gem_version
60
+ gem 'rails', version
61
+ else
62
+ gem 'rails'
63
+ end
64
+ rescue Gem::LoadError => load_error
65
+ $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
66
+ exit 1
67
+ end
68
+
69
+ class << self
70
+ def rubygems_version
71
+ Gem::RubyGemsVersion rescue nil
72
+ end
73
+
74
+ def gem_version
75
+ if defined? RAILS_GEM_VERSION
76
+ RAILS_GEM_VERSION
77
+ elsif ENV.include?('RAILS_GEM_VERSION')
78
+ ENV['RAILS_GEM_VERSION']
79
+ else
80
+ parse_gem_version(read_environment_rb)
81
+ end
82
+ end
83
+
84
+ def load_rubygems
85
+ min_version = '1.3.2'
86
+ require 'rubygems'
87
+ unless rubygems_version >= min_version
88
+ $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
89
+ exit 1
90
+ end
91
+
92
+ rescue LoadError
93
+ $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
94
+ exit 1
95
+ end
96
+
97
+ def parse_gem_version(text)
98
+ $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
99
+ end
100
+
101
+ private
102
+ def read_environment_rb
103
+ File.read("#{RAILS_ROOT}/config/environment.rb")
104
+ end
105
+ end
106
+ end
107
+ end
108
+
109
+ # All that for this:
110
+ Rails.boot!