tdoc 0.8.0 → 0.9.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.
Files changed (2) hide show
  1. data/bin/tdoc.rb +35 -15
  2. metadata +2 -2
data/bin/tdoc.rb CHANGED
@@ -15,16 +15,15 @@ def process(file) #called at end of script
15
15
  if files.count > 1
16
16
  files.each {|f| system("#{$PROGRAM_NAME} #{f} #{ARGV}")}
17
17
  else
18
- mk_test_context(files[0])
18
+ test_name=File.basename(file).sub(/\..*?$/,'')
19
+ test_case=Class.new(Test::Unit::TestCase)
20
+ Object.const_set(:"Test#{test_name.capitalize}", test_case)
21
+ mk_test_context(files[0], test_case)
19
22
  end
20
23
  end
21
24
  def mk_test_context(file, test_case=nil)
22
25
  test_name=File.basename(file).sub(/\..*?$/,'')
23
26
  test_dir=File.dirname(file)
24
- unless test_case
25
- test_case=Class.new(Test::Unit::TestCase)
26
- Object.const_set(:"Test#{test_name.capitalize}", test_case)
27
- end
28
27
  text=File.read(file)
29
28
  opts={
30
29
  :requires => Dir.glob("#{test_dir}/#{test_name}#{EXTENSIONS[:requires]}"),
@@ -40,7 +39,7 @@ def mk_test_context(file, test_case=nil)
40
39
  end
41
40
  opts[:requires].each {|r| require "#{r}" if FileTest.exist? "#{r}" }
42
41
  opts[:test_cases].delete_if {|c| c.match(/#{test_name}/)}
43
- opts[:setup]=text.match(/#{LINSTM}setup\s+(.*?)#{LINSTM}end\s+/m).to_a[1]
42
+ setup_text=text.match(/#{LINSTM}setup\s+(.*?)#{LINSTM}end\s+/m).to_a[1]
44
43
  tests=text.split(/#{LINST}[Ee]xamples?:/).to_a[1..-1].to_a.map do |test|
45
44
  test.gsub!(/#{LINST}>>\s*(.+)\n#{LINST}=>\s*(.+)/) {|m|
46
45
  expected, actual=[$2,$1]
@@ -52,17 +51,38 @@ def mk_test_context(file, test_case=nil)
52
51
  test_text=lines.map {|l| l.match(/#{LINST}(assert.+)/) && $1}.compact.join ";\n"
53
52
  [lines[0], test_text]
54
53
  end
55
- test_case.context test_name do
56
- setup do
57
- eval opts[:setup].to_a.join ';'
58
- end
59
- tests.each do |test|
60
- should test[0] do
61
- eval test[1]
54
+ context_proc=lambda {
55
+ context test_name do
56
+ setup do
57
+ eval setup_text.to_a.join ';'
58
+ end
59
+ tests.each do |test|
60
+ should test[0] do
61
+ eval test[1]
62
+ end
63
+ end
64
+ opts[:contexts].compact.each do |c|
65
+ mk_test_context(c).call
62
66
  end
63
67
  end
64
- end
65
- opts[:contexts].compact.each {|c| mk_test_context "#{c}", test_case}
68
+ }
66
69
  opts[:test_cases].each {|c| process(c)}
70
+ if test_case
71
+ test_case.context test_name do
72
+ setup do
73
+ eval setup_text.to_a.join ';'
74
+ end
75
+ tests.each do |test|
76
+ should test[0] do
77
+ eval test[1]
78
+ end
79
+ end
80
+ opts[:contexts].compact.each do |c|
81
+ mk_test_context(c).call
82
+ end
83
+ end
84
+ else
85
+ context_proc
86
+ end
67
87
  end
68
88
  process(ARGV.shift || DEFAULT_FILE)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tdoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Herb Daily
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2011-11-28 00:00:00 -03:00
12
+ date: 2011-11-29 00:00:00 -03:00
13
13
  default_executable: tdoc.rb
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency