erubis 2.3.1 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. data/{CHANGES → CHANGES.txt} +373 -3
  2. data/MIT-LICENSE +1 -1
  3. data/README.txt +6 -5
  4. data/benchmark/bench.rb +18 -11
  5. data/bin/erubis +3 -4
  6. data/contrib/erubis +3462 -5
  7. data/contrib/inline-require +54 -28
  8. data/doc/docstyle.css +25 -4
  9. data/doc/users-guide.html +814 -110
  10. data/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +209 -0
  11. data/doc-api/classes/ActionView.html +105 -0
  12. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +14 -14
  13. data/doc-api/classes/Erubis/ArrayEnhancer.html +16 -16
  14. data/doc-api/classes/Erubis/Basic/Converter.html +36 -31
  15. data/doc-api/classes/Erubis/BiPatternEnhancer.html +16 -13
  16. data/doc-api/classes/Erubis/CGenerator.html +70 -70
  17. data/doc-api/classes/Erubis/Context.html +49 -49
  18. data/doc-api/classes/Erubis/Converter.html +30 -29
  19. data/doc-api/classes/Erubis/CppGenerator.html +382 -0
  20. data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
  21. data/doc-api/classes/Erubis/Ecpp.html +126 -0
  22. data/doc-api/classes/Erubis/Engine.html +46 -43
  23. data/doc-api/classes/Erubis/ErboutEnhancer.html +16 -16
  24. data/doc-api/classes/Erubis/EscapeEnhancer.html +7 -7
  25. data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
  26. data/doc-api/classes/Erubis/Evaluator.html +22 -22
  27. data/doc-api/classes/Erubis/Generator.html +70 -70
  28. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +18 -15
  29. data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +787 -0
  30. data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +213 -0
  31. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +103 -54
  32. data/doc-api/classes/Erubis/Helpers.html +6 -1
  33. data/doc-api/classes/Erubis/InterpolationEnhancer.html +42 -41
  34. data/doc-api/classes/Erubis/JavaGenerator.html +69 -69
  35. data/doc-api/classes/Erubis/JavascriptGenerator.html +79 -74
  36. data/doc-api/classes/Erubis/Main.html +49 -48
  37. data/doc-api/classes/Erubis/NoCodeEnhancer.html +35 -35
  38. data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
  39. data/doc-api/classes/Erubis/OptimizedEruby.html +7 -7
  40. data/doc-api/classes/Erubis/OptimizedGenerator.html +84 -84
  41. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +7 -7
  42. data/doc-api/classes/Erubis/PI/Converter.html +23 -22
  43. data/doc-api/classes/Erubis/PI/Ec.html +7 -7
  44. data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
  45. data/doc-api/classes/Erubis/PI/Ejava.html +7 -7
  46. data/doc-api/classes/Erubis/PI/Ejavascript.html +7 -7
  47. data/doc-api/classes/Erubis/PI/Eperl.html +7 -7
  48. data/doc-api/classes/Erubis/PI/Ephp.html +7 -7
  49. data/doc-api/classes/Erubis/PI/Eruby.html +6 -6
  50. data/doc-api/classes/Erubis/PI/Escheme.html +7 -7
  51. data/doc-api/classes/Erubis/PI/TinyEruby.html +28 -27
  52. data/doc-api/classes/Erubis/PI.html +1 -0
  53. data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -29
  54. data/doc-api/classes/Erubis/PerlGenerator.html +63 -63
  55. data/doc-api/classes/Erubis/PhpGenerator.html +63 -63
  56. data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
  57. data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
  58. data/doc-api/classes/Erubis/PreprocessingEruby.html +183 -0
  59. data/doc-api/classes/Erubis/PreprocessingHelper.html +212 -0
  60. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +23 -23
  61. data/doc-api/classes/Erubis/PrintOutEnhancer.html +38 -38
  62. data/doc-api/classes/Erubis/RubyEvaluator.html +59 -22
  63. data/doc-api/classes/Erubis/RubyGenerator.html +53 -52
  64. data/doc-api/classes/Erubis/SchemeGenerator.html +70 -70
  65. data/doc-api/classes/Erubis/SimplifyEnhancer.html +10 -9
  66. data/doc-api/classes/Erubis/StdoutEnhancer.html +3 -3
  67. data/doc-api/classes/Erubis/StringBufferEnhancer.html +16 -16
  68. data/doc-api/classes/Erubis/TinyEruby.html +33 -33
  69. data/doc-api/classes/Erubis/XmlHelper.html +80 -15
  70. data/doc-api/classes/Erubis.html +25 -1
  71. data/doc-api/classes/Kernel.html +155 -0
  72. data/doc-api/created.rid +1 -1
  73. data/doc-api/files/README_txt.html +8 -8
  74. data/doc-api/files/erubis/context_rb.html +2 -2
  75. data/doc-api/files/erubis/converter_rb.html +3 -3
  76. data/doc-api/files/erubis/engine/ec_rb.html +2 -2
  77. data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
  78. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  79. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  80. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  81. data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
  82. data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
  83. data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
  84. data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
  85. data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
  86. data/doc-api/files/erubis/engine_rb.html +2 -2
  87. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  88. data/doc-api/files/erubis/error_rb.html +2 -2
  89. data/doc-api/files/erubis/evaluator_rb.html +2 -2
  90. data/doc-api/files/erubis/generator_rb.html +3 -3
  91. data/doc-api/files/erubis/helper_rb.html +2 -2
  92. data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +107 -0
  93. data/doc-api/files/erubis/helpers/rails_helper_rb.html +3 -2
  94. data/doc-api/files/erubis/local-setting_rb.html +2 -2
  95. data/doc-api/files/erubis/main_rb.html +4 -2
  96. data/doc-api/files/erubis/preprocessing_rb.html +114 -0
  97. data/doc-api/files/erubis/tiny_rb.html +2 -2
  98. data/doc-api/files/erubis/util_rb.html +107 -0
  99. data/doc-api/files/erubis_rb.html +2 -2
  100. data/doc-api/fr_class_index.html +13 -0
  101. data/doc-api/fr_file_index.html +4 -0
  102. data/doc-api/fr_method_index.html +237 -179
  103. data/examples/basic/Makefile +7 -2
  104. data/examples/basic/example.ecpp +33 -0
  105. data/lib/erubis/context.rb +2 -3
  106. data/lib/erubis/converter.rb +17 -11
  107. data/lib/erubis/engine/ec.rb +2 -3
  108. data/lib/erubis/engine/ecpp.rb +113 -0
  109. data/lib/erubis/engine/ejava.rb +9 -10
  110. data/lib/erubis/engine/ejavascript.rb +14 -9
  111. data/lib/erubis/engine/enhanced.rb +7 -3
  112. data/lib/erubis/engine/eperl.rb +2 -3
  113. data/lib/erubis/engine/ephp.rb +2 -3
  114. data/lib/erubis/engine/eruby.rb +8 -8
  115. data/lib/erubis/engine/escheme.rb +2 -3
  116. data/lib/erubis/engine/optimized.rb +2 -3
  117. data/lib/erubis/engine.rb +13 -11
  118. data/lib/erubis/enhancer.rb +101 -34
  119. data/lib/erubis/error.rb +2 -3
  120. data/lib/erubis/evaluator.rb +27 -10
  121. data/lib/erubis/generator.rb +3 -4
  122. data/lib/erubis/helper.rb +14 -3
  123. data/lib/erubis/helpers/rails_form_helper.rb +197 -0
  124. data/lib/erubis/helpers/rails_helper.rb +219 -77
  125. data/lib/erubis/local-setting.rb +2 -3
  126. data/lib/erubis/main.rb +85 -60
  127. data/lib/erubis/preprocessing.rb +58 -0
  128. data/lib/erubis/tiny.rb +9 -9
  129. data/lib/erubis/util.rb +22 -0
  130. data/lib/erubis.rb +4 -4
  131. data/test/assert-text-equal.rb +2 -3
  132. data/test/data/users-guide/bufvar-example.rb +10 -0
  133. data/test/data/users-guide/bufvar-example.result +17 -0
  134. data/test/data/users-guide/def_method.rb +14 -0
  135. data/test/data/users-guide/def_method.result +3 -0
  136. data/test/data/users-guide/example.ecpp +30 -0
  137. data/test/data/users-guide/example1.rb +1 -0
  138. data/test/data/users-guide/example_c.result +22 -19
  139. data/test/data/users-guide/fasteruby-example.rb +8 -0
  140. data/test/data/users-guide/fasteruby-example.result +18 -0
  141. data/test/data/users-guide/main_program1.rb +8 -0
  142. data/test/data/users-guide/main_program1.result +6 -0
  143. data/test/data/users-guide/main_program2.rb +8 -0
  144. data/test/data/users-guide/main_program2.result +6 -0
  145. data/test/data/users-guide/percentline-example.rhtml +3 -1
  146. data/test/data/users-guide/percentline_example.result +5 -3
  147. data/test/data/users-guide/prefixedline-example.rb +9 -0
  148. data/test/data/users-guide/prefixedline-example.rhtml +6 -0
  149. data/test/data/users-guide/prefixedline_example.result +9 -0
  150. data/test/data/users-guide/tail_260.result +4 -0
  151. data/test/data/users-guide/tailnewline.rhtml +3 -0
  152. data/test/data/users-guide/template1.rhtml +4 -0
  153. data/test/data/users-guide/template2.rhtml +4 -0
  154. data/test/test-engines.rb +88 -5
  155. data/test/test-enhancers.rb +83 -6
  156. data/test/test-erubis.rb +115 -11
  157. data/test/test-index-cgi.rb +191 -0
  158. data/test/test-main.rb +143 -31
  159. data/test/test-users-guide.rb +20 -3
  160. data/test/test.rb +18 -3
  161. data/test/testutil.rb +44 -8
  162. metadata +104 -67
  163. data/contrib/action_view_base_rb.patch +0 -23
data/test/test-main.rb CHANGED
@@ -1,12 +1,13 @@
1
1
  ##
2
- ## $Rev: 78 $
3
- ## $Release: 2.3.1 $
4
- ## $Date: 2007-05-23 06:41:27 +0900 (Wed, 23 May 2007) $
2
+ ## $Rev$
3
+ ## $Release: 2.7.0 $
4
+ ## $Date$
5
5
  ##
6
6
 
7
7
  require "#{File.dirname(__FILE__)}/test.rb"
8
8
 
9
9
  require 'tempfile'
10
+ require 'fileutils'
10
11
  require 'erubis/main'
11
12
 
12
13
 
@@ -22,6 +23,26 @@ class StringWriter < String
22
23
  def write(arg)
23
24
  self << arg
24
25
  end
26
+ def flush(*args)
27
+ # pass
28
+ end
29
+ def puts(arg)
30
+ case arg
31
+ when Array
32
+ arg.each do |item|
33
+ self << item << "\n"
34
+ end
35
+ else
36
+ self << arg.to_s
37
+ self << "\n" unless arg =~ /\n$/
38
+ end
39
+ end
40
+ end
41
+
42
+ class Erubis::Main
43
+ public :usage
44
+ public :show_properties
45
+ public :show_enhancers
25
46
  end
26
47
 
27
48
 
@@ -132,27 +153,15 @@ END
132
153
  END
133
154
 
134
155
  def _test()
135
- if $target
136
- name = (caller()[0] =~ /in `test_(.*?)'/) && $1
137
- return unless name == $target
138
- end
139
156
  if @filename.nil?
140
157
  method = (caller[0] =~ /in `(.*)'/) && $1 #'
158
+ method =~ /block in (.*)/ and method = $1 # for Ruby 1.9
141
159
  @filename = "tmp.#{method}"
142
160
  end
143
- File.open(@filename, 'w') { |f| f.write(@input) } if @filename
161
+ File.open(@filename, 'w') {|f| f.write(@input) } if @filename
144
162
  begin
145
- #if @options.is_a?(Array)
146
- # command = "ruby #{$script} #{@options.join(' ')} #{@filename}"
147
- #else
148
- # command = "ruby #{$script} #{@options} #{@filename}"
149
- #end
150
- #output = `#{command}`
151
- if @options.is_a?(Array)
152
- argv = @options + [ @filename ]
153
- else
154
- argv = "#{@options} #{@filename}".split
155
- end
163
+ argv = @options.is_a?(Array) ? @options.dup : @options.split
164
+ argv << @filename if @filename
156
165
  $stdout = output = StringWriter.new
157
166
  Erubis::Main.new.execute(argv)
158
167
  ensure
@@ -162,10 +171,23 @@ END
162
171
  assert_text_equal(@expected, output)
163
172
  end
164
173
 
174
+ def _error_test(errclass, errmsg)
175
+ ex = assert_raise(errclass) { _test() }
176
+ assert_equal(errmsg, ex.message)
177
+ end
178
+
179
+
180
+ def test_help # -h
181
+ @options = '-h'
182
+ m = Erubis::Main.new
183
+ @expected = m.usage() + "\n" + m.show_properties() + m.show_enhancers()
184
+ @filename = false
185
+ _test()
186
+ end
165
187
 
166
188
  def test_version # -v
167
189
  @options = '-v'
168
- @expected = (("$Release: 2.3.1 $" =~ /[.\d]+/) && $&) + "\n"
190
+ @expected = (("$Release: 2.7.0 $" =~ /[.\d]+/) && $&) + "\n"
169
191
  @filename = false
170
192
  _test()
171
193
  end
@@ -187,11 +209,35 @@ END
187
209
  end
188
210
 
189
211
 
212
+ def _with_dummy_file
213
+ bindir = File.join(File.dirname(File.dirname(__FILE__)), 'bin')
214
+ env_path = ENV['PATH']
215
+ env__ = ENV['_']
216
+ begin
217
+ ENV['PATH'] = bindir + File::PATH_SEPARATOR + ENV['PATH']
218
+ ENV['_'] = 'erubis'
219
+ Tempfile.open(self.name.gsub(/[^\w]/,'_')) do |f|
220
+ f.write(INPUT)
221
+ f.flush
222
+ yield(f.path)
223
+ end
224
+ ensure
225
+ ENV['PATH'] = env_path
226
+ ENV['_'] = env__ if env__
227
+ end
228
+ end
229
+
230
+
190
231
  def test_syntax1 # -z (syntax ok)
191
232
  @input = INPUT
192
233
  @expected = "Syntax OK\n"
193
234
  @options = '-z'
194
235
  _test()
236
+ #
237
+ _with_dummy_file do |filepath|
238
+ actual = `erubis #{@options} #{filepath}`
239
+ assert_equal @expected, actual
240
+ end
195
241
  end
196
242
 
197
243
 
@@ -214,7 +260,32 @@ END
214
260
  basename = 'tmp.test_syntax2_%d.rhtml'
215
261
  filenames = [ basename % 0, basename % 1 ]
216
262
  errmsgs = []
217
- errmsgs << <<'END'
263
+ if ruby19?
264
+ errmsgs << <<'END'
265
+ 3: syntax error, unexpected ']', expecting ')'
266
+ _buf << ' <li>'; _buf << ( item[:name]] ).to_s; _buf << '</li>
267
+ ^
268
+ -:4: syntax error, unexpected keyword_end, expecting ')'
269
+ '; end
270
+ ^
271
+ -:7: syntax error, unexpected $end, expecting ')'
272
+ END
273
+ errmsgs << <<'END'
274
+ 7: syntax error, unexpected $end, expecting keyword_end
275
+ END
276
+ elsif rubinius?
277
+ errmsgs << <<'END'
278
+ 3: expecting ')'
279
+ _buf << ' <li>'; _buf << ( item[:name]] ).to_s; _buf << '</li>
280
+ ^
281
+ END
282
+ errmsgs << <<'END'
283
+ 7: missing 'end' for 'for' started on line 2
284
+ _buf.to_s
285
+ ^
286
+ END
287
+ else
288
+ errmsgs << <<'END'
218
289
  3: syntax error, unexpected ']', expecting ')'
219
290
  _buf << ' <li>'; _buf << ( item[:name]] ).to_s; _buf << '</li>
220
291
  ^
@@ -223,21 +294,26 @@ END
223
294
  ^
224
295
  -:7: syntax error, unexpected $end, expecting ')'
225
296
  END
226
- errmsgs << <<'END'
297
+ errmsgs << <<'END'
227
298
  7: syntax error, unexpected $end, expecting kEND
228
299
  END
300
+ end
229
301
  #
230
302
  max = inputs.length
231
303
  (0...max).each do |i|
232
304
  @input = inputs[i]
233
305
  @expected = "tmp.test_syntax2:#{errmsgs[i]}"
234
306
  @options = '-z'
307
+ if rubinius?
308
+ @expected.sub! /unexpected kEND/, 'unexpected keyword_end'
309
+ @expected.sub! /expecting kEND/, 'expecting keyword_end'
310
+ end
235
311
  _test()
236
312
  end
237
313
  #
238
314
  begin
239
315
  (0...max).each do |i|
240
- File.open(filenames[i], 'w') { |f| f.write(inputs[i]) }
316
+ File.open(filenames[i], 'w') {|f| f.write(inputs[i]) }
241
317
  end
242
318
  @input = '<ok/>'
243
319
  @expected = ''
@@ -246,6 +322,10 @@ END
246
322
  @expected << "#{filenames[i]}:#{errmsgs[i]}"
247
323
  @options << " #{filenames[i]}"
248
324
  end
325
+ if rubinius?
326
+ @expected.sub! /unexpected kEND/, 'unexpected keyword_end'
327
+ @expected.sub! /expecting kEND/, 'expecting keyword_end'
328
+ end
249
329
  _test()
250
330
  ensure
251
331
  (0...max).each do |i|
@@ -336,7 +416,7 @@ END
336
416
  user: Hello
337
417
  password: world
338
418
  END
339
- File.open(datafile, 'w') { |f| f.write(str) }
419
+ File.open(datafile, 'w') {|f| f.write(str) }
340
420
  begin
341
421
  _test()
342
422
  ensure
@@ -355,7 +435,7 @@ END
355
435
  @user = 'Hello'
356
436
  @password = 'world'
357
437
  END
358
- File.open(datafile, 'w') { |f| f.write(str) }
438
+ File.open(datafile, 'w') {|f| f.write(str) }
359
439
  begin
360
440
  _test()
361
441
  ensure
@@ -374,7 +454,7 @@ END
374
454
  user: Hello
375
455
  password: world
376
456
  END
377
- File.open(yamlfile, 'w') { |f| f.write(yaml) }
457
+ File.open(yamlfile, 'w') {|f| f.write(yaml) }
378
458
  begin
379
459
  _test()
380
460
  ensure
@@ -396,11 +476,11 @@ END
396
476
  - bbb
397
477
  - ccc
398
478
  END
399
- File.open(yamlfile, 'w') { |f| f.write(yaml) }
479
+ File.open(yamlfile, 'w') {|f| f.write(yaml) }
400
480
  assert_raise(ArgumentError) do
401
481
  _test()
402
482
  end
403
- File.open(yamlfile, 'w') { |f| f.write(yaml.gsub(/\t/, ' '*8)) }
483
+ File.open(yamlfile, 'w') {|f| f.write(yaml.gsub(/\t/, ' '*8)) }
404
484
  _test()
405
485
  ensure
406
486
  File.unlink(yamlfile) if test(?f, yamlfile)
@@ -466,7 +546,7 @@ list:
466
546
  - bbb
467
547
  - ccc
468
548
  END
469
- File.open(yamlfile, 'w') { |f| f.write(yaml) }
549
+ File.open(yamlfile, 'w') {|f| f.write(yaml) }
470
550
  begin
471
551
  _test()
472
552
  ensure
@@ -517,7 +597,7 @@ END
517
597
  _test()
518
598
  ensure
519
599
  File.unlink filename if test(?f, filename)
520
- Dir.rmdir dir if test(?d, dir)
600
+ FileUtils.rm_r dir if test(?d, dir)
521
601
  end
522
602
  end
523
603
 
@@ -543,7 +623,7 @@ END
543
623
  _test()
544
624
  ensure
545
625
  File.unlink filename if test(?f, filename)
546
- Dir.rmdir dir if test(?d, dir)
626
+ FileUtils.rm_r dir if test(?d, dir)
547
627
  end
548
628
  end
549
629
 
@@ -585,6 +665,36 @@ END
585
665
  end
586
666
 
587
667
 
668
+ def test_invalid_option # -1 (invalid option)
669
+ @input = INPUT
670
+ @options = '-1'
671
+ _error_test(Erubis::CommandOptionError, "-1: unknown option.")
672
+ end
673
+
674
+
675
+ def test_invalid_enhancer # -E hoge
676
+ @options = '-E hoge'
677
+ errmsg = "hoge: no such Enhancer (try '-h' to show all enhancers)."
678
+ _error_test(Erubis::CommandOptionError, errmsg)
679
+ end
680
+
681
+
682
+ def test_invalid_lang # -l hoge
683
+ @options = '-l hoge'
684
+ errmsg = "-l hoge: invalid language name (class Erubis::Ehoge not found)."
685
+ _error_test(Erubis::CommandOptionError, errmsg)
686
+ end
687
+
688
+
689
+ def test_missing_argument # -E
690
+ @filename = false
691
+ @options = '-E'
692
+ _error_test(Erubis::CommandOptionError, "-E: enhancers required.")
693
+ @options = '-l'
694
+ _error_test(Erubis::CommandOptionError, "-l: lang required.")
695
+ end
696
+
697
+
588
698
  def test_pi1 # --pi -x
589
699
  @input = PI_INPUT
590
700
  @expected = PI_SRC
@@ -637,4 +747,6 @@ END
637
747
  end
638
748
 
639
749
 
750
+ self.post_definition()
751
+
640
752
  end
@@ -1,7 +1,6 @@
1
1
  ###
2
- ### $Rev: 77 $
3
- ### $Release: 2.3.1 $
4
- ### copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
2
+ ### $Release: 2.7.0 $
3
+ ### copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
5
4
  ###
6
5
 
7
6
  require "#{File.dirname(__FILE__)}/test.rb"
@@ -29,6 +28,22 @@ class KwarkUsersGuideTest < Test::Unit::TestCase
29
28
  s =~ /\A\$ (.*?)\n/
30
29
  command = $1
31
30
  expected = $'
31
+ if ruby19?
32
+ case @name
33
+ when 'test_main_program1_result'
34
+ expected.sub!('["eruby", "items", "x", "_buf"]', '[:_buf, :eruby, :items, :x]')
35
+ when 'test_main_program2_result'
36
+ expected.sub!('["_context", "x", "_buf"]', '[:_buf, :x, :_context]')
37
+ end
38
+ elsif rubinius?
39
+ command.sub!(/^ruby\b/, 'rbx')
40
+ case @name
41
+ when 'test_main_program1_result'
42
+ expected.sub!('["eruby", "items", "x", "_buf"]', '["_buf", "eruby", "items", "x"]')
43
+ when 'test_main_program2_result'
44
+ expected.sub!('["_context", "x", "_buf"]', '["_buf", "x", "_context"]')
45
+ end
46
+ end
32
47
  result = `#{command}`
33
48
  assert_text_equal(expected, result)
34
49
  end
@@ -53,4 +68,6 @@ class KwarkUsersGuideTest < Test::Unit::TestCase
53
68
  end
54
69
 
55
70
 
71
+ self.post_definition()
72
+
56
73
  end
data/test/test.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  ##
2
- ## $Rev: 77 $
3
- ## $Release: 2.3.1 $
4
- ## copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
5
4
  ##
6
5
 
7
6
 
@@ -21,6 +20,22 @@ require 'testutil'
21
20
  require 'erubis'
22
21
 
23
22
 
23
+ Test::Unit::TestCase.class_eval do
24
+ if RUBY_VERSION >= "1.9"
25
+ ## minitest doesn't have 'name()' method
26
+ def name
27
+ @name || @__name__
28
+ end
29
+ def ruby19
30
+ yield
31
+ end
32
+ else
33
+ def ruby19
34
+ end
35
+ end
36
+ end
37
+
38
+
24
39
  if $0 == __FILE__
25
40
  require "#{TESTDIR}/test-erubis.rb"
26
41
  require "#{TESTDIR}/test-engines.rb"
data/test/testutil.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  ###
2
- ### $Rev: 77 $
3
- ### $Release: 2.3.1 $
4
- ### copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
2
+ ### $Release: 2.7.0 $
3
+ ### copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
5
4
  ###
6
5
 
7
6
  require 'yaml'
@@ -9,6 +8,21 @@ require 'yaml'
9
8
  require 'test/unit/testcase'
10
9
 
11
10
 
11
+
12
+ def ruby18? # :nodoc:
13
+ RUBY_VERSION =~ /\A1.8/
14
+ end
15
+
16
+ def ruby19? # :nodoc:
17
+ RUBY_VERSION =~ /\A1.9/
18
+ end
19
+
20
+ def rubinius? # :nodoc:
21
+ defined?(RUBY_ENGINE) && RUBY_ENGINE == "rbx"
22
+ end
23
+
24
+
25
+
12
26
  class Test::Unit::TestCase
13
27
 
14
28
 
@@ -20,11 +34,7 @@ class Test::Unit::TestCase
20
34
  s = $'
21
35
  end
22
36
  # untabify
23
- unless options[:tabify] == false
24
- s = s.inject('') do |sb, line|
25
- sb << line.gsub(/([^\t]{8})|([^\t]*)\t/n) { [$+].pack("A8") }
26
- end
27
- end
37
+ s = _untabify(s) unless options[:tabify] == false
28
38
  # load yaml document
29
39
  testdata_list = []
30
40
  YAML.load_documents(s) do |ydoc|
@@ -72,4 +82,30 @@ class Test::Unit::TestCase
72
82
  end
73
83
 
74
84
 
85
+ def self.post_definition
86
+ if ENV['TEST']
87
+ target = "test_#{ENV['TEST']}"
88
+ self.instance_methods.each do |method_name|
89
+ m = method_name.to_s
90
+ private m if m =~ /\Atest_/ && m != target
91
+ end
92
+ end
93
+ end
94
+
95
+
96
+ def self._untabify(str, width=8)
97
+ return str if str.nil?
98
+ list = str.split(/\t/, -1) # if 2nd arg is negative then split() doesn't remove tailing empty strings
99
+ last = list.pop
100
+ sb = ''
101
+ list.each do |s|
102
+ column = (n = s.rindex(?\n)) ? s.length - n - 1 : s.length
103
+ n = width - (column % width)
104
+ sb << s << (' ' * n)
105
+ end
106
+ sb << last if last
107
+ return sb
108
+ end
109
+
110
+
75
111
  end