ZenTest 3.5.2 → 3.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +286 -270
- data/Manifest.txt +3 -3
- data/README.txt +2 -1
- data/Rakefile +4 -2
- data/bin/autotest +25 -13
- data/example_dot_autotest.rb +1 -0
- data/lib/autotest.rb +95 -1
- data/lib/{camping_autotest.rb → autotest/camping.rb} +1 -1
- data/lib/autotest/discover.rb +6 -0
- data/lib/autotest/emacs.rb +7 -1
- data/lib/{rails_autotest.rb → autotest/rails.rb} +4 -1
- data/lib/functional_test_matrix.rb +13 -6
- data/lib/unit_diff.rb +2 -0
- data/lib/zentest.rb +1 -1
- data/test/test_autotest.rb +3 -1
- data/test/test_rails_autotest.rb +1 -1
- metadata +16 -11
- data/lib/rspec_rails_autotest.rb +0 -119
data/History.txt
CHANGED
@@ -1,270 +1,286 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
+
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
1
|
+
=== 3.6.0 / 2007-05-25
|
2
|
+
|
3
|
+
* 4 major enhancements:
|
4
|
+
* New auto-discovery mechanism to make rspec and friends work independently!
|
5
|
+
* Moved and restructured camping and rails as plugins.
|
6
|
+
* Removed rspec - now packaged with rspec and/or as plugin.
|
7
|
+
* Changed the way FTM tests are named. Allows multiple matricies.
|
8
|
+
* 3 minor enhancements:
|
9
|
+
* Added :OK special result value to FTM.
|
10
|
+
* Hugh Sasse is awesome. Rdoc happiness.
|
11
|
+
* Parameterized emacs client command.
|
12
|
+
* 3 bug fixes:
|
13
|
+
* Dup load path because I'm dum.
|
14
|
+
* Fixed a lame syntax error in emacs.rb.
|
15
|
+
* autotest now builds command separator with '&' on windoze. ARGH! Why is this the first I've heard of this?!?
|
16
|
+
|
17
|
+
=== 3.5.2 / 2007-04-30
|
18
|
+
|
19
|
+
* 4 bug fixes:
|
20
|
+
* Patch up Rails fixture defaults for Test::Rails::TestCase.
|
21
|
+
* Session now properly hooked up to controllers.
|
22
|
+
* ruby 1.8.6 has a bug on 'raise Interrupt' with no args. Fixed on both sides.
|
23
|
+
* Fixed redgreen to work with new getc/putc-based output. (from Finn Smith)
|
24
|
+
|
25
|
+
=== 3.5.1 / 2007-04-17
|
26
|
+
|
27
|
+
* 4 bug fixes:
|
28
|
+
* Fixed gem name to be camel-case again. Fixed on rubyforge too.
|
29
|
+
* Fixed rdoc for hooks.
|
30
|
+
* Fixed redgreen, results changed to an array.
|
31
|
+
* Patch up Rails fixture defaults, since they're not inheriting properly.
|
32
|
+
|
33
|
+
=== 3.5.0 / 2007-04-12
|
34
|
+
|
35
|
+
* 4 major enhancements:
|
36
|
+
* Now requires RubyGems 0.9.1 or newer.
|
37
|
+
* Autotest and unit_diff are both unbuffered. Results are more live.
|
38
|
+
* Refactored and redesigned how files map to test from Sean Carley. See fixtures plugin as an example.
|
39
|
+
* Generalize how autotest handler is instantiated and invoked, allowing for many more autotest types, including combos.
|
40
|
+
* 23 minor enhancements:
|
41
|
+
* Added all_good hook if initial run was all_good as well.
|
42
|
+
* Added assert_in_epsilon to ZentestAssertions.
|
43
|
+
* Added autotest plugin to auto-update source ala tinderbox/cruisecontrol.
|
44
|
+
* Added autotest plugin to update ichat/adium IM status with code stats.
|
45
|
+
* Added autotest plugin to update the GNU screen statusbar from Yuichi Tateno.
|
46
|
+
* Added autotest syntax error handling from Ryan Platte.
|
47
|
+
* Added autotest/emacs emacs integration plugin!!! YAY!
|
48
|
+
* Added autotest/migrate.rb.
|
49
|
+
* Added camping support from Geoffrey Grossenbach.
|
50
|
+
* Added changed file reporting to autotest via -v flag.
|
51
|
+
* Added informative summary and filtering via ENV['VERSIONS'] to multiruby.
|
52
|
+
* Added libnotify support from Kazuo Saito.
|
53
|
+
* Added lots of rdoc patches from Hugh Sasse.
|
54
|
+
* Added rjs files to view_test_case.
|
55
|
+
* Added rspec_autotest "stolen" from caldersphere.net
|
56
|
+
* Added run_command hook to trigger the start of a test run.
|
57
|
+
* Added tmp to rails' exceptions list.
|
58
|
+
* Added unit_diff command variable to autotest for customizing flags and such.
|
59
|
+
* Added zentest_mapping.rb and test.
|
60
|
+
* Allow session to work in Test::Rails view tests.
|
61
|
+
* Improved autotest/growl.rb output from imajes.
|
62
|
+
* Improved autotest/timestamp output from Josh Susser.
|
63
|
+
* Test::Rails works with Rails 1.2.
|
64
|
+
* 2 bug fixes:
|
65
|
+
* Accelerated Test::Rails unit tests via sensible defaults.
|
66
|
+
* Better assertion messages for ZentestAssertions.
|
67
|
+
|
68
|
+
=== 3.4.3 / 2006-12-19
|
69
|
+
|
70
|
+
* 2 minor enhancements:
|
71
|
+
* Add assert_title and assert_h (for header).
|
72
|
+
* 2 bug fixes:
|
73
|
+
* Rereleased against latest version of hoe to fix load path problems.
|
74
|
+
* Fix case ViewTestCase for case-sensitive file systems.
|
75
|
+
|
76
|
+
=== 3.4.2 / 2006-11-09
|
77
|
+
|
78
|
+
* 2 minor enhancements:
|
79
|
+
* Add TextHelper for pluralize.
|
80
|
+
* Add deny_nil to Test::Rails.
|
81
|
+
* 7 bug fixes:
|
82
|
+
* Fixed test_help's Flash. It's is a module. Oops...
|
83
|
+
* Don't run util_audit_assert_assigned if tests didn't pass, results will be bogus.
|
84
|
+
* Fixed AssertionsTest names to match what autotest expects.
|
85
|
+
* Fixed bug where deny_includes failed for Symbol keys.
|
86
|
+
* Switched autotest to use require instead of load... Why??? I don't know!!
|
87
|
+
* Fixed a minor but annoying whitespace difference in unit_diff.
|
88
|
+
* Switched argument order of assert_includes and deny_includes to match Test::Unit convention.
|
89
|
+
|
90
|
+
=== 3.4.1 / 2006-10-13
|
91
|
+
|
92
|
+
* 3 minor enhancements:
|
93
|
+
* FUNDAMENTALLY changed the way failures map back to tests. This REQUIRES users of autotest to ensure that their tests and impls map 1:1 at every scoping level. I'll blog more details.
|
94
|
+
* Hoe'd rakefile
|
95
|
+
* Added support for render :collection to RenderTree.
|
96
|
+
* 7 bug fixes:
|
97
|
+
* Fixed autotest tests for custom ruby names.
|
98
|
+
* Fixed some documentation errors in ControllerTestCase.
|
99
|
+
* Fixed setup in FunctionalTestCase.
|
100
|
+
* Allowed @assigns_ignored to contain either Symbols or Strings, bug 5233.
|
101
|
+
* Using Object.path2class to look up classes in helper test cases, bug 5493.
|
102
|
+
* Added assert_text_area, bug 5452.
|
103
|
+
* Renamed assert_select to assert_select_tag. Stupid rails. We were here first.
|
104
|
+
|
105
|
+
=== 3.4.0 / 2006-09-12
|
106
|
+
|
107
|
+
* 13 minor enhancements:
|
108
|
+
* Broke out example_dot_autotest into multiple files in lib.
|
109
|
+
* Enhanced hook system so it can return true if event handled.
|
110
|
+
* Sleep is now 1 second by default because life is too short.
|
111
|
+
* Hooked interrupt with new hook system. First handler wins.
|
112
|
+
* Hooked test results before output
|
113
|
+
* Accurate test counts for Test::Rails.
|
114
|
+
* Added snarl autotest plugin, thanks to Patrick Hurley.
|
115
|
+
* Added timestamp autotest plugin, thanks to Joe Goldberg.
|
116
|
+
* Added redgreen, thanks to Pat Eyler, Sean Carley, and Rob Sanheim.
|
117
|
+
* Added kdenotify autotest plugin, thanks to Geir Freysson.
|
118
|
+
* Added markaby support for Test::Rails.
|
119
|
+
* Added hack to display a tree of render calls.
|
120
|
+
* Added hook to perform extra setup for
|
121
|
+
* 5 bug fixes:
|
122
|
+
- Extended zentest to deal with rails a bit better... ugh.
|
123
|
+
- Fixed @libs for windoze.
|
124
|
+
- Fixed inner class/test identification in autotest.
|
125
|
+
- Namespaced all plugins... eric is anal.
|
126
|
+
- No longer freak out if rubygems tarball not in multiruby/versions.
|
127
|
+
|
128
|
+
=== 3.3.0 / 2006-07-28
|
129
|
+
|
130
|
+
* 1 major enhancement:
|
131
|
+
* autotest has been rewritten to be much cleaner, now has a plugin system.
|
132
|
+
* 5 minor enhancements:
|
133
|
+
* test/rails adds helper tests, "stolen" from Geoff's work, (which was "stolen" from ryan's work. :P)
|
134
|
+
* autotest turnaround is now faster.
|
135
|
+
* Added more prune dirs to autotest.
|
136
|
+
* test/rails rewinds IOs containing captured output. Added assert_empty.
|
137
|
+
* Document that autotest doesn't run the db:test:prepare rake task when in Rails mode.
|
138
|
+
* Added ruby_fork, but haven't fully plugged into autotest yet.
|
139
|
+
* 7 bug fixes:
|
140
|
+
* Add SIGINT handler to unit_diff to give a more graceful exit.
|
141
|
+
* Don't strip <> from tempfiles, parse_diff does it for us.
|
142
|
+
* Fixed autotest problems on windoze. Ugh.
|
143
|
+
* Fixed broken pipe bug and newline bug in unit_diff.
|
144
|
+
* Make request_method in ControllerTestCase a String.
|
145
|
+
* multitest installs rubygems if tarball found in versions dir.
|
146
|
+
* multitest only configures when makefile is missing. Rebuilds much faster now.
|
147
|
+
* ruby_fork exits without backtrace and allows redirection of output.
|
148
|
+
|
149
|
+
=== 3.2.0 / 2006-04-10
|
150
|
+
|
151
|
+
* 1 major enhancement:
|
152
|
+
* Added Test::Rails.
|
153
|
+
* 1 minor enhancement:
|
154
|
+
* Extended autotest for Test::Rails.
|
155
|
+
* 4 bug fixes:
|
156
|
+
* Autotest now detects changes in rhtml.
|
157
|
+
* Improved autotest's file mapping and choice of ruby.
|
158
|
+
* We've got RDoc, yes we do!
|
159
|
+
* Removed redundancies in rakefile. Using gem spec for most stuff now.
|
160
|
+
|
161
|
+
=== 3.1.0 / 2006-03-29
|
162
|
+
|
163
|
+
* 2 major enhancements:
|
164
|
+
* Added multiruby! YAY!
|
165
|
+
* Massive improvements to autotest: speed, reliability, reporting, etc.
|
166
|
+
* 10 minor enhancements:
|
167
|
+
* multiruby builds in a centralized location. YAY!
|
168
|
+
* multiruby now allows reinstalls quickly and easily (can even skip config).
|
169
|
+
* multiruby exits with total sum of exit codes.
|
170
|
+
* autotest file search is muuuuch faster.
|
171
|
+
* autotest automatically detects rails mode.
|
172
|
+
* autotest deals with rails dependencies much better.
|
173
|
+
* autotest reruns a full suite after you go green to ensure full coverage.
|
174
|
+
* autotest always runs with unit_diff -u.
|
175
|
+
* autotest can now run cvs/svn/p4 up periodically to be a mini-tinderbox.
|
176
|
+
* autotest now has real help.
|
177
|
+
* 4 bug fixes:
|
178
|
+
* ZenTest is now zentest. Yay for consistency! (do a rake uninstall to clean)
|
179
|
+
* ZenTest excludes pretty_print methods.
|
180
|
+
* Fixed unary operator issues (they were backwards... oops!) for ZenTest.
|
181
|
+
* unit_diff now runs diff.exe on Windoze. dunno if that will work.
|
182
|
+
|
183
|
+
=== 3.0.0 / 2006-03-06
|
184
|
+
|
185
|
+
* 2 major enhancements:
|
186
|
+
* Added autotest and rails_autotest. YAY for continous testing!
|
187
|
+
* Repackaged and gemified. YAY for gemification!
|
188
|
+
* 3 minor enhancements:
|
189
|
+
* Added non-mappable tests starting with test_integration_.
|
190
|
+
* Lots of code and test refactoring and cleanup.
|
191
|
+
* Massive improvement on unit tests.
|
192
|
+
* 3 bug fixes:
|
193
|
+
* Cleaned up class method inheritence. Esp relevant for rails testing.
|
194
|
+
* Finally fixed the unit_diff parse bug!
|
195
|
+
* Fixed improper counting of errors if a class was missing, should be 1 + missing methods.
|
196
|
+
|
197
|
+
=== 2.4.0 / 2005-03-21
|
198
|
+
|
199
|
+
* 3 minor enhancements:
|
200
|
+
* Able to audit standard class library (so now we can audit rubicon!).
|
201
|
+
* Able to map against class methods (self.blah <=> test_class_blah).
|
202
|
+
* Added -I=rubypath support
|
203
|
+
* 4 bug fixes:
|
204
|
+
* bug:1151 Fixed stupid problem w/ unit_diff.
|
205
|
+
* bug:1454 code generation correctly matches class/module for nested classes.
|
206
|
+
* bug:1455 Updated method mapping to work on all operators listed in my quickref.
|
207
|
+
* Realized I'm a moron and did NOT release in March like I thought...
|
208
|
+
|
209
|
+
=== 2.3.0 / 2004-11-18
|
210
|
+
|
211
|
+
* 6 minor enhancements:
|
212
|
+
* Massively expanded the method name mappings.
|
213
|
+
* Added -r flag to reverse map names, for Rails style testing.
|
214
|
+
* Added -e to auto eval tests generated.
|
215
|
+
* Added -b & -c flags in unit_diff (passed to diff)
|
216
|
+
* Added install and uninstall rules to Makefile.
|
217
|
+
* Added some more doco to README.txt
|
218
|
+
* 7 bug fixes:
|
219
|
+
* Cleaned up and refactored tests.
|
220
|
+
* Changed the way files are generated, to accomodate new flags.
|
221
|
+
* Added some more tests.
|
222
|
+
* Added $ZENTEST=true
|
223
|
+
* Fixed the one-liner diff bug.
|
224
|
+
* Cleaned up multi-line string diffs by unescaping \n
|
225
|
+
* Cleaned result for flunks.
|
226
|
+
|
227
|
+
=== 2.2.0 / 2004-10-18
|
228
|
+
|
229
|
+
* 4 minor enhancements:
|
230
|
+
* Added LinuxJournalArticle.txt! WOOT!
|
231
|
+
* Added unit_diff.rb - a very cool filter for test output!
|
232
|
+
* Extended ZenTest to work with standard input
|
233
|
+
* Added "ZenTest FULL" to force ZenTest to analyze inherited methods, for subclasses of the standard library.
|
234
|
+
* 3 bug fixes:
|
235
|
+
* Extended makefile to be more dynamic and stop diffing versions. ugh.
|
236
|
+
* Expanded the method rename map to handle <<, *, +, and ==.
|
237
|
+
* Added more test cases.
|
238
|
+
|
239
|
+
=== 2.1.2 / 2004-03-08
|
240
|
+
|
241
|
+
* 4 bug fixes:
|
242
|
+
* Fixed yet another 1.8ism, results will be the same in 1.8 and 1.6.
|
243
|
+
* Fixed code responsible for method name conversion.
|
244
|
+
* I am a moron... didn't run tests after updating version.
|
245
|
+
* Need to convert my diff-based tests to unit tests.
|
246
|
+
|
247
|
+
=== 2.1.1 / 2004-03-06
|
248
|
+
|
249
|
+
* 3 bug fixes:
|
250
|
+
* Fixed a 1.8ism.
|
251
|
+
* Removed zentestrunner. Older ruby users will just have to suffer.
|
252
|
+
* Updated history to ZenWeb format.
|
253
|
+
|
254
|
+
=== 2.1.0 / 2003-01-07
|
255
|
+
|
256
|
+
* 3 major enhancements:
|
257
|
+
* Output is runnable as-is thanks to zentestrunner.rb.
|
258
|
+
* Wrapped up all running functionality into ZenTest.fix
|
259
|
+
* Added simple statistic output... Thanks Dave & Andy!!!
|
260
|
+
* 2 minor enhancements:
|
261
|
+
* Added zentestrunner.rb until Nathaniel accepts my changes!
|
262
|
+
* Added a clean rule to Makefile
|
263
|
+
* 3 bug fixes:
|
264
|
+
* Removed at_exit override and avoided test/unit altogether.
|
265
|
+
* Extended README.txt to include some of the rules.
|
266
|
+
* Fixed several tests and added assertions for new stats
|
267
|
+
|
268
|
+
=== 2.0.0 / 2002-10-29
|
269
|
+
|
270
|
+
* 2 major enhancements:
|
271
|
+
* Rewrite of ZenTest.rb into actual OO design.
|
272
|
+
* Added unit tests, finally...
|
273
|
+
|
274
|
+
=== 1.0.1 / 2002-09-28
|
275
|
+
|
276
|
+
* 1 minor enhancement:
|
277
|
+
* Only loads when a class is detected, allows some scripts to be skipped.
|
278
|
+
* 3 bug fixes:
|
279
|
+
* Cleaned up output. Verbose when $DEBUG is true.
|
280
|
+
* Added an error count that is output at end.
|
281
|
+
* Better filtering or conversion on some method names.
|
282
|
+
|
283
|
+
=== 1.0.0 / 2002-09-24
|
284
|
+
|
285
|
+
* 1 major enhancement:
|
286
|
+
* Birthday!
|
data/Manifest.txt
CHANGED
@@ -16,6 +16,8 @@ example2.rb
|
|
16
16
|
example_dot_autotest.rb
|
17
17
|
lib/autotest.rb
|
18
18
|
lib/autotest/autoupdate.rb
|
19
|
+
lib/autotest/camping.rb
|
20
|
+
lib/autotest/discover.rb
|
19
21
|
lib/autotest/emacs.rb
|
20
22
|
lib/autotest/fixtures.rb
|
21
23
|
lib/autotest/growl.rb
|
@@ -26,15 +28,13 @@ lib/autotest/menu.rb
|
|
26
28
|
lib/autotest/migrate.rb
|
27
29
|
lib/autotest/notify.rb
|
28
30
|
lib/autotest/pretty.rb
|
31
|
+
lib/autotest/rails.rb
|
29
32
|
lib/autotest/redgreen.rb
|
30
33
|
lib/autotest/screen.rb
|
31
34
|
lib/autotest/shame.rb
|
32
35
|
lib/autotest/snarl.rb
|
33
36
|
lib/autotest/timestamp.rb
|
34
|
-
lib/camping_autotest.rb
|
35
37
|
lib/functional_test_matrix.rb
|
36
|
-
lib/rails_autotest.rb
|
37
|
-
lib/rspec_rails_autotest.rb
|
38
38
|
lib/ruby_fork.rb
|
39
39
|
lib/test/rails.rb
|
40
40
|
lib/test/rails/controller_test_case.rb
|
data/README.txt
CHANGED
data/Rakefile
CHANGED
@@ -10,15 +10,16 @@ Hoe.new("ZenTest", ZenTest::VERSION) do |p|
|
|
10
10
|
p.author = ['Ryan Davis', 'Eric Hodel']
|
11
11
|
|
12
12
|
changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
13
|
-
summary, *description = p.paragraphs_of("README.txt", 3, 3..8)
|
13
|
+
urls, summary, *description = p.paragraphs_of("README.txt", 1, 3, 3..8)
|
14
14
|
|
15
|
+
p.url = urls.gsub(/^\* /, '').split(/\n/)
|
15
16
|
p.changes = changes
|
16
17
|
p.summary = summary
|
17
18
|
p.description = description.join("\n\n")
|
18
19
|
end
|
19
20
|
|
20
21
|
task :autotest do
|
21
|
-
ruby "-Ilib ./bin/autotest"
|
22
|
+
ruby "-Ilib -w ./bin/autotest"
|
22
23
|
end
|
23
24
|
|
24
25
|
task :update do
|
@@ -34,6 +35,7 @@ task :update do
|
|
34
35
|
f.puts
|
35
36
|
f.puts "# Autotest::AutoUpdate.sleep_time = 60"
|
36
37
|
f.puts "# Autotest::AutoUpdate.update_cmd = 'svn up'"
|
38
|
+
f.puts "# Autotest::Emacs.client_cmd = 'emacsclient -e'"
|
37
39
|
f.puts "# Autotest::Heckle.flags << '-t test/**/*.rb'"
|
38
40
|
f.puts "# Autotest::Heckle.klasses << 'MyClass'"
|
39
41
|
f.puts "# Autotest::Shame.chat_app = :adium"
|
data/bin/autotest
CHANGED
@@ -20,17 +20,29 @@ if $h or $help then
|
|
20
20
|
exit 1
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
23
|
+
class Dir
|
24
|
+
class << self
|
25
|
+
alias :old_index :[]
|
26
|
+
def [](*args)
|
27
|
+
$-w, old_warn = false, $-w
|
28
|
+
old_index(*args)
|
29
|
+
ensure
|
30
|
+
$-w = old_warn
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
require 'autotest'
|
36
|
+
style = Autotest.autodiscover
|
37
|
+
target = Autotest
|
38
|
+
unless style.empty? then
|
39
|
+
mod = "autotest/#{style.join("_")}"
|
40
|
+
puts "loading #{mod}"
|
41
|
+
begin
|
42
|
+
require mod
|
43
|
+
rescue LoadError
|
44
|
+
abort "Autotest style #{mod} doesn't seem to exist. Aborting."
|
45
|
+
end
|
46
|
+
target = Autotest.const_get(style.map {|s| s.capitalize}.join)
|
47
|
+
end
|
48
|
+
target.run
|
data/example_dot_autotest.rb
CHANGED
@@ -19,6 +19,7 @@
|
|
19
19
|
|
20
20
|
# Autotest::AutoUpdate.sleep_time = 60
|
21
21
|
# Autotest::AutoUpdate.update_cmd = 'svn up'
|
22
|
+
# Autotest::Emacs.client_cmd = 'emacsclient -e'
|
22
23
|
# Autotest::Heckle.flags << '-t test/**/*.rb'
|
23
24
|
# Autotest::Heckle.klasses << 'MyClass'
|
24
25
|
# Autotest::Shame.chat_app = :adium
|
data/lib/autotest.rb
CHANGED
@@ -58,6 +58,66 @@ $TESTING = false unless defined? $TESTING
|
|
58
58
|
class Autotest
|
59
59
|
|
60
60
|
HOOKS = Hash.new { |h,k| h[k] = [] }
|
61
|
+
unless defined? WINDOZE then
|
62
|
+
WINDOZE = /win32/ =~ RUBY_PLATFORM
|
63
|
+
SEP = WINDOZE ? '&' : ';'
|
64
|
+
end
|
65
|
+
|
66
|
+
@@discoveries = []
|
67
|
+
|
68
|
+
##
|
69
|
+
# Add a proc to the collection of discovery procs. See
|
70
|
+
# +autodiscover+.
|
71
|
+
|
72
|
+
def self.add_discovery &proc
|
73
|
+
@@discoveries << proc
|
74
|
+
end
|
75
|
+
|
76
|
+
##
|
77
|
+
# Automatically find all potential autotest runner styles by
|
78
|
+
# searching your loadpath, vendor/plugins, and rubygems for
|
79
|
+
# "autotest/discover.rb". If found, that file is loaded and it
|
80
|
+
# should register discovery procs with autotest using
|
81
|
+
# +add_discovery+. That proc should return one or more strings
|
82
|
+
# describing the user's current environment. Those styles are then
|
83
|
+
# combined to dynamically invoke an autotest plugin to suite your
|
84
|
+
# environment. That plugin should define a subclass of Autotest with
|
85
|
+
# a corresponding name.
|
86
|
+
#
|
87
|
+
# === Process:
|
88
|
+
#
|
89
|
+
# 1. All autotest/discover.rb files loaded.
|
90
|
+
# 2. Those procs determine your styles (eg ["rails", "rspec"]).
|
91
|
+
# 3. Require file by sorting styles and joining (eg 'autotest/rails_rspec').
|
92
|
+
# 4. Invoke run method on appropriate class (eg Autotest::RailsRspec.run).
|
93
|
+
#
|
94
|
+
# === Example autotest/discover.rb:
|
95
|
+
#
|
96
|
+
# Autotest.add_discovery do
|
97
|
+
# "rails" if File.exist? 'config/environment.rb'
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
|
101
|
+
def self.autodiscover
|
102
|
+
style = []
|
103
|
+
|
104
|
+
$:.push(*Dir["vendor/plugins/*/lib"])
|
105
|
+
paths = $:.dup
|
106
|
+
|
107
|
+
begin
|
108
|
+
require 'rubygems'
|
109
|
+
paths.push(*Gem.latest_load_paths)
|
110
|
+
rescue LoadError => e
|
111
|
+
# do nothing
|
112
|
+
end
|
113
|
+
|
114
|
+
paths.each do |d|
|
115
|
+
f = File.join(d, 'autotest', 'discover.rb')
|
116
|
+
load f if File.exist? f
|
117
|
+
end
|
118
|
+
|
119
|
+
@@discoveries.map { |proc| proc.call }.flatten.compact.sort.uniq
|
120
|
+
end
|
61
121
|
|
62
122
|
def self.run
|
63
123
|
new.run
|
@@ -97,6 +157,8 @@ class Autotest
|
|
97
157
|
hook :initialize
|
98
158
|
end
|
99
159
|
|
160
|
+
# Repeatedly run failed tests, then all tests, then
|
161
|
+
# wait for changes and carry on until killed.
|
100
162
|
def run
|
101
163
|
hook :run
|
102
164
|
reset
|
@@ -122,6 +184,7 @@ class Autotest
|
|
122
184
|
hook :quit
|
123
185
|
end
|
124
186
|
|
187
|
+
# Keep running the tests after a change, until all pass.
|
125
188
|
def get_to_green
|
126
189
|
until all_good do
|
127
190
|
run_tests
|
@@ -129,6 +192,8 @@ class Autotest
|
|
129
192
|
end
|
130
193
|
end
|
131
194
|
|
195
|
+
# Look for files to test then run the tests and
|
196
|
+
# handle the results.
|
132
197
|
def run_tests
|
133
198
|
find_files_to_test # failed + changed/affected
|
134
199
|
cmd = make_test_cmd @files_to_test
|
@@ -179,10 +244,16 @@ class Autotest
|
|
179
244
|
end
|
180
245
|
end
|
181
246
|
|
247
|
+
# If there are no files left to test
|
248
|
+
# (because they've all passed),
|
249
|
+
# then all is good.
|
182
250
|
def all_good
|
183
251
|
@files_to_test.empty?
|
184
252
|
end
|
185
253
|
|
254
|
+
# Convert a path in a string, s, into a
|
255
|
+
# class name, changing underscores to CamelCase,
|
256
|
+
# etc
|
186
257
|
def path_to_classname(s)
|
187
258
|
sep = File::SEPARATOR
|
188
259
|
f = s.sub(/^test#{sep}/, '').sub(/\.rb$/, '').split(sep)
|
@@ -191,6 +262,7 @@ class Autotest
|
|
191
262
|
f.join('::')
|
192
263
|
end
|
193
264
|
|
265
|
+
|
194
266
|
def consolidate_failures(failed)
|
195
267
|
filters = Hash.new { |h,k| h[k] = [] }
|
196
268
|
|
@@ -207,6 +279,9 @@ class Autotest
|
|
207
279
|
return filters
|
208
280
|
end
|
209
281
|
|
282
|
+
# Find the files to process, ignoring temporary files,
|
283
|
+
# source configuration management files, etc., and return
|
284
|
+
# a Hash mapping filename to modification time.
|
210
285
|
def find_files
|
211
286
|
result = {}
|
212
287
|
Find.find '.' do |f|
|
@@ -223,6 +298,11 @@ class Autotest
|
|
223
298
|
return result
|
224
299
|
end
|
225
300
|
|
301
|
+
# Find the files which have been modified, update
|
302
|
+
# the recorded timestamps, and use this to update
|
303
|
+
# the files to test. Returns true if any file is
|
304
|
+
# newer than the previously recorded most recent
|
305
|
+
# file.
|
226
306
|
def find_files_to_test(files=find_files)
|
227
307
|
updated = files.select { |filename, mtime|
|
228
308
|
@files[filename] < mtime
|
@@ -246,6 +326,8 @@ class Autotest
|
|
246
326
|
@last_mtime > previous
|
247
327
|
end
|
248
328
|
|
329
|
+
# Check results for failures, set the "bar" to red or
|
330
|
+
# green, and if there are failures record this.
|
249
331
|
def handle_results(results)
|
250
332
|
failed = results.scan(/^\s+\d+\) (?:Failure|Error):\n(.*?)\((.*?)\)/)
|
251
333
|
completed = results =~ /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/
|
@@ -257,6 +339,7 @@ class Autotest
|
|
257
339
|
@tainted = true unless @files_to_test.empty?
|
258
340
|
end
|
259
341
|
|
342
|
+
# Generate the commands to test the supplied files
|
260
343
|
def make_test_cmd files_to_test
|
261
344
|
cmds = []
|
262
345
|
full, partial = files_to_test.partition { |k,v| v.empty? }
|
@@ -270,15 +353,18 @@ class Autotest
|
|
270
353
|
cmds << "#{ruby} -I#{@libs} #{klass} -n \"/^(#{Regexp.union(*methods).source})$/\" | #{unit_diff}"
|
271
354
|
end
|
272
355
|
|
273
|
-
return cmds.join(
|
356
|
+
return cmds.join("#{SEP} ")
|
274
357
|
end
|
275
358
|
|
359
|
+
# Rerun the tests from cold (reset state)
|
276
360
|
def rerun_all_tests
|
277
361
|
reset
|
278
362
|
run_tests
|
279
363
|
hook :all_good if all_good
|
280
364
|
end
|
281
365
|
|
366
|
+
# Clear all state information about test failures
|
367
|
+
# and whether interrupts will kill autotest.
|
282
368
|
def reset
|
283
369
|
@interrupted = @wants_to_quit = false
|
284
370
|
@files.clear
|
@@ -289,6 +375,7 @@ class Autotest
|
|
289
375
|
hook :reset
|
290
376
|
end
|
291
377
|
|
378
|
+
# determine and return the path of the ruby executable.
|
292
379
|
def ruby
|
293
380
|
ruby = File.join(Config::CONFIG['bindir'],
|
294
381
|
Config::CONFIG['ruby_install_name'])
|
@@ -300,6 +387,9 @@ class Autotest
|
|
300
387
|
return ruby
|
301
388
|
end
|
302
389
|
|
390
|
+
|
391
|
+
# Return the name of the file with the tests for
|
392
|
+
# filename.
|
303
393
|
def tests_for_file(filename)
|
304
394
|
result = @test_mappings.find { |file_re, ignored| filename =~ file_re }
|
305
395
|
result = result.nil? ? [] : Array(result.last.call(filename, $~))
|
@@ -309,6 +399,8 @@ class Autotest
|
|
309
399
|
result.sort.uniq
|
310
400
|
end
|
311
401
|
|
402
|
+
# Sleep then look for files to test, until there
|
403
|
+
# are some.
|
312
404
|
def wait_for_changes
|
313
405
|
hook :waiting
|
314
406
|
begin
|
@@ -331,6 +423,8 @@ class Autotest
|
|
331
423
|
end
|
332
424
|
end
|
333
425
|
|
426
|
+
# Add the supplied block to the available hooks, with
|
427
|
+
# the given name.
|
334
428
|
def self.add_hook(name, &block)
|
335
429
|
HOOKS[name] << block
|
336
430
|
end
|
data/lib/autotest/emacs.rb
CHANGED
@@ -3,8 +3,14 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
module Autotest::Emacs
|
6
|
+
@@client_cmd = 'emacsclient -e'
|
7
|
+
|
8
|
+
def self.command= o
|
9
|
+
@@client_cmd = o
|
10
|
+
end
|
11
|
+
|
6
12
|
def self.emacs_autotest status
|
7
|
-
|
13
|
+
`#{@@client_cmd} \"(autotest-update '#{status})\"`
|
8
14
|
end
|
9
15
|
|
10
16
|
Autotest.add_hook :run_command do |at|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'autotest'
|
2
2
|
|
3
|
-
class
|
3
|
+
class Autotest::Rails < Autotest
|
4
4
|
|
5
5
|
def initialize # :nodoc:
|
6
6
|
super
|
@@ -54,10 +54,13 @@ class RailsAutotest < Autotest
|
|
54
54
|
}
|
55
55
|
end
|
56
56
|
|
57
|
+
# Given the string filename as the path, determine
|
58
|
+
# the corresponding tests for it, in an array.
|
57
59
|
def tests_for_file(filename)
|
58
60
|
super.select { |f| @files.has_key? f }
|
59
61
|
end
|
60
62
|
|
63
|
+
# Convert the pathname s to the name of class.
|
61
64
|
def path_to_classname(s)
|
62
65
|
sep = File::SEPARATOR
|
63
66
|
f = s.sub(/^test#{sep}((unit|functional|integration|views|controllers|helpers)#{sep})?/, '').sub(/\.rb$/, '').split(sep)
|
@@ -13,9 +13,9 @@
|
|
13
13
|
########################################################################
|
14
14
|
# Example Test Matrix Specification:
|
15
15
|
#
|
16
|
-
# matrix :example, :edge1, edge2, :edge3, ...
|
17
|
-
# action :action1,
|
18
|
-
# action :action2,
|
16
|
+
# matrix :example, :edge1, :edge2, :edge3, ...
|
17
|
+
# action :action1, :OK, :e_NF, :mod, ...
|
18
|
+
# action :action2, :OK, :e_RO, :na, ...
|
19
19
|
# action ...
|
20
20
|
#
|
21
21
|
########################################################################
|
@@ -40,6 +40,11 @@
|
|
40
40
|
#
|
41
41
|
# Use :na to specify an inapplicable edge case for that action.
|
42
42
|
#
|
43
|
+
# Use :OK to specify the standard positive state. It is equivalent to
|
44
|
+
# a result with the same name as the action. (eg
|
45
|
+
# matrix_test_index). This cleans up the matrix a lot and allows for
|
46
|
+
# narrower and more readable columns.
|
47
|
+
#
|
43
48
|
# Edge cases specific to an action that fall outside the matrix are
|
44
49
|
# regular tests.
|
45
50
|
#
|
@@ -52,7 +57,8 @@
|
|
52
57
|
# + There is one "setup" method per action: matrix_setup_#{action}(setup, expect)
|
53
58
|
# + There is one "test" method per result: matrix_test_#{result}(setup)
|
54
59
|
#
|
55
|
-
# Thus, for the example above, the top left-most test will
|
60
|
+
# Thus, for the matrix "example" above, the top left-most test will
|
61
|
+
# end up calling:
|
56
62
|
#
|
57
63
|
# matrix_init_example(:edge1)
|
58
64
|
# matrix_setup_action1(:edge1, :new)
|
@@ -72,11 +78,12 @@ module FunctionalTestMatrix
|
|
72
78
|
matrix = @@matrix # bind to local scope for define_method closure
|
73
79
|
|
74
80
|
testcases.each do |setup, expected|
|
75
|
-
|
81
|
+
expected_action = expected == :OK ? action : expected
|
82
|
+
define_method "test_#{matrix}_#{action}_#{setup}" do
|
76
83
|
@action = action
|
77
84
|
send "matrix_init_#{matrix}", *setup.to_s.split(/_/).map {|c| c.intern }
|
78
85
|
send "matrix_setup_#{action}", setup, expected
|
79
|
-
send "matrix_test_#{
|
86
|
+
send "matrix_test_#{expected_action}", setup
|
80
87
|
end
|
81
88
|
end
|
82
89
|
end
|
data/lib/unit_diff.rb
CHANGED
data/lib/zentest.rb
CHANGED
data/test/test_autotest.rb
CHANGED
@@ -36,7 +36,9 @@ class TestAutotest < Test::Unit::TestCase
|
|
36
36
|
@outer_test = 'test/test_outer.rb'
|
37
37
|
@inner_test_class = "TestOuter::TestInner"
|
38
38
|
|
39
|
-
|
39
|
+
klassname = self.class.name.sub(/^Test/, '')
|
40
|
+
klassname.sub!(/^(\w+)(Autotest)$/, '\2::\1') unless klassname == "Autotest"
|
41
|
+
@a = klassname.split(/::/).inject(Object) { |k,n| k.const_get(n) }.new
|
40
42
|
@a.output = StringIO.new
|
41
43
|
@a.files.clear
|
42
44
|
@a.files[@impl] = Time.at(1)
|
data/test/test_rails_autotest.rb
CHANGED
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: ZenTest
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 3.
|
7
|
-
date: 2007-
|
6
|
+
version: 3.6.0
|
7
|
+
date: 2007-05-25 00:00:00 -07:00
|
8
8
|
summary: "ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails."
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -48,6 +48,8 @@ files:
|
|
48
48
|
- example_dot_autotest.rb
|
49
49
|
- lib/autotest.rb
|
50
50
|
- lib/autotest/autoupdate.rb
|
51
|
+
- lib/autotest/camping.rb
|
52
|
+
- lib/autotest/discover.rb
|
51
53
|
- lib/autotest/emacs.rb
|
52
54
|
- lib/autotest/fixtures.rb
|
53
55
|
- lib/autotest/growl.rb
|
@@ -58,15 +60,13 @@ files:
|
|
58
60
|
- lib/autotest/migrate.rb
|
59
61
|
- lib/autotest/notify.rb
|
60
62
|
- lib/autotest/pretty.rb
|
63
|
+
- lib/autotest/rails.rb
|
61
64
|
- lib/autotest/redgreen.rb
|
62
65
|
- lib/autotest/screen.rb
|
63
66
|
- lib/autotest/shame.rb
|
64
67
|
- lib/autotest/snarl.rb
|
65
68
|
- lib/autotest/timestamp.rb
|
66
|
-
- lib/camping_autotest.rb
|
67
69
|
- lib/functional_test_matrix.rb
|
68
|
-
- lib/rails_autotest.rb
|
69
|
-
- lib/rspec_rails_autotest.rb
|
70
70
|
- lib/ruby_fork.rb
|
71
71
|
- lib/test/rails.rb
|
72
72
|
- lib/test/rails/controller_test_case.rb
|
@@ -105,10 +105,15 @@ test_files:
|
|
105
105
|
- test/test_zentest.rb
|
106
106
|
- test/test_zentest_assertions.rb
|
107
107
|
- test/test_zentest_mapping.rb
|
108
|
-
rdoc_options:
|
109
|
-
|
110
|
-
|
111
|
-
|
108
|
+
rdoc_options:
|
109
|
+
- --main
|
110
|
+
- README.txt
|
111
|
+
extra_rdoc_files:
|
112
|
+
- History.txt
|
113
|
+
- LinuxJournalArticle.txt
|
114
|
+
- Manifest.txt
|
115
|
+
- README.txt
|
116
|
+
- example.txt
|
112
117
|
executables:
|
113
118
|
- autotest
|
114
119
|
- multiruby
|
@@ -129,5 +134,5 @@ dependencies:
|
|
129
134
|
requirements:
|
130
135
|
- - ">="
|
131
136
|
- !ruby/object:Gem::Version
|
132
|
-
version: 1.2.
|
137
|
+
version: 1.2.1
|
133
138
|
version:
|
data/lib/rspec_rails_autotest.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
# (c) Copyright 2006 Nick Sieger <nicksieger@gmail.com>
|
2
|
-
#
|
3
|
-
# Permission is hereby granted, free of charge, to any person
|
4
|
-
# obtaining a copy of this software and associated documentation files
|
5
|
-
# (the "Software"), to deal in the Software without restriction,
|
6
|
-
# including without limitation the rights to use, copy, modify, merge,
|
7
|
-
# publish, distribute, sublicense, and/or sell copies of the Software,
|
8
|
-
# and to permit persons to whom the Software is furnished to do so,
|
9
|
-
# subject to the following conditions:
|
10
|
-
#
|
11
|
-
# The above copyright notice and this permission notice shall be
|
12
|
-
# included in all copies or substantial portions of the Software.
|
13
|
-
#
|
14
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
18
|
-
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
19
|
-
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
-
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
-
# SOFTWARE.
|
22
|
-
|
23
|
-
require 'autotest'
|
24
|
-
|
25
|
-
class RspecRailsAutotest < Autotest
|
26
|
-
attr_accessor :spec_command
|
27
|
-
|
28
|
-
def initialize # :nodoc:
|
29
|
-
@spec_command = "spec --diff unified"
|
30
|
-
super
|
31
|
-
@exceptions = %r%^\./(?:coverage|db|doc|log|public|script|vendor)%
|
32
|
-
end
|
33
|
-
|
34
|
-
def tests_for_file(filename)
|
35
|
-
case filename
|
36
|
-
when %r%^spec/fixtures/(.*)s.yml% then
|
37
|
-
["spec/models/#{$1}_spec.rb",
|
38
|
-
"spec/controllers/#{$1}_controller_spec.rb"]
|
39
|
-
when %r%^spec/models/.*rb$% then
|
40
|
-
[filename]
|
41
|
-
when %r%^spec/controllers/.*\.rb$% then
|
42
|
-
[filename]
|
43
|
-
# when %r%^spec/acceptance/.*\.rb$% then
|
44
|
-
# [filename]
|
45
|
-
when %r%^app/models/(.*)\.rb$% then
|
46
|
-
["spec/models/#{$1}_spec.rb"]
|
47
|
-
when %r%^app/helpers/application_helper.rb% then
|
48
|
-
@files.keys.select { |f|
|
49
|
-
f =~ %r%^spec/controllers/.*_spec\.rb$%
|
50
|
-
}
|
51
|
-
when %r%^app/helpers/(.*)_helper.rb% then
|
52
|
-
["spec/controllers/#{$1}_controller_spec.rb"]
|
53
|
-
when %r%^app/controllers/application.rb$% then
|
54
|
-
@files.keys.select { |f|
|
55
|
-
f =~ %r%^spec/controllers/.*_spec\.rb$%
|
56
|
-
}
|
57
|
-
when %r%^app/controllers/(.*)\.rb$% then
|
58
|
-
["spec/controllers/#{$1}_spec.rb"]
|
59
|
-
when %r%^app/views/layouts/% then
|
60
|
-
[]
|
61
|
-
when %r%^app/views/(.*)/% then
|
62
|
-
["spec/controllers/#{$1}_controller_spec.rb"]
|
63
|
-
when %r%^config/routes.rb$% then
|
64
|
-
@files.keys.select do |f|
|
65
|
-
f =~ %r%^spec/controllers/.*_spec\.rb$%
|
66
|
-
end
|
67
|
-
when %r%^spec/spec_helper.rb%,
|
68
|
-
%r%^config/((boot|environment(s/test)?).rb|database.yml)% then
|
69
|
-
@files.keys.select do |f|
|
70
|
-
f =~ %r%^spec/(models|controllers)/.*_spec\.rb$%
|
71
|
-
end
|
72
|
-
else
|
73
|
-
@output.puts "Dunno! #{filename}" if $TESTING
|
74
|
-
[]
|
75
|
-
end.uniq.select { |f| @files.has_key? f }
|
76
|
-
end
|
77
|
-
|
78
|
-
def handle_results(results)
|
79
|
-
failed = results.scan(/^\d+\)\n(?:\e\[\d*m)?(?:.*?Error in )?'([^\n]*)'(?: FAILED)?(?:\e\[\d*m)?\n(.*?)\n\n/m)
|
80
|
-
@files_to_test = consolidate_failures failed
|
81
|
-
unless @files_to_test.empty? then
|
82
|
-
hook :red
|
83
|
-
else
|
84
|
-
hook :green
|
85
|
-
end unless $TESTING
|
86
|
-
@tainted = true unless @files_to_test.empty?
|
87
|
-
end
|
88
|
-
|
89
|
-
def consolidate_failures(failed)
|
90
|
-
filters = Hash.new { |h,k| h[k] = [] }
|
91
|
-
failed.each do |spec, failed_trace|
|
92
|
-
@files.keys.select{|f| f =~ /spec\//}.each do |f|
|
93
|
-
if failed_trace =~ Regexp.new(f)
|
94
|
-
filters[f] << spec
|
95
|
-
break
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
return filters
|
100
|
-
end
|
101
|
-
|
102
|
-
def make_test_cmd(files_to_test)
|
103
|
-
cmds = []
|
104
|
-
full, partial = files_to_test.partition { |k,v| v.empty? }
|
105
|
-
|
106
|
-
unless full.empty? then
|
107
|
-
classes = full.map {|k,v| k}.flatten.join(' ')
|
108
|
-
cmds << "#{spec_command} #{classes}"
|
109
|
-
end
|
110
|
-
|
111
|
-
partial.each do |klass, methods|
|
112
|
-
cmds.push(*methods.map { |meth|
|
113
|
-
"#{spec_command} -s #{meth.inspect} #{klass}"
|
114
|
-
})
|
115
|
-
end
|
116
|
-
|
117
|
-
return cmds.join('; ')
|
118
|
-
end
|
119
|
-
end
|