exemplor 2000.2.0 → 2010.0.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.
- data/.gitignore +1 -0
- data/TODO +5 -7
- data/VERSION +1 -1
- data/examples.rb +5 -5
- data/examples/an_error.rb +1 -10
- data/examples/assertion_failure.rb +5 -2
- data/examples/assertion_success.rb +6 -2
- data/examples/assertion_success_and_failure.rb +11 -4
- data/examples/check_parsing.rb +36 -12
- data/examples/check_with_disambiguation.rb +9 -3
- data/examples/checking_nil.rb +12 -4
- data/examples/dumping_classes.rb +9 -3
- data/examples/helpers.rb +3 -1
- data/examples/no_checks.rb +3 -1
- data/examples/no_checks_non_string.rb +4 -2
- data/examples/oneliner.rb +3 -1
- data/examples/with_checks.rb +12 -4
- data/examples/with_setup.rb +12 -4
- data/lib/exemplor.rb +179 -113
- metadata +2 -3
- data/exemplor.gemspec +0 -80
data/.gitignore
CHANGED
data/TODO
CHANGED
@@ -1,9 +1,7 @@
|
|
1
|
+
* add symbol to_proc and tap
|
1
2
|
* exemplor executable that can run multiple example files
|
2
|
-
* #teardown
|
3
|
-
* Use fancy unicode characters for tests status:
|
4
3
|
* TextMate bundle that does nice cmd+r output
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# (e) = ☠
|
4
|
+
* smarter macros for examples.rb - this could be clearer
|
5
|
+
* discuss example grouping in doc (philosophy)
|
6
|
+
|
7
|
+
* test requiring exemplor does *not* trigger at exit
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2010.0.0
|
data/examples.rb
CHANGED
@@ -30,11 +30,11 @@ eg "version matches file" do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
eg "errors are caught and nicely displayed" do
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
Check(
|
33
|
+
result = YAML.load(run_example(:an_error))[0]
|
34
|
+
Check(result['status']).is('error')
|
35
|
+
Check(result['result']['class']).is('RuntimeError')
|
36
|
+
Check(result['result']['message']).is('boom!')
|
37
|
+
Check(result['result']['backtrace'][0]).is('examples/an_error.rb:4')
|
38
38
|
end
|
39
39
|
|
40
40
|
eg { check_output_matches_expected_for :no_checks }
|
data/examples/an_error.rb
CHANGED
@@ -10,9 +10,16 @@ end
|
|
10
10
|
|
11
11
|
__END__
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
- name: Some successes, then a fail
|
14
|
+
status: failure
|
15
|
+
result:
|
16
|
+
- name: list.first
|
17
|
+
status: success
|
18
|
+
result: 1
|
19
|
+
- name: list[1]
|
20
|
+
status: success
|
21
|
+
result: 2
|
22
|
+
- name: list.last
|
23
|
+
status: failure
|
17
24
|
expected: 1
|
18
25
|
actual: 3
|
data/examples/check_parsing.rb
CHANGED
@@ -30,15 +30,39 @@ end
|
|
30
30
|
|
31
31
|
__END__
|
32
32
|
|
33
|
-
|
34
|
-
(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
(
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
33
|
+
- name: plain call
|
34
|
+
status: info (with checks)
|
35
|
+
result:
|
36
|
+
- name: foo
|
37
|
+
status: info
|
38
|
+
result: bar
|
39
|
+
- name: whitespace after the call (seriously)
|
40
|
+
status: info (with checks)
|
41
|
+
result:
|
42
|
+
- name: foo
|
43
|
+
status: info
|
44
|
+
result: bar
|
45
|
+
- name: comment after the call
|
46
|
+
status: info (with checks)
|
47
|
+
result:
|
48
|
+
- name: foo
|
49
|
+
status: info
|
50
|
+
result: bar
|
51
|
+
- name: with brackets
|
52
|
+
status: info (with checks)
|
53
|
+
result:
|
54
|
+
- name: String.new('test')
|
55
|
+
status: info
|
56
|
+
result: test
|
57
|
+
- name: with brackets and is
|
58
|
+
status: success
|
59
|
+
result:
|
60
|
+
- name: String.new('test')
|
61
|
+
status: success
|
62
|
+
result: test
|
63
|
+
- name: with disambiguation
|
64
|
+
status: success
|
65
|
+
result:
|
66
|
+
- name: foo bar
|
67
|
+
status: success
|
68
|
+
result: bar
|
@@ -9,6 +9,12 @@ end
|
|
9
9
|
|
10
10
|
__END__
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
- name: Array appending
|
13
|
+
status: info (with checks)
|
14
|
+
result:
|
15
|
+
- name: list.last before append
|
16
|
+
status: info
|
17
|
+
result: 42
|
18
|
+
- name: list.last after append
|
19
|
+
status: info
|
20
|
+
result: 2
|
data/examples/checking_nil.rb
CHANGED
@@ -10,7 +10,15 @@ end
|
|
10
10
|
|
11
11
|
__END__
|
12
12
|
|
13
|
-
|
14
|
-
(
|
15
|
-
|
16
|
-
|
13
|
+
- name: checking nil works correctly
|
14
|
+
status: info (with checks)
|
15
|
+
result:
|
16
|
+
- name: nil
|
17
|
+
status: info
|
18
|
+
result:
|
19
|
+
- name: asserting for nil works correctly
|
20
|
+
status: success
|
21
|
+
result:
|
22
|
+
- name: nil
|
23
|
+
status: success
|
24
|
+
result:
|
data/examples/dumping_classes.rb
CHANGED
@@ -10,6 +10,12 @@ end
|
|
10
10
|
|
11
11
|
__END__
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
- name: class name is printed when example returns a class
|
14
|
+
status: info (no checks)
|
15
|
+
result: Object
|
16
|
+
- name: class name is printed when check is given a class
|
17
|
+
status: info (with checks)
|
18
|
+
result:
|
19
|
+
- name: Object
|
20
|
+
status: info
|
21
|
+
result: Object
|
data/examples/helpers.rb
CHANGED
data/examples/no_checks.rb
CHANGED
data/examples/oneliner.rb
CHANGED
data/examples/with_checks.rb
CHANGED
@@ -9,7 +9,15 @@ end
|
|
9
9
|
|
10
10
|
__END__
|
11
11
|
|
12
|
-
|
13
|
-
(
|
14
|
-
|
15
|
-
|
12
|
+
- name: Accessing different parts of an array
|
13
|
+
status: info (with checks)
|
14
|
+
result:
|
15
|
+
- name: list.first
|
16
|
+
status: info
|
17
|
+
result: 1
|
18
|
+
- name: list[1]
|
19
|
+
status: info
|
20
|
+
result: 2
|
21
|
+
- name: list.last
|
22
|
+
status: info
|
23
|
+
result: 3
|
data/examples/with_setup.rb
CHANGED
@@ -13,7 +13,15 @@ end
|
|
13
13
|
|
14
14
|
__END__
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
- name: Modified env
|
17
|
+
status: success
|
18
|
+
result:
|
19
|
+
- name: "@str"
|
20
|
+
status: success
|
21
|
+
result: foo bar
|
22
|
+
- name: Unmodified env
|
23
|
+
status: success
|
24
|
+
result:
|
25
|
+
- name: "@str"
|
26
|
+
status: success
|
27
|
+
result: foo
|
data/lib/exemplor.rb
CHANGED
@@ -1,12 +1,28 @@
|
|
1
1
|
require 'orderedhash'
|
2
2
|
require 'yaml'
|
3
3
|
|
4
|
+
def OrderedHash(&blk)
|
5
|
+
ohsh = OrderedHash.new
|
6
|
+
blk.call(ohsh)
|
7
|
+
ohsh
|
8
|
+
end
|
9
|
+
|
10
|
+
def YAML.without_header(obj)
|
11
|
+
obj.to_yaml.match(/^--- \n?/).post_match
|
12
|
+
end
|
13
|
+
|
14
|
+
class String
|
15
|
+
def indent
|
16
|
+
self.split("\n").map { |line| ' ' + line }.join("\n")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
4
20
|
module Exemplor
|
5
21
|
|
6
22
|
def self.version() File.read(__FILE__.sub('lib/exemplor.rb','VERSION')) end
|
7
23
|
|
8
24
|
class ExampleDefinitionError < StandardError ; end
|
9
|
-
|
25
|
+
|
10
26
|
class Check
|
11
27
|
|
12
28
|
attr_reader :expectation, :value
|
@@ -48,7 +64,72 @@ module Exemplor
|
|
48
64
|
|
49
65
|
end
|
50
66
|
|
51
|
-
class
|
67
|
+
class ResultPrinter
|
68
|
+
|
69
|
+
attr_reader :name,:status,:result,:stderr
|
70
|
+
|
71
|
+
def initialize(name,status,result,stderr)
|
72
|
+
@name,@status,@result,@stderr = name,status,result,stderr
|
73
|
+
end
|
74
|
+
|
75
|
+
def failure?
|
76
|
+
[:error,:failure].include?(self.status)
|
77
|
+
end
|
78
|
+
|
79
|
+
def yaml
|
80
|
+
hsh = OrderedHash do |o|
|
81
|
+
o['name'] = self.name
|
82
|
+
o['status'] = case status = self.status
|
83
|
+
when :info : 'info (no checks)'
|
84
|
+
when :infos : 'info (with checks)'
|
85
|
+
else ; status.to_s
|
86
|
+
end
|
87
|
+
o['result'] = self.result
|
88
|
+
end
|
89
|
+
YAML.without_header([hsh])# prints an array
|
90
|
+
end
|
91
|
+
|
92
|
+
def fancy
|
93
|
+
# •∙ are inverted in my terminal font (Incosolata) so I'm swapping them
|
94
|
+
require 'term/ansicolor'
|
95
|
+
case status
|
96
|
+
when :info : blue format_info("• #{name}", result)
|
97
|
+
when :infos
|
98
|
+
formatted_result = result.map do |r|
|
99
|
+
format_info("• #{r['name']}", r['result']).rstrip
|
100
|
+
end.join("\n")
|
101
|
+
blue("∙ #{name}\n#{formatted_result.indent}")
|
102
|
+
when :success
|
103
|
+
green("✓ #{name}")
|
104
|
+
when :failure
|
105
|
+
# sooo hacky
|
106
|
+
failure = result.find { |r| r['status'] == 'failure' }
|
107
|
+
out = failure.dup
|
108
|
+
out.delete('status')
|
109
|
+
out.delete('name')
|
110
|
+
color(:red, "✗ #{name} - #{failure['name']}\n#{YAML.without_header(out).indent}")
|
111
|
+
when :error
|
112
|
+
class_and_message = "#{result['class']} - #{result['message']}"
|
113
|
+
backtrace = result['backtrace'].join("\n")
|
114
|
+
color(:red, "☠ #{name}\n#{class_and_message.indent}\n#{backtrace.indent}")
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def blue(str) color(:blue,str) end
|
119
|
+
def green(str) color(:green,str) end
|
120
|
+
|
121
|
+
def color(color, str)
|
122
|
+
[Term::ANSIColor.send(color), str, Term::ANSIColor.reset].join
|
123
|
+
end
|
124
|
+
|
125
|
+
# whatahack
|
126
|
+
def format_info(str, result)
|
127
|
+
YAML.without_header({'FANCY' => result}).sub('FANCY', str)
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
class ExampleEnv
|
52
133
|
|
53
134
|
class << self
|
54
135
|
|
@@ -57,6 +138,66 @@ module Exemplor
|
|
57
138
|
|
58
139
|
def setup(&blk) self.setup_block = blk end
|
59
140
|
|
141
|
+
# runs the block in the example environment, returns triple:
|
142
|
+
# [status, result, stderr]
|
143
|
+
def run(&code)
|
144
|
+
env = self.new
|
145
|
+
stderr = StringIO.new
|
146
|
+
status, result = begin
|
147
|
+
real_stderr = $stderr ; $stderr = stderr # swap stderr
|
148
|
+
|
149
|
+
env.instance_eval(&self.setup_block) if self.setup_block
|
150
|
+
value = env.instance_eval(&code)
|
151
|
+
result = env._status == :info ?
|
152
|
+
render_value(value) : render_checks(env._checks)
|
153
|
+
[env._status, result]
|
154
|
+
|
155
|
+
rescue Object => error
|
156
|
+
[:error, render_error(error)]
|
157
|
+
ensure
|
158
|
+
$stderr = real_stderr # swap stderr back
|
159
|
+
end
|
160
|
+
[status, result, stderr.rewind && stderr.read]
|
161
|
+
end
|
162
|
+
|
163
|
+
# -- these "render" methods could probably be factored away
|
164
|
+
|
165
|
+
# yaml doesn't want to print a class
|
166
|
+
def render_value(value)
|
167
|
+
value.kind_of?(Class) ? value.inspect : value
|
168
|
+
end
|
169
|
+
|
170
|
+
def render_checks(checks)
|
171
|
+
failure = nil
|
172
|
+
out = []
|
173
|
+
checks.each do |check|
|
174
|
+
failure = check if check.failure?
|
175
|
+
break if failure
|
176
|
+
out << OrderedHash do |o|
|
177
|
+
o['name'] = check.name
|
178
|
+
o['status'] = check.status.to_s
|
179
|
+
o['result'] = render_value check.value
|
180
|
+
end
|
181
|
+
end
|
182
|
+
if failure
|
183
|
+
out << OrderedHash do |o|
|
184
|
+
o['name'] = failure.name
|
185
|
+
o['status'] = failure.status.to_s
|
186
|
+
o['expected'] = failure.expectation
|
187
|
+
o['actual'] = render_value failure.value
|
188
|
+
end
|
189
|
+
end
|
190
|
+
out
|
191
|
+
end
|
192
|
+
|
193
|
+
def render_error(error)
|
194
|
+
OrderedHash do |o|
|
195
|
+
o['class'] = error.class.name
|
196
|
+
o['message'] = error.message
|
197
|
+
o['backtrace'] = error.backtrace
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
60
201
|
end
|
61
202
|
|
62
203
|
attr_accessor :_checks
|
@@ -74,12 +215,17 @@ module Exemplor
|
|
74
215
|
check
|
75
216
|
end
|
76
217
|
|
218
|
+
def _status
|
219
|
+
(:info if _checks.empty?) ||
|
220
|
+
(:infos if _checks.all? { |c| c.info? }) ||
|
221
|
+
(:success if _checks.all? { |c| c.success? }) ||
|
222
|
+
(:failure if _checks.any? { |c| c.failure? })
|
223
|
+
end
|
224
|
+
|
77
225
|
end
|
78
226
|
|
79
227
|
class Examples
|
80
228
|
|
81
|
-
attr_writer :setup_block
|
82
|
-
|
83
229
|
def initialize
|
84
230
|
@examples = OrderedHash.new
|
85
231
|
end
|
@@ -94,11 +240,10 @@ module Exemplor
|
|
94
240
|
patterns = Regexp.new(patterns.join('|'))
|
95
241
|
examples_to_run = @examples.select { |name,_| name =~ patterns }
|
96
242
|
return 0 if examples_to_run.empty?
|
97
|
-
examples_to_run.each do |name,
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
fails +=1 if [:error,:failure].include?(status)
|
243
|
+
examples_to_run.each do |name, code|
|
244
|
+
result = ResultPrinter.new(name, *ExampleEnv.run(&code))
|
245
|
+
fails +=1 if result.failure?
|
246
|
+
puts($stdout.tty? ? result.fancy : result.yaml)
|
102
247
|
end
|
103
248
|
(fails.to_f/examples_to_run.size)*100
|
104
249
|
end
|
@@ -106,103 +251,7 @@ module Exemplor
|
|
106
251
|
def list(patterns)
|
107
252
|
patterns = Regexp.new(patterns.join('|'))
|
108
253
|
list = @examples.keys.select { |name| name =~ patterns }
|
109
|
-
|
110
|
-
end
|
111
|
-
|
112
|
-
def print_yaml(obj)
|
113
|
-
out = obj.to_yaml.match(/^--- \n/).post_match
|
114
|
-
out = colorize out if $stdout.tty?
|
115
|
-
print(out)
|
116
|
-
end
|
117
|
-
|
118
|
-
def print_stderr(stderr)
|
119
|
-
unless stderr.empty?
|
120
|
-
$stdout.tty? ? $stdout.puts("#{Term::ANSIColor.reset}(STDERR):\n#{stderr}") : $stderr.puts(stderr)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# hacky
|
125
|
-
def colorize(out)
|
126
|
-
require 'term/ansicolor'
|
127
|
-
out.split("\n").map do |line|
|
128
|
-
case line
|
129
|
-
when /^(?:\s{2})?(\(s\))/
|
130
|
-
start_color(line, :green)
|
131
|
-
when /^(?:\s{2})?(\(f\))/
|
132
|
-
start_color(line, :red)
|
133
|
-
when /^(?:\s{2})?(\(e\))/
|
134
|
-
start_color(line, :red)
|
135
|
-
when /^(?:\s{2})?(\(i\))/i
|
136
|
-
start_color(line, :blue)
|
137
|
-
else
|
138
|
-
line
|
139
|
-
end
|
140
|
-
end.join("\n") + "\n#{Term::ANSIColor.reset}"
|
141
|
-
end
|
142
|
-
|
143
|
-
def start_color(line, color)
|
144
|
-
"#{Term::ANSIColor.reset}#{Term::ANSIColor.send(color)}#{line}"
|
145
|
-
end
|
146
|
-
|
147
|
-
def run_example(code)
|
148
|
-
status = :info
|
149
|
-
env = Example.new
|
150
|
-
stderr = StringIO.new
|
151
|
-
out = begin
|
152
|
-
real_stderr = $stderr
|
153
|
-
$stderr = stderr
|
154
|
-
|
155
|
-
env.instance_eval(&Example.setup_block) if Example.setup_block
|
156
|
-
value = env.instance_eval(&code)
|
157
|
-
if env._checks.empty?
|
158
|
-
render_value value
|
159
|
-
else
|
160
|
-
status = :infos if env._checks.all? { |check| check.info? }
|
161
|
-
status = :success if env._checks.all? { |check| check.success? }
|
162
|
-
status = :failure if env._checks.any? { |check| check.failure? }
|
163
|
-
render_checks(env._checks)
|
164
|
-
end
|
165
|
-
rescue Object => error
|
166
|
-
status = :error
|
167
|
-
render_error(error)
|
168
|
-
ensure
|
169
|
-
$stderr = real_stderr
|
170
|
-
end
|
171
|
-
[status, out, stderr.rewind && stderr.read]
|
172
|
-
end
|
173
|
-
|
174
|
-
def render_checks(checks)
|
175
|
-
failure = nil
|
176
|
-
out = OrderedHash.new
|
177
|
-
checks.each do |check|
|
178
|
-
failure = check if check.failure?
|
179
|
-
break if failure
|
180
|
-
|
181
|
-
out["#{status_icon(check.status)} #{check.name}"] = render_value check.value
|
182
|
-
end
|
183
|
-
if failure
|
184
|
-
fail_out = out["#{status_icon(failure.status)} #{failure.name}"] = OrderedHash.new
|
185
|
-
fail_out['expected'] = failure.expectation
|
186
|
-
fail_out['actual'] = render_value failure.value
|
187
|
-
end
|
188
|
-
out
|
189
|
-
end
|
190
|
-
|
191
|
-
def render_error(error)
|
192
|
-
out = OrderedHash.new
|
193
|
-
out['class'] = error.class.name
|
194
|
-
out['message'] = error.message
|
195
|
-
out['backtrace'] = error.backtrace
|
196
|
-
out
|
197
|
-
end
|
198
|
-
|
199
|
-
def status_icon(status)
|
200
|
-
icon = status == :infos ? '(I)' : "(#{status.to_s.slice(0,1)})"
|
201
|
-
end
|
202
|
-
|
203
|
-
# yaml doesn't want to print a class
|
204
|
-
def render_value(value)
|
205
|
-
value.kind_of?(Class) ? value.inspect : value
|
254
|
+
print YAML.without_header(list)
|
206
255
|
end
|
207
256
|
|
208
257
|
end
|
@@ -213,12 +262,26 @@ module Exemplor
|
|
213
262
|
@examples ||= Examples.new
|
214
263
|
end
|
215
264
|
|
265
|
+
def extract_example_file(caller_trace)
|
266
|
+
@example_file ||= caller_trace.first.split(":").first
|
267
|
+
end
|
268
|
+
|
269
|
+
# attr_reader :example_file
|
270
|
+
|
271
|
+
def run_directly?
|
272
|
+
@example_file == $0
|
273
|
+
end
|
274
|
+
|
216
275
|
end
|
217
276
|
|
218
277
|
end
|
219
278
|
|
279
|
+
# Defines an example. After definition, an example is an entry in the
|
280
|
+
# Examples.examples ordered hash, the key is the name, the body is the example
|
281
|
+
# code
|
220
282
|
def eg(name = nil, &example)
|
221
|
-
|
283
|
+
Exemplor.extract_example_file caller # only runs once
|
284
|
+
return Exemplor::ExampleEnv if name.nil? && example.nil?
|
222
285
|
if name.nil?
|
223
286
|
file, line_number = caller.first.match(/^(.+):(\d+)/).captures
|
224
287
|
line = File.readlines(file)[line_number.to_i - 1].strip
|
@@ -228,11 +291,14 @@ def eg(name = nil, &example)
|
|
228
291
|
Exemplor.examples.add(name, &example)
|
229
292
|
end
|
230
293
|
|
294
|
+
# Parses the command line args and either runs or lists the examples.
|
231
295
|
at_exit do
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
296
|
+
if Exemplor.run_directly?
|
297
|
+
args = ARGV.dup
|
298
|
+
if args.delete('--list') || args.delete('-l')
|
299
|
+
Exemplor.examples.list(args)
|
300
|
+
else
|
301
|
+
exit Exemplor.examples.run(args)
|
302
|
+
end
|
237
303
|
end
|
238
|
-
end
|
304
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exemplor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2010.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Myles Byrne
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-25 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -62,7 +62,6 @@ files:
|
|
62
62
|
- examples/ten_percent_failures.rb
|
63
63
|
- examples/with_checks.rb
|
64
64
|
- examples/with_setup.rb
|
65
|
-
- exemplor.gemspec
|
66
65
|
- lib/exemplor.rb
|
67
66
|
has_rdoc: true
|
68
67
|
homepage: http://github.com/quackingduck/exemplor
|
data/exemplor.gemspec
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{exemplor}
|
8
|
-
s.version = "2000.2.0"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["Myles Byrne"]
|
12
|
-
s.date = %q{2009-11-03}
|
13
|
-
s.email = %q{myles@myles.id.au}
|
14
|
-
s.extra_rdoc_files = [
|
15
|
-
"README"
|
16
|
-
]
|
17
|
-
s.files = [
|
18
|
-
".gitignore",
|
19
|
-
"README",
|
20
|
-
"Rakefile",
|
21
|
-
"TODO",
|
22
|
-
"VERSION",
|
23
|
-
"examples.rb",
|
24
|
-
"examples/an_error.rb",
|
25
|
-
"examples/assertion_failure.rb",
|
26
|
-
"examples/assertion_success.rb",
|
27
|
-
"examples/assertion_success_and_failure.rb",
|
28
|
-
"examples/check_parsing.rb",
|
29
|
-
"examples/check_with_disambiguation.rb",
|
30
|
-
"examples/checking_nil.rb",
|
31
|
-
"examples/dumping_classes.rb",
|
32
|
-
"examples/helpers.rb",
|
33
|
-
"examples/no_checks.rb",
|
34
|
-
"examples/no_checks_non_string.rb",
|
35
|
-
"examples/oneliner.rb",
|
36
|
-
"examples/ten_percent_failures.rb",
|
37
|
-
"examples/with_checks.rb",
|
38
|
-
"examples/with_setup.rb",
|
39
|
-
"exemplor.gemspec",
|
40
|
-
"lib/exemplor.rb"
|
41
|
-
]
|
42
|
-
s.homepage = %q{http://github.com/quackingduck/exemplor}
|
43
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
44
|
-
s.require_paths = ["lib"]
|
45
|
-
s.rubygems_version = %q{1.3.5}
|
46
|
-
s.summary = %q{A light-weight, low-fi way to provide executable usage examples of your code.}
|
47
|
-
s.test_files = [
|
48
|
-
"examples/an_error.rb",
|
49
|
-
"examples/assertion_failure.rb",
|
50
|
-
"examples/assertion_success.rb",
|
51
|
-
"examples/assertion_success_and_failure.rb",
|
52
|
-
"examples/check_parsing.rb",
|
53
|
-
"examples/check_with_disambiguation.rb",
|
54
|
-
"examples/checking_nil.rb",
|
55
|
-
"examples/dumping_classes.rb",
|
56
|
-
"examples/helpers.rb",
|
57
|
-
"examples/no_checks.rb",
|
58
|
-
"examples/no_checks_non_string.rb",
|
59
|
-
"examples/oneliner.rb",
|
60
|
-
"examples/ten_percent_failures.rb",
|
61
|
-
"examples/with_checks.rb",
|
62
|
-
"examples/with_setup.rb"
|
63
|
-
]
|
64
|
-
|
65
|
-
if s.respond_to? :specification_version then
|
66
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
67
|
-
s.specification_version = 3
|
68
|
-
|
69
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
70
|
-
s.add_runtime_dependency(%q<orderedhash>, [">= 0.0.6"])
|
71
|
-
s.add_runtime_dependency(%q<term-ansicolor>, [">= 1.0.3"])
|
72
|
-
else
|
73
|
-
s.add_dependency(%q<orderedhash>, [">= 0.0.6"])
|
74
|
-
s.add_dependency(%q<term-ansicolor>, [">= 1.0.3"])
|
75
|
-
end
|
76
|
-
else
|
77
|
-
s.add_dependency(%q<orderedhash>, [">= 0.0.6"])
|
78
|
-
s.add_dependency(%q<term-ansicolor>, [">= 1.0.3"])
|
79
|
-
end
|
80
|
-
end
|