verify 0.3 → 0.3.1

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 (4) hide show
  1. data/RELEASE +8 -0
  2. data/lib/verify.rb +119 -88
  3. data/test/verify-verify-01.rb +1 -1
  4. metadata +1 -1
data/RELEASE CHANGED
@@ -1,3 +1,11 @@
1
+ v 0.3.1
2
+ 2009-06-24 Verify
3
+ -----------------
4
+ * Heavy refactoring, the code sucks much less now.
5
+ * Trying to get it to run with JRuby --1.9, no such luck, waiting for the next release.
6
+
7
+
8
+ v 0.3
1
9
  2009-06-18 Verify ( Mockify )
2
10
  -----------------------------
3
11
 
@@ -63,77 +63,100 @@
63
63
 
64
64
  module Lab419
65
65
  module Verify
66
- VERSION = "0.3"
66
+ VERSION = "0.3.1"
67
67
  AUTHOR = "Robert Dober"
68
68
  URLS = %w{http://labrador.rubyforge.org/verify}
69
69
  end
70
70
  end
71
71
 
72
- total_failed = 0
73
- total_verified = 0
74
- report_stream = $stderr
72
+ # First we will create an annonymous statistics object into which
73
+ # we will extend all the functionalities now expressed by lambdas
75
74
 
76
- optional_message = lambda do | msg |
77
- msg ? "#{msg}: " : ""
75
+ ignore_messages = Object::new
76
+ ignore_messages.instance_eval do
77
+ def method_missing *args, &blk; nil end
78
78
  end
79
79
 
80
- percentage = lambda do | all, nok |
81
- all.zero? ? "(***.**%)" :
82
- "(%6.2f%%)" % ( 10_000 * ( all - nok ).to_f / all / 100 )
83
- end
80
+ new_stats = lambda do | parent = ignore_messages |
81
+ { failed: 0,
82
+ verified: 0,
83
+ report_stream: $stderr,
84
+ messages: [],
85
+ parent: parent
86
+ }.extend(
87
+ Module::new do
88
+ def success
89
+ self[ :verified ] += 1
90
+ self[ :parent ].success
91
+ end
92
+ def failure
93
+ self[ :failed ] += 1
94
+ self[ :parent ].failure
95
+ end
84
96
 
85
- total_report = lambda do
86
- report_stream << "\n"
87
- resume =
88
- "+++ S u m m a r y: Verifications: #{total_verified+total_failed}, failed: #{total_failed}, succeeded: #{total_verified} #{percentage[ total_verified + total_failed, total_failed ]} +++"
89
- rchar = total_failed.zero? ? "=" : "*"
90
- s = resume.size
91
- report_stream << "+" * s
92
- report_stream << "\n"
93
- report_stream << "+++" << " " * ( s - 6 ) << "+++"
94
- report_stream << "\n"
95
- report_stream << ( resume << "\n" )
96
- report_stream << "+++" << " " * ( s - 6 ) << "+++"
97
- report_stream << "\n"
98
- report_stream << ( rchar * resume.size.pred << "\n" )
99
- end
97
+ def fail_verification level, msg
98
+ p caller if $DEBUG
99
+ messages = fetch :messages
100
+ if level then
101
+ messages << "Error: #{msg} #{caller[level - 1]}"
102
+ else
103
+ messages << "Error: #{msg}"
104
+ end
105
+ failure
106
+ end
100
107
 
101
- include( Module::new do
102
- define_method :Verify do |ver_msg=nil, ver_stream=nil, &ver_blk|
103
- report_stream = ver_stream if ver_stream
104
- messages = []
105
- failed = 0
106
- verified = 0
107
-
108
- fail_verification = lambda do | level, msg |
109
- p caller if $DEBUG
110
- if level then
111
- messages << "Error: #{msg} #{caller[level]}"
112
- else
113
- messages << "Error: #{msg}"
114
- end
115
- failed += 1
116
- total_failed += 1
117
- end
118
-
119
- report = lambda do | msg = nil, stream = $stderr |
120
- #stream << "\n"
121
- messages.map{ |m| m << "\n" }.each do | line |
122
- stream << line
108
+ def percentage
109
+ verified, failed = values_at( :verified, :failed )
110
+ total = verified + failed
111
+ total.zero? ?
112
+ "(***.**%)" :
113
+ "(%6.2f%%)" % ( 10_000 * ( verified ).to_f / total / 100 )
114
+ end
115
+
116
+ define_method :report do | msg = nil |
117
+ report_stream, messages, verified, failed = values_at( :report_stream, :messages, :verified, :failed )
118
+ messages.map{ |m| m << "\n" }.each do | line |
119
+ report_stream << line
120
+ end
121
+
122
+ rchar = failed.zero? ? "=" : "*"
123
+ resume =
124
+ "#{rchar}#{rchar} #{msg ? "#{msg}: " : ""}Verifications: #{verified+failed}, failed: #{failed}, succeeded: #{verified} #{percentage}"
125
+ report_stream << ( resume << "\n" )
123
126
  end
124
127
 
125
- rchar = failed.zero? ? "=" : "*"
126
- resume =
127
- "#{rchar}#{rchar} #{optional_message[ msg ]}Verifications: #{verified+failed}, failed: #{failed}, succeeded: #{verified} #{percentage[ verified + failed, failed ]}"
128
- stream << ( resume << "\n" )
129
- #stream << ( rchar * resume.size << "\n" )
130
- end
128
+ def summary
129
+ report_stream, verified, failed = values_at( :report_stream, :verified, :failed )
130
+ report_stream << "\n"
131
+ resume =
132
+ "+++ S u m m a r y: Verifications: #{verified+failed}, failed: #{failed}, succeeded: #{verified} #{percentage} +++"
133
+ rchar = failed.zero? ? "=" : "*"
134
+ s = resume.size
135
+ report_stream << "+" * s
136
+ report_stream << "\n"
137
+ report_stream << "+++" << " " * ( s - 6 ) << "+++"
138
+ report_stream << "\n"
139
+ report_stream << ( resume << "\n" )
140
+ report_stream << "+++" << " " * ( s - 6 ) << "+++"
141
+ report_stream << "\n"
142
+ report_stream << ( rchar * resume.size.pred << "\n" )
143
+ end
131
144
 
132
- succeed_verification = lambda do
133
- verified += 1
134
- total_verified += 1
135
- end
145
+ end)
136
146
 
147
+ end
148
+
149
+ total_stats = new_stats.call
150
+
151
+ at_exit do
152
+ at_exit do
153
+ at_exit do
154
+ total_stats.summary
155
+ end
156
+ end
157
+ end
158
+
159
+ new_verifer = lambda do | stats |
137
160
  Module::new do
138
161
 
139
162
  begin
@@ -149,14 +172,14 @@ include( Module::new do
149
172
  a = msg[ :actual ]
150
173
  msg = msg[ :message ] || msg[ :msg ]
151
174
  return fail_verification [ 2, "#{msg}\n.. target: #{t.inspect}\n.. actual: #{a.inspect}\n.. #{msg} in " ] unless t==a
152
- return succeed_verification[]
175
+ return stats.success
153
176
  end
154
- return fail_verification[ 2, "#{msg} in " ] unless blk[]
155
- succeed_verification[]
177
+ return stats.fail_verification( 2, "#{msg} in " ) unless blk[]
178
+ stats.success
156
179
  rescue Exception => e
157
- fail_verification[ nil, "#{msg} #{e.message} in #{e.backtrace.first}" ]
180
+ stats.fail_verification( nil, "#{msg} #{e.message} in #{e.backtrace.first}" )
158
181
  end
159
- end
182
+ end # :verify
160
183
 
161
184
  define_method :refute do | msg=nil, &blk |
162
185
  begin
@@ -164,42 +187,50 @@ include( Module::new do
164
187
  t = msg[ :target ]
165
188
  a = msg[ :actual ]
166
189
  msg = msg[ :message ] || msg[ :msg ]
167
- return fail_verification [ 2, "#{msg}\n.. target: #{t.inspect}\n.. actual: #{a.inspect}\n.. #{msg} in " ] if t==a
168
- return succeed_verification[]
190
+ return stats.fail_verification( 2, "#{msg}\n.. target: #{t.inspect}\n.. actual: #{a.inspect}\n.. #{msg} in " ) if t==a
191
+ return stats.success
169
192
  end
170
- return fail_verification[ 2, "#{msg} in " ] if blk[]
171
- succeed_verification[]
193
+ return stats.fail_verification( 2, "#{msg} in " ) if blk[]
194
+ stats.success
172
195
  rescue Exception => e
173
- fail_verification[ nil, "#{msg} #{e.message} in #{e.backtrace.first}" ]
196
+ stats.fail_verification( nil, "#{msg} #{e.message} in #{e.backtrace.first}" )
174
197
  end
175
- end
198
+ end # :refute
176
199
 
177
200
  define_method :verify_exceptions do | *excpts, &blk |
178
201
  begin
179
202
  blk[]
180
203
  fail_verification[ 2, "None of #{excpts} thrown in " ]
181
204
  rescue *excpts
182
- succeed_verification[]
205
+ stats.success
183
206
  rescue Exception => e
184
- fail_verification[ 3, "#{e} #{e.class} was thrown, but one of \"#{excpts}\" was expected in " ]
207
+ stats.fail_verification( 3, "#{e} #{e.class} was thrown, but one of \"#{excpts}\" was expected in " )
185
208
  end
186
- end
209
+ end # :verify_exception
187
210
 
188
211
  extend self
189
- module_eval( &ver_blk )
190
- report[ ver_msg, ver_stream || report_stream ]
191
-
192
- end
193
-
194
- end
195
- end
196
- )
197
-
198
- at_exit do
199
- at_exit do
200
- at_exit do
201
- total_report[]
202
- end
203
- end
204
- end
205
- # vim: sw=2 sts=2 ft=ruby nu expandtab:
212
+ end # Module::new
213
+ end # new_verifier
214
+
215
+ include( Module::new do
216
+ if RUBY_ENGINE =~ /jruby/i then # BEGIN go away after fix of JRUBY-3774
217
+ define_method :__Verify__JRUBY_3774_workaround do |ver_msg, ver_blk|
218
+ stats = new_stats[ total_stats ]
219
+ verifier = new_verifer[ stats ]
220
+ verifier.module_eval( &ver_blk )
221
+ stats.report ver_msg
222
+ end
223
+ def Verify ver_msg = nil, &ver_rvlk
224
+ __Verify__JRUBY_3774_workaround ver_msg, ver_rvlk
225
+ end
226
+ else # END go away after fix of JRUBY-3774
227
+ define_method :Verify do |ver_msg=nil, &ver_blk|
228
+ stats = new_stats[ total_stats ]
229
+ verifier = new_verifer[ stats ]
230
+ verifier.module_eval( &ver_blk )
231
+ stats.report ver_msg
232
+ end # : Verify
233
+ end # go away after fix of JRUBY-3774
234
+ end )
235
+
236
+ # vim: sw=2 sts=2 ft=ruby nu expandtab:
@@ -10,7 +10,7 @@ Verify "metadata" do
10
10
  'Robert Dober' == Lab419::Verify::AUTHOR
11
11
  end
12
12
  verify "version" do
13
- '0.3' == Lab419::Verify::VERSION
13
+ '0.3.1' == Lab419::Verify::VERSION
14
14
  end
15
15
  end
16
16
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verify
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.3"
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert