exemplor 2000.2.0 → 2010.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|