ZenTest 3.5.2 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/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
|