tryouts 0.8.1 → 0.8.2

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/CHANGES.txt CHANGED
@@ -1,5 +1,13 @@
1
1
  TRYOUTS, CHANGES
2
2
 
3
+
4
+ #### 0.8.2 (2009-07-19) ###############################
5
+
6
+ * CHANGE: Moved Drill and Reality to separate files.
7
+ * CHANGE: dream blocks are now lazy executed just before the
8
+ drill is executed.
9
+
10
+
3
11
  #### 0.8.1 (2009-07-14) ###############################
4
12
 
5
13
  * CHANGE: Fixed parentheses warning in tryouts.rb for Ruby 1.8
@@ -114,103 +114,4 @@ class Tryouts::Drill
114
114
  end
115
115
 
116
116
 
117
- # = Dream
118
- #
119
- # Contains the expected response of a Drill
120
- #
121
- class Dream < Tryouts::Drill::Response
122
-
123
- def self.from_block(definition)
124
- d = Tryouts::Drill::Dream.new
125
- d.from_block definition
126
- d
127
- end
128
-
129
- def from_block(definition)
130
- self.output = instance_eval &definition
131
- self
132
- end
133
-
134
- # Takes a String +val+ and splits the lines into an Array.
135
- def inline(val=nil)
136
- lines = (val.split($/) || [])
137
- lines.shift if lines.first.strip == ""
138
- lines.pop if lines.last.strip == ""
139
- lines
140
- end
141
-
142
- def ==(reality)
143
- return @answer unless @answer.nil?
144
- @answer = Response.compare(self, reality)
145
- end
146
-
147
- def test_to_string(reality)
148
- return @test_string unless @test_string.nil?
149
- @test_string = Response.compare_string(self, reality)
150
- end
151
-
152
- def comparison_value
153
- return @ret unless @ret.nil?
154
- @ret = case @format
155
- when :gt, :gte, :lt, :lte, :ne
156
- op = {:gt=>'>',:gte=>'>=', :lt=>'<', :lte => '<=', :ne => '!='}.find { |i| i[0] == @format }
157
- @output
158
- when :proc
159
- true
160
- when :respond_to?, :is_a?, :kind_of?
161
- true
162
- when :grep
163
- @output
164
- else
165
- @output
166
- end
167
- end
168
- end
169
-
170
- # = Reality
171
- #
172
- # Contains the actual response of a Drill
173
- #
174
- class Reality < Tryouts::Drill::Response
175
- # An ordered hash taken from the DrillContext that created this Reality.
176
- attr_accessor :stash
177
- attr_accessor :error
178
- attr_accessor :trace
179
- attr_accessor :ecode
180
- attr_accessor :etype
181
- # For :cli drills only. Contains the shell command string.
182
- attr_accessor :command
183
- def initialize
184
- @stash = Tryouts::HASH_TYPE.new
185
- end
186
-
187
- def ==(dream)
188
- Response.compare(dream, self)
189
- end
190
-
191
- def comparison_value(dream)
192
- case dream.format
193
- when :proc
194
- test = dream.output
195
- (test.arity > 0 ? test.call(@output) : test.call)
196
- when :exception
197
- @etype
198
- when :respond_to?, :is_a?, :kind_of?, :grep
199
- @output.send(dream.format, dream.output)
200
- when nil
201
- @output
202
- else
203
- return nil if @output.nil?
204
-
205
- if !dream.format.is_a?(Symbol)
206
- "This dream format is not a Symbol: #{dream.format}"
207
- elsif @output.respond_to?(dream.format)
208
- @output.send(dream.format)
209
- else
210
- @output
211
- end
212
- end
213
- end
214
- end
215
-
216
117
  end
data/lib/tryouts/drill.rb CHANGED
@@ -10,6 +10,8 @@ class Tryouts
10
10
 
11
11
  require 'tryouts/drill/context'
12
12
  require 'tryouts/drill/response'
13
+ require 'tryouts/drill/dream'
14
+ require 'tryouts/drill/reality'
13
15
  require 'tryouts/drill/sergeant/cli'
14
16
  require 'tryouts/drill/sergeant/api'
15
17
  require 'tryouts/drill/sergeant/benchmark'
@@ -24,7 +26,6 @@ class Tryouts
24
26
  attr_reader :name
25
27
  # A Proc object which contains the drill logic.
26
28
  attr_reader :drill
27
-
28
29
  # A Sergeant object which executes the drill
29
30
  attr_reader :sergeant
30
31
  # An Array of Dream objects (the expected output of the test)
@@ -97,6 +98,9 @@ class Tryouts
97
98
  def skip?; @skip; end
98
99
 
99
100
  def run(context=nil)
101
+ unless @dreams.empty?
102
+ @dreams.each { |d| d.execute_output_block }
103
+ end
100
104
  begin
101
105
  @reality = @sergeant.run @drill, context
102
106
  # Store the stash from the drill block
@@ -147,11 +147,11 @@ class Tryouts
147
147
  args = args.size == 1 ? [args.first] : args.reverse
148
148
  dobj = Tryouts::Drill::Dream.new(*args)
149
149
  else
150
- if args.size > 1
151
- raise "Dreams with a block can take only one argument (#{@name})"
152
- end
153
- dobj = Tryouts::Drill::Dream.from_block definition
150
+ msg = "Dreams with blocks take only 1 argument (Tryout: '#{@name}')"
151
+ raise TooManyArgs, msg if args.size > 1
152
+ dobj = Tryouts::Drill::Dream.new
154
153
  dobj.format = args.first if args.size == 1
154
+ dobj.output_block = definition
155
155
  end
156
156
  @dream_catcher.push dobj
157
157
  dobj
data/lib/tryouts.rb CHANGED
@@ -34,9 +34,9 @@ class Tryouts
34
34
  class Exception < RuntimeError; end
35
35
  # = BadDreams
36
36
  # Raised when there is a problem loading or parsing a Tryouts::Drill::Dream object
37
- class BadDream < Exception; end
38
-
39
- class NoDrillType < Exception
37
+ class BadDream < Tryouts::Exception; end
38
+ class TooManyArgs < Tryouts::Exception; end
39
+ class NoDrillType < Tryouts::Exception
40
40
  attr_accessor :tname
41
41
  def initialize(t); @tname = t; end
42
42
  def message
@@ -45,7 +45,7 @@ class Tryouts
45
45
  end
46
46
  end
47
47
 
48
- VERSION = "0.8.1"
48
+ VERSION = "0.8.2"
49
49
 
50
50
  require 'tryouts/mixins'
51
51
  require 'tryouts/tryout'
@@ -3,6 +3,10 @@ group "Syntax"
3
3
 
4
4
  tryouts "Dreams" do
5
5
 
6
+ setup do
7
+ Tryouts.const_set :TEST_VALUE, 9000
8
+ end
9
+
6
10
  drill "dream inline", :muggsy do
7
11
  :muggsy
8
12
  end
@@ -15,7 +19,7 @@ tryouts "Dreams" do
15
19
  dream do
16
20
  :muggsy
17
21
  end
18
- drill "dream output in a block" do
22
+ drill "dream output can be specified with a block" do
19
23
  :muggsy
20
24
  end
21
25
 
@@ -26,15 +30,25 @@ tryouts "Dreams" do
26
30
  :muggsy
27
31
  end
28
32
 
29
- ## NOTE: The following should raise a Runtime error b/c dreams takes 1 arg
33
+ # NOTE: The constant is defined in the setup block which is called before the
34
+ # drill block is executed. As of 0.8.2 the dream block is executed literally
35
+ # just before the drill block which is why this test returns true.
36
+ dream do
37
+ Tryouts.const_get :TEST_VALUE
38
+ end
39
+ drill "dream output from a block is executed just before the drill" do
40
+ 9000
41
+ end
42
+
43
+ ## NOTE: The following should raise a Tryouts::TooManyArgs error b/c dreams takes 1 arg
44
+ #
45
+ #dream :class, 2 do
46
+ # Symbol
47
+ #end
48
+ #drill "dream with a format argument and a block" do
49
+ # :muggsy
50
+ #end
30
51
  #
31
- ##dream :class, 2 do
32
- ## Symbol
33
- ##end
34
- ##drill "dream with a format argument and a block" do
35
- ## :muggsy
36
- ##end
37
-
38
- xdrill "this drill will fail b/c it has no dream", :muggsy
52
+ #drill "this drill will fail b/c it has no dream", :muggsy
39
53
 
40
54
  end
@@ -8,7 +8,7 @@ command :mockout, MOCKOUT_PATH
8
8
  tryout "Mockouts", :cli do
9
9
 
10
10
  # This fails. Rye problem?
11
- dream :class, Array
11
+ dream :class, Rye::Rap
12
12
  dream []
13
13
  drill "No args"
14
14
 
data/tryouts.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  @spec = Gem::Specification.new do |s|
2
2
  s.name = "tryouts"
3
3
  s.rubyforge_project = "tryouts"
4
- s.version = "0.8.1"
4
+ s.version = "0.8.2"
5
5
  s.summary = "Tryouts is a high-level testing library (DSL) for your Ruby codes and command-line applications."
6
6
  s.description = s.summary
7
7
  s.author = "Delano Mandelbaum"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tryouts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-15 00:00:00 -04:00
12
+ date: 2009-07-19 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency