tryouts 0.8.3 → 0.8.4
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 +9 -1
- data/README.rdoc +30 -21
- data/bin/sergeant +1 -2
- data/lib/tryouts/tryout.rb +26 -12
- data/lib/tryouts.rb +2 -1
- data/tryouts/14_set_tryouts.rb +26 -0
- data/tryouts.gemspec +3 -1
- metadata +13 -2
data/CHANGES.txt
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
TRYOUTS, CHANGES
|
2
2
|
|
3
3
|
|
4
|
+
#### 0.8.4 (2009-07-20) ###############################
|
5
|
+
|
6
|
+
* CHANGE: "setup" and "clean" blocks now run in the same DrillContext
|
7
|
+
instance as drills (so instance variables are now shared)
|
8
|
+
* CHANGE: Non-fatal errors are now displayed only in verbose mode.
|
9
|
+
* ADDED: "set" keyword inside tryout definitions.
|
10
|
+
* ADDED: New dependency: attic
|
11
|
+
|
12
|
+
|
4
13
|
#### 0.8.3 (2009-07-19) ###############################
|
5
14
|
|
6
15
|
* FIXED: Updated gemspec
|
7
16
|
|
8
|
-
|
9
17
|
#### 0.8.2 (2009-07-19) ###############################
|
10
18
|
|
11
19
|
* CHANGE: Moved Drill and Reality to separate files.
|
data/README.rdoc
CHANGED
@@ -32,37 +32,51 @@ The examples below are a complete overview of Tryouts syntax.
|
|
32
32
|
library :gibbler, "../path/to/gibbler/lib"
|
33
33
|
|
34
34
|
tryouts "Common Usage", :api do
|
35
|
-
|
35
|
+
|
36
|
+
# Define variables available only within
|
37
|
+
# in the current tryout definition.
|
38
|
+
set :local_variable, 3
|
39
|
+
|
40
|
+
setup do
|
41
|
+
# do stuff before all drills
|
42
|
+
end
|
43
|
+
|
44
|
+
clean do
|
45
|
+
# do stuff after all drills
|
46
|
+
end
|
47
|
+
|
36
48
|
# This drill block should return 3.
|
37
|
-
drill "Maths R Us",
|
49
|
+
drill "Maths R Us", local_variable do
|
38
50
|
12 / 4
|
39
51
|
end
|
40
|
-
|
52
|
+
|
41
53
|
# You can specify a method to execute
|
42
|
-
# on the return value of the drill block.
|
54
|
+
# on the return value of the drill block.
|
43
55
|
drill "We want a symbol", :class, Symbol do
|
44
|
-
|
56
|
+
Class.methods.first
|
45
57
|
end
|
46
|
-
|
58
|
+
|
47
59
|
# Dreams can also be specified explicitly which is
|
48
60
|
# important b/c it's possible to specify multiple.
|
49
61
|
dream :class, Array
|
50
|
-
dream [
|
62
|
+
dream ['b', 'c', 'd']
|
51
63
|
drill "Should return a list of 3" do
|
52
|
-
|
64
|
+
letters = 'a'..'z'
|
65
|
+
letters.to_a[1..local_variable]
|
53
66
|
end
|
54
|
-
|
67
|
+
|
55
68
|
# Drills can pass based on an exception too.
|
56
69
|
dream :exception, NameError
|
57
70
|
drill "Something failed" do
|
58
71
|
raise NameError
|
59
72
|
end
|
60
|
-
|
61
|
-
# We can even put simple drills on a single line.
|
73
|
+
|
74
|
+
# We can even put simple drills on a single line.
|
62
75
|
drill 'Small, fast, and furious', 'Muggsy Bogues', :match, /Mug+sy Bogu?es/
|
63
|
-
|
76
|
+
|
64
77
|
end
|
65
78
|
|
79
|
+
|
66
80
|
=== Testing Command-Line Applications (:cli)
|
67
81
|
|
68
82
|
You can execute drills on command-line applications.
|
@@ -187,19 +201,14 @@ http://delano.github.com/tryouts/screens/tryouts-0.8-benchmark.png
|
|
187
201
|
|
188
202
|
== News
|
189
203
|
|
190
|
-
=== 2009-07-
|
191
|
-
|
192
|
-
Support for testing command-line applications has been re-introduced in 0.8. See example code further down in this README.
|
204
|
+
=== 2009-07-20: New DSL keyword "set"
|
193
205
|
|
194
|
-
|
206
|
+
The "set" keyword has been introduced in 0.8.4 for defining variables available only to the Tryout definition they were declared in. See Example 1.
|
195
207
|
|
196
|
-
|
197
|
-
|
198
|
-
* <tt>dream :method, 'Expected value'</tt>
|
208
|
+
=== 2009-07-01: Drills for command-line applications
|
199
209
|
|
200
|
-
|
210
|
+
Support for testing command-line applications has been re-introduced in 0.8. See example code further down in this README.
|
201
211
|
|
202
|
-
* <tt>drill 'test name', 'return value', :class, String</tt>
|
203
212
|
|
204
213
|
|
205
214
|
== BETA Notice
|
data/bin/sergeant
CHANGED
@@ -3,8 +3,7 @@
|
|
3
3
|
TRYOUTS_HOME = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
4
4
|
|
5
5
|
$:.unshift File.join(TRYOUTS_HOME, 'lib')
|
6
|
-
|
7
|
-
local_libs = %w{tryouts net-scp amazon-ec2 aws-s3 caesars drydock rye storable sysinfo annoy}
|
6
|
+
local_libs = %w{tryouts drydock rye storable sysinfo attic}
|
8
7
|
local_libs.each { |dir| $:.unshift File.join(TRYOUTS_HOME, '..', dir, 'lib') }
|
9
8
|
|
10
9
|
require 'drydock'
|
data/lib/tryouts/tryout.rb
CHANGED
@@ -30,13 +30,16 @@ class Tryouts
|
|
30
30
|
# A Hash of Dream objects for this Tryout. The keys are drill names.
|
31
31
|
attr_reader :dream_catcher
|
32
32
|
|
33
|
+
# The instance of Drill::Context in which the drills will run in.
|
34
|
+
attr_reader :drill_context
|
33
35
|
|
34
36
|
def initialize(name, dtype, command=nil, *args)
|
35
37
|
raise "Must supply command for dtype :cli" if dtype == :cli && command.nil?
|
36
38
|
raise "#{dtype} is not a valid drill type" if !Drill.valid_dtype?(dtype)
|
37
39
|
@name, @dtype, @command = name, dtype, command
|
38
|
-
@drills, @dream_catcher = [], []
|
40
|
+
@drills, @dream_catcher, @locals = [], [], {}
|
39
41
|
@passed, @failed, @skipped = 0, 0, 0
|
42
|
+
@drill_context = DrillContext.new
|
40
43
|
end
|
41
44
|
|
42
45
|
## --------------------------------------- EXTERNAL API -----
|
@@ -54,11 +57,11 @@ class Tryouts
|
|
54
57
|
|
55
58
|
# Execute all Drill objects
|
56
59
|
def run
|
57
|
-
|
60
|
+
@drill_context.instance_eval &setup if setup.is_a?(Proc)
|
58
61
|
puts "\n %s ".bright % @name unless Tryouts.verbose < 0
|
59
62
|
@drills.each do |drill|
|
60
63
|
print ' %-69s ' % "\"#{drill.name}\"" unless Tryouts.verbose < 0
|
61
|
-
drill.run
|
64
|
+
drill.run @drill_context
|
62
65
|
if drill.skip?
|
63
66
|
@skipped += 1
|
64
67
|
elsif drill.success?
|
@@ -69,7 +72,7 @@ class Tryouts
|
|
69
72
|
puts drill.flag # PASS, FAIL, SKIP
|
70
73
|
puts drill.info if Tryouts.verbose > 0 && !drill.skip?
|
71
74
|
end
|
72
|
-
|
75
|
+
@drill_context.instance_eval &clean if clean.is_a?(Proc)
|
73
76
|
end
|
74
77
|
|
75
78
|
# Prints error output. If there are no errors, it prints nothing.
|
@@ -81,13 +84,15 @@ class Tryouts
|
|
81
84
|
puts $/, ' ' << title.color(:red).att(:reverse)
|
82
85
|
puts drill.report
|
83
86
|
end
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
87
|
+
if Tryouts.verbose > 0
|
88
|
+
# Print errors for successful runs too
|
89
|
+
success = @drills.select { |d| !d.skip? && d.success? }
|
90
|
+
success.each do |drill,index|
|
91
|
+
next unless drill.has_error?
|
92
|
+
title = ' Non-fatal error in: %-69s ' % ["\"#{drill.name}\""]
|
93
|
+
puts $/, ' ' << title.color(:red)
|
94
|
+
puts drill.report
|
95
|
+
end
|
91
96
|
end
|
92
97
|
end
|
93
98
|
|
@@ -109,7 +114,16 @@ class Tryouts
|
|
109
114
|
d
|
110
115
|
end
|
111
116
|
|
112
|
-
##
|
117
|
+
## ------------------------------------------------ DSL -----
|
118
|
+
|
119
|
+
# Define a method named +key+ for only the current instances of
|
120
|
+
# Tryout and DrillContext so it's not available anywhere else.
|
121
|
+
# The methods return +value+.
|
122
|
+
def set(key, value)
|
123
|
+
self.meta_def( key ) { value }
|
124
|
+
@drill_context.meta_def( key ) { value }
|
125
|
+
value
|
126
|
+
end
|
113
127
|
|
114
128
|
# A block to executed one time _before_ starting the drills
|
115
129
|
def setup(&block)
|
data/lib/tryouts.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
|
2
2
|
require 'time'
|
3
|
+
require 'attic'
|
3
4
|
require 'sysinfo'
|
4
5
|
require 'digest/sha1'
|
5
6
|
require 'ostruct'
|
@@ -45,7 +46,7 @@ class Tryouts
|
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
|
-
VERSION = "0.8.
|
49
|
+
VERSION = "0.8.4"
|
49
50
|
|
50
51
|
require 'tryouts/mixins'
|
51
52
|
require 'tryouts/tryout'
|
@@ -0,0 +1,26 @@
|
|
1
|
+
library :tryouts, 'lib'
|
2
|
+
group "Syntax"
|
3
|
+
|
4
|
+
tryouts "Set (initial)" do
|
5
|
+
set :key1, 9000
|
6
|
+
drill "set values are available outside drill/dream blocks", key1 do
|
7
|
+
9000
|
8
|
+
end
|
9
|
+
drill "set values are available inside drill/dream blocks", 9000 do
|
10
|
+
key1
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
tryouts "Set (double check)" do
|
15
|
+
|
16
|
+
dream :exception, NameError
|
17
|
+
drill "set values are not available from other tryouts inside blocks" do
|
18
|
+
key1
|
19
|
+
end
|
20
|
+
|
21
|
+
## NOTE: This drill will create a runtime error b/c key1 isn't defined here.
|
22
|
+
## dream key1
|
23
|
+
## drill "set values are not available from other tryouts outside blocks" do
|
24
|
+
## end
|
25
|
+
|
26
|
+
end
|
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.
|
4
|
+
s.version = "0.8.4"
|
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"
|
@@ -28,6 +28,7 @@
|
|
28
28
|
# = DEPENDENCIES =
|
29
29
|
# Add all gem dependencies
|
30
30
|
s.add_dependency 'rye'
|
31
|
+
s.add_dependency 'attic'
|
31
32
|
s.add_dependency 'drydock'
|
32
33
|
s.add_dependency 'sysinfo'
|
33
34
|
|
@@ -64,6 +65,7 @@
|
|
64
65
|
tryouts.gemspec
|
65
66
|
tryouts/01_mixins_tryouts.rb
|
66
67
|
tryouts/10_syntax_tryouts.rb
|
68
|
+
tryouts/14_set_tryouts.rb
|
67
69
|
tryouts/15_dreams_tryouts.rb
|
68
70
|
tryouts/20_cli_tryouts.rb
|
69
71
|
tryouts/30_benchmark_tryouts.rb
|
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.
|
4
|
+
version: 0.8.4
|
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-
|
12
|
+
date: 2009-07-20 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,6 +22,16 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: attic
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: drydock
|
27
37
|
type: :runtime
|
@@ -79,6 +89,7 @@ files:
|
|
79
89
|
- tryouts.gemspec
|
80
90
|
- tryouts/01_mixins_tryouts.rb
|
81
91
|
- tryouts/10_syntax_tryouts.rb
|
92
|
+
- tryouts/14_set_tryouts.rb
|
82
93
|
- tryouts/15_dreams_tryouts.rb
|
83
94
|
- tryouts/20_cli_tryouts.rb
|
84
95
|
- tryouts/30_benchmark_tryouts.rb
|