activesambaldap 0.0.6 → 0.0.7
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/NEWS.en +20 -18
- data/NEWS.ja +23 -21
- data/README.en +122 -95
- data/README.ja +125 -98
- data/Rakefile +29 -64
- data/bin/asl-groupadd +1 -1
- data/bin/asl-groupadd.help +1 -0
- data/bin/asl-groupdel +1 -1
- data/bin/asl-groupdel.help +1 -0
- data/bin/asl-groupmod +1 -1
- data/bin/asl-groupmod.help +1 -0
- data/bin/asl-groupshow +1 -1
- data/bin/asl-groupshow.help +1 -0
- data/bin/asl-passwd +1 -1
- data/bin/asl-passwd.help +1 -0
- data/bin/asl-populate +2 -2
- data/bin/asl-populate.help +1 -0
- data/bin/asl-purge +1 -1
- data/bin/asl-purge.help +1 -0
- data/bin/asl-samba-computeradd +1 -1
- data/bin/asl-samba-computeradd.help +1 -0
- data/bin/asl-samba-groupadd +1 -1
- data/bin/asl-samba-groupadd.help +1 -0
- data/bin/asl-samba-groupdel +1 -1
- data/bin/asl-samba-groupdel.help +1 -0
- data/bin/asl-samba-groupmod +1 -1
- data/bin/asl-samba-groupmod.help +1 -0
- data/bin/asl-samba-useradd +1 -1
- data/bin/asl-samba-useradd.help +1 -0
- data/bin/asl-samba-userdel +1 -1
- data/bin/asl-samba-userdel.help +1 -0
- data/bin/asl-samba-usermod +1 -1
- data/bin/asl-samba-usermod.help +1 -0
- data/bin/asl-useradd +1 -1
- data/bin/asl-useradd.help +6 -4
- data/bin/asl-userdel +1 -1
- data/bin/asl-userdel.help +1 -0
- data/bin/asl-usermod +1 -1
- data/bin/asl-usermod.help +2 -0
- data/bin/asl-usershow +1 -1
- data/bin/asl-usershow.help +1 -0
- data/data/locale/ja/LC_MESSAGES/active-samba-ldap.mo +0 -0
- data/lib/active_samba_ldap/version.rb +1 -1
- data/lib/active_samba_ldap.rb +1 -1
- data/po/ja/active-samba-ldap.po +5 -5
- data/rails/{plugin/active_samba_ldap/README → README} +0 -0
- data/rails/{plugin/active_samba_ldap/init.rb → init.rb} +1 -1
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/scaffold_active_samba_ldap_generator.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/computer.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/dc.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/group.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/idmap.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/ldap.yml +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/ou.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/samba_controller.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/samba_helper.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/samba_index.rhtml +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/samba_populate.rhtml +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/samba_purge.rhtml +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/unix_id_pool.rb +0 -0
- data/{rails/plugin/active_samba_ldap/generators → rails_generators}/scaffold_active_samba_ldap/templates/user.rb +0 -0
- data/test/asl-test-utils.rb +2 -2
- data/test/test_asl_usershow.rb +2 -2
- data/test/test_password.rb +2 -2
- data/test/test_user_home_directory.rb +2 -2
- data/test-unit/History.txt +76 -1
- data/test-unit/README.txt +32 -12
- data/test-unit/Rakefile +19 -1
- data/test-unit/TODO +5 -0
- data/test-unit/lib/test/unit/assertions.rb +515 -88
- data/test-unit/lib/test/unit/autorunner.rb +93 -14
- data/test-unit/lib/test/unit/collector/load.rb +1 -1
- data/test-unit/lib/test/unit/collector.rb +1 -1
- data/test-unit/lib/test/unit/color-scheme.rb +86 -0
- data/test-unit/lib/test/unit/color.rb +40 -5
- data/test-unit/lib/test/unit/diff.rb +14 -0
- data/test-unit/lib/test/unit/fixture.rb +7 -16
- data/test-unit/lib/test/unit/notification.rb +9 -0
- data/test-unit/lib/test/unit/omission.rb +14 -0
- data/test-unit/lib/test/unit/pending.rb +16 -0
- data/test-unit/lib/test/unit/priority.rb +38 -3
- data/test-unit/lib/test/unit/runner/console.rb +8 -2
- data/test-unit/lib/test/unit/testcase.rb +263 -12
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +58 -30
- data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
- data/test-unit/lib/test/unit/version.rb +1 -1
- data/test-unit/lib/test/unit.rb +62 -0
- data/test-unit/sample/test_user.rb +22 -0
- data/test-unit/test/collector/{test_descendant.rb → test-descendant.rb} +0 -0
- data/test-unit/test/collector/{test_load.rb → test-load.rb} +1 -1
- data/test-unit/test/{test_attribute.rb → test-attribute.rb} +0 -0
- data/test-unit/test/test-color-scheme.rb +56 -0
- data/test-unit/test/{test_color.rb → test-color.rb} +10 -0
- data/test-unit/test/{test_diff.rb → test-diff.rb} +0 -0
- data/test-unit/test/{test_emacs_runner.rb → test-emacs-runner.rb} +0 -0
- data/test-unit/test/test-fixture.rb +287 -0
- data/test-unit/test/{test_notification.rb → test-notification.rb} +4 -4
- data/test-unit/test/{test_omission.rb → test-omission.rb} +6 -6
- data/test-unit/test/{test_pending.rb → test-pending.rb} +12 -6
- data/test-unit/test/{test_priority.rb → test-priority.rb} +30 -0
- data/test-unit/test/{test_testcase.rb → test-testcase.rb} +100 -4
- data/test-unit/test/test_assertions.rb +462 -73
- data/test-unit/test/{testunit_test_util.rb → testunit-test-util.rb} +4 -2
- data/test-unit/test/ui/test_testrunmediator.rb +1 -1
- data/test-unit/test/util/test-method-owner-finder.rb +38 -0
- metadata +69 -79
- data/test-unit/test/test_fixture.rb +0 -275
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'test/unit'
|
1
|
+
require 'test/unit/color-scheme'
|
2
2
|
require 'optparse'
|
3
3
|
|
4
4
|
module Test
|
@@ -11,10 +11,24 @@ module Test
|
|
11
11
|
class << self
|
12
12
|
def register_runner(id, runner_builder=Proc.new)
|
13
13
|
RUNNERS[id] = runner_builder
|
14
|
+
RUNNERS[id.to_s] = runner_builder
|
15
|
+
end
|
16
|
+
|
17
|
+
def runner(id)
|
18
|
+
RUNNERS[id.to_s]
|
14
19
|
end
|
15
20
|
|
16
21
|
def register_collector(id, collector_builder=Proc.new)
|
17
22
|
COLLECTORS[id] = collector_builder
|
23
|
+
COLLECTORS[id.to_s] = collector_builder
|
24
|
+
end
|
25
|
+
|
26
|
+
def collector(id)
|
27
|
+
COLLECTORS[id.to_s]
|
28
|
+
end
|
29
|
+
|
30
|
+
def register_color_scheme(id, scheme)
|
31
|
+
ColorScheme[id] = scheme
|
18
32
|
end
|
19
33
|
|
20
34
|
def setup_option(option_builder=Proc.new)
|
@@ -76,6 +90,7 @@ module Test
|
|
76
90
|
|
77
91
|
attr_reader :suite, :runner_options
|
78
92
|
attr_accessor :filters, :to_run, :pattern, :exclude, :base, :workdir
|
93
|
+
attr_accessor :color_scheme
|
79
94
|
attr_writer :runner, :collector
|
80
95
|
|
81
96
|
def initialize(standalone)
|
@@ -85,8 +100,11 @@ module Test
|
|
85
100
|
@collector = default_collector
|
86
101
|
@filters = []
|
87
102
|
@to_run = []
|
103
|
+
@color_scheme = ColorScheme.default
|
88
104
|
@runner_options = {}
|
89
105
|
@workdir = nil
|
106
|
+
default_config_file = "test-unit.yml"
|
107
|
+
load_config(default_config_file) if File.exist?(default_config_file)
|
90
108
|
yield(self) if block_given?
|
91
109
|
end
|
92
110
|
|
@@ -96,8 +114,7 @@ module Test
|
|
96
114
|
rescue OptionParser::ParseError => e
|
97
115
|
puts e
|
98
116
|
puts options
|
99
|
-
|
100
|
-
abort
|
117
|
+
exit(false)
|
101
118
|
else
|
102
119
|
@filters << proc{false} unless(@filters.empty?)
|
103
120
|
end
|
@@ -116,7 +133,7 @@ module Test
|
|
116
133
|
@runner = r
|
117
134
|
end
|
118
135
|
|
119
|
-
if(@standalone)
|
136
|
+
if (@standalone)
|
120
137
|
o.on('-b', '--basedir=DIR', "Base directory of test suites.") do |b|
|
121
138
|
@base = b
|
122
139
|
end
|
@@ -169,22 +186,53 @@ module Test
|
|
169
186
|
end
|
170
187
|
|
171
188
|
priority_filter = Proc.new do |test|
|
172
|
-
|
189
|
+
if @filters.size > 2
|
190
|
+
nil
|
191
|
+
else
|
192
|
+
Priority::Checker.new(test).need_to_run? or nil
|
193
|
+
end
|
173
194
|
end
|
174
195
|
o.on("--[no-]priority-mode",
|
175
196
|
"Runs some tests based on their priority.") do |priority_mode|
|
176
197
|
if priority_mode
|
198
|
+
Priority.enable
|
177
199
|
@filters |= [priority_filter]
|
178
200
|
else
|
201
|
+
Priority.disable
|
179
202
|
@filters -= [priority_filter]
|
180
203
|
end
|
181
204
|
end
|
182
205
|
|
206
|
+
o.on("--default-priority=PRIORITY",
|
207
|
+
Priority.available_values,
|
208
|
+
"Uses PRIORITY as default priority",
|
209
|
+
"(#{keyword_display(Priority.available_values)})") do |priority|
|
210
|
+
Priority.default = priority
|
211
|
+
end
|
212
|
+
|
183
213
|
o.on('-I', "--load-path=DIR[#{File::PATH_SEPARATOR}DIR...]",
|
184
214
|
"Appends directory list to $LOAD_PATH.") do |dirs|
|
185
215
|
$LOAD_PATH.concat(dirs.split(File::PATH_SEPARATOR))
|
186
216
|
end
|
187
217
|
|
218
|
+
color_schemes = ColorScheme.all
|
219
|
+
o.on("--color-scheme=SCHEME", color_schemes,
|
220
|
+
"Use SCHEME as color scheme.",
|
221
|
+
"(#{keyword_display(color_schemes)})") do |scheme|
|
222
|
+
@color_scheme = scheme
|
223
|
+
end
|
224
|
+
|
225
|
+
o.on("--config=FILE",
|
226
|
+
"Use YAML fomat FILE content as configuration file.") do |file|
|
227
|
+
load_config(file)
|
228
|
+
end
|
229
|
+
|
230
|
+
o.on("--order=ORDER", TestCase::AVAILABLE_ORDERS,
|
231
|
+
"Run tests in a test case in ORDER order.",
|
232
|
+
"(#{keyword_display(TestCase::AVAILABLE_ORDERS)})") do |order|
|
233
|
+
TestCase.test_order = order
|
234
|
+
end
|
235
|
+
|
188
236
|
ADDITIONAL_OPTIONS.each do |option_builder|
|
189
237
|
option_builder.call(self, o)
|
190
238
|
end
|
@@ -201,13 +249,13 @@ module Test
|
|
201
249
|
|
202
250
|
o.on_tail('--console', 'Console runner (use --runner).') do
|
203
251
|
warn("Deprecated option (--console).")
|
204
|
-
@runner =
|
252
|
+
@runner = self.class.runner(:console)
|
205
253
|
end
|
206
254
|
|
207
255
|
if RUNNERS[:fox]
|
208
256
|
o.on_tail('--fox', 'Fox runner (use --runner).') do
|
209
257
|
warn("Deprecated option (--fox).")
|
210
|
-
@runner =
|
258
|
+
@runner = self.class.runner(:fox)
|
211
259
|
end
|
212
260
|
end
|
213
261
|
|
@@ -215,10 +263,22 @@ module Test
|
|
215
263
|
end
|
216
264
|
end
|
217
265
|
|
218
|
-
def keyword_display(
|
219
|
-
|
220
|
-
|
221
|
-
|
266
|
+
def keyword_display(keywords)
|
267
|
+
keywords = keywords.collect do |keyword, _|
|
268
|
+
keyword.to_s
|
269
|
+
end.uniq.sort
|
270
|
+
|
271
|
+
i = 0
|
272
|
+
keywords.collect do |keyword|
|
273
|
+
if (i > 0 and keyword[0] == keywords[i - 1][0]) or
|
274
|
+
((i < keywords.size - 1) and (keyword[0] == keywords[i + 1][0]))
|
275
|
+
n = 2
|
276
|
+
else
|
277
|
+
n = 1
|
278
|
+
end
|
279
|
+
i += 1
|
280
|
+
keyword.sub(/^(.{#{n}})([A-Za-z]+)(?=\w*$)/, '\\1[\\2]')
|
281
|
+
end.join(", ")
|
222
282
|
end
|
223
283
|
|
224
284
|
def run
|
@@ -226,21 +286,40 @@ module Test
|
|
226
286
|
return false if suite.nil?
|
227
287
|
runner = @runner[self]
|
228
288
|
return false if runner.nil?
|
289
|
+
@runner_options[:color_scheme] ||= @color_scheme
|
229
290
|
Dir.chdir(@workdir) if @workdir
|
230
291
|
runner.run(suite, @runner_options).passed?
|
231
292
|
end
|
232
293
|
|
294
|
+
def load_config(file)
|
295
|
+
require 'yaml'
|
296
|
+
config = YAML.load(File.read(file))
|
297
|
+
runner_name = config["runner"]
|
298
|
+
@runner = self.class.runner(runner_name) || @runner
|
299
|
+
@collector = self.class.collector(config["collector"]) || @collector
|
300
|
+
(config["color_schemes"] || {}).each do |name, options|
|
301
|
+
ColorScheme[name] = options
|
302
|
+
end
|
303
|
+
runner_options = {}
|
304
|
+
(config["#{runner_name}_options"] || {}).each do |key, value|
|
305
|
+
key = key.to_sym
|
306
|
+
value = ColorScheme[value] if key == :color_scheme
|
307
|
+
runner_options[key.to_sym] = value
|
308
|
+
end
|
309
|
+
@runner_options = @runner_options.merge(runner_options)
|
310
|
+
end
|
311
|
+
|
233
312
|
private
|
234
313
|
def default_runner
|
235
314
|
if ENV["EMACS"] == "t"
|
236
|
-
|
315
|
+
self.class.runner(:emacs)
|
237
316
|
else
|
238
|
-
|
317
|
+
self.class.runner(:console)
|
239
318
|
end
|
240
319
|
end
|
241
320
|
|
242
321
|
def default_collector
|
243
|
-
|
322
|
+
self.class.collector(@standalone ? :load : :descendant)
|
244
323
|
end
|
245
324
|
end
|
246
325
|
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'test/unit/color'
|
2
|
+
|
3
|
+
module Test
|
4
|
+
module Unit
|
5
|
+
class ColorScheme
|
6
|
+
include Enumerable
|
7
|
+
|
8
|
+
class << self
|
9
|
+
@@default = nil
|
10
|
+
def default
|
11
|
+
@@default ||= new("success" => Color.new("green", :bold => true),
|
12
|
+
"failure" => Color.new("red", :bold => true),
|
13
|
+
"pending" => Color.new("magenta", :bold => true),
|
14
|
+
"omission" => Color.new("blue", :bold => true),
|
15
|
+
"notification" => Color.new("cyan", :bold => true),
|
16
|
+
"error" => Color.new("yellow", :bold => true) +
|
17
|
+
Color.new("black", :foreground => false))
|
18
|
+
end
|
19
|
+
|
20
|
+
@@schemes = {}
|
21
|
+
def all
|
22
|
+
@@schemes.merge("default" => default)
|
23
|
+
end
|
24
|
+
|
25
|
+
def [](id)
|
26
|
+
@@schemes[id.to_s]
|
27
|
+
end
|
28
|
+
|
29
|
+
def []=(id, scheme_or_spec)
|
30
|
+
if scheme_or_spec.is_a?(self)
|
31
|
+
scheme = scheme_or_spec
|
32
|
+
else
|
33
|
+
scheme = new(scheme_or_spec)
|
34
|
+
end
|
35
|
+
@@schemes[id.to_s] = scheme
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def initialize(scheme_spec)
|
40
|
+
@scheme = {}
|
41
|
+
scheme_spec.each do |key, color_spec|
|
42
|
+
self[key] = color_spec
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def [](name)
|
47
|
+
@scheme[name.to_s]
|
48
|
+
end
|
49
|
+
|
50
|
+
def []=(name, color_spec)
|
51
|
+
@scheme[name.to_s] = make_color(color_spec)
|
52
|
+
end
|
53
|
+
|
54
|
+
def each(&block)
|
55
|
+
@scheme.each(&block)
|
56
|
+
end
|
57
|
+
|
58
|
+
def to_hash
|
59
|
+
hash = {}
|
60
|
+
@scheme.each do |key, color|
|
61
|
+
hash[key] = color
|
62
|
+
end
|
63
|
+
hash
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
def make_color(color_spec)
|
68
|
+
if color_spec.is_a?(Color) or color_spec.is_a?(MixColor)
|
69
|
+
color_spec
|
70
|
+
else
|
71
|
+
color_name = nil
|
72
|
+
normalized_color_spec = {}
|
73
|
+
color_spec.each do |key, value|
|
74
|
+
key = key.to_sym
|
75
|
+
if key == :name
|
76
|
+
color_name = value
|
77
|
+
else
|
78
|
+
normalized_color_spec[key] = value
|
79
|
+
end
|
80
|
+
end
|
81
|
+
Color.new(color_name, normalized_color_spec)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -3,6 +3,8 @@ module Test
|
|
3
3
|
class Color
|
4
4
|
NAMES = ["black", "red", "green", "yellow",
|
5
5
|
"blue", "magenta", "cyan", "white"]
|
6
|
+
|
7
|
+
attr_reader :name
|
6
8
|
def initialize(name, options={})
|
7
9
|
@name = name
|
8
10
|
@foreground = options[:foreground]
|
@@ -13,19 +15,47 @@ module Test
|
|
13
15
|
@underline = options[:underline]
|
14
16
|
end
|
15
17
|
|
18
|
+
def foreground?
|
19
|
+
@foreground
|
20
|
+
end
|
21
|
+
|
22
|
+
def intensity?
|
23
|
+
@intensity
|
24
|
+
end
|
25
|
+
|
26
|
+
def bold?
|
27
|
+
@bold
|
28
|
+
end
|
29
|
+
|
30
|
+
def italic?
|
31
|
+
@italic
|
32
|
+
end
|
33
|
+
|
34
|
+
def underline?
|
35
|
+
@underline
|
36
|
+
end
|
37
|
+
|
38
|
+
def ==(other)
|
39
|
+
self.class === other and
|
40
|
+
[name, foreground?, intensity?,
|
41
|
+
bold?, italic?, underline?] ==
|
42
|
+
[other.name, other.foreground?, other.intensity?,
|
43
|
+
other.bold?, other.italic?, other.underline?]
|
44
|
+
end
|
45
|
+
|
16
46
|
def sequence
|
17
47
|
sequence = []
|
18
48
|
if @name == "none"
|
19
49
|
elsif @name == "reset"
|
20
50
|
sequence << "0"
|
21
51
|
else
|
22
|
-
foreground_parameter =
|
23
|
-
foreground_parameter += 6 if
|
52
|
+
foreground_parameter = foreground? ? 3 : 4
|
53
|
+
foreground_parameter += 6 if intensity?
|
24
54
|
sequence << "#{foreground_parameter}#{NAMES.index(@name)}"
|
25
55
|
end
|
26
|
-
sequence << "1" if
|
27
|
-
sequence << "3" if
|
28
|
-
sequence << "4" if
|
56
|
+
sequence << "1" if bold?
|
57
|
+
sequence << "3" if italic?
|
58
|
+
sequence << "4" if underline?
|
29
59
|
sequence
|
30
60
|
end
|
31
61
|
|
@@ -39,6 +69,7 @@ module Test
|
|
39
69
|
end
|
40
70
|
|
41
71
|
class MixColor
|
72
|
+
attr_reader :colors
|
42
73
|
def initialize(colors)
|
43
74
|
@colors = colors
|
44
75
|
end
|
@@ -56,6 +87,10 @@ module Test
|
|
56
87
|
def +(other)
|
57
88
|
self.class.new([self, other])
|
58
89
|
end
|
90
|
+
|
91
|
+
def ==(other)
|
92
|
+
self.class === other and colors == other.colors
|
93
|
+
end
|
59
94
|
end
|
60
95
|
end
|
61
96
|
end
|
@@ -507,6 +507,20 @@ module Test
|
|
507
507
|
end
|
508
508
|
|
509
509
|
module_function
|
510
|
+
def need_fold?(diff)
|
511
|
+
/^[-+].{79}/ =~ diff
|
512
|
+
end
|
513
|
+
|
514
|
+
def fold(string)
|
515
|
+
string.split(/\r?\n/).collect do |line|
|
516
|
+
line.gsub(/(.{78})/, "\\1\n")
|
517
|
+
end.join("\n")
|
518
|
+
end
|
519
|
+
|
520
|
+
def folded_readable(from, to, options={})
|
521
|
+
readable(fold(from), fold(to), options)
|
522
|
+
end
|
523
|
+
|
510
524
|
def readable(from, to, options={})
|
511
525
|
diff(ReadableDiffer, from, to, options)
|
512
526
|
end
|
@@ -90,17 +90,14 @@ module Test
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def add_fixture_method_name(how, variable_name, method_name)
|
93
|
-
|
94
|
-
self.instance_variable_set(variable_name, [])
|
95
|
-
end
|
96
|
-
methods = self.instance_variable_get(variable_name)
|
93
|
+
methods = instance_eval("#{variable_name} ||= []")
|
97
94
|
|
98
95
|
if how == :prepend
|
99
96
|
methods = [method_name] | methods
|
100
97
|
else
|
101
98
|
methods = methods | [method_name]
|
102
99
|
end
|
103
|
-
|
100
|
+
instance_variable_set(variable_name, methods)
|
104
101
|
end
|
105
102
|
|
106
103
|
def registered_methods_variable_name(fixture, order)
|
@@ -144,19 +141,13 @@ module Test
|
|
144
141
|
interested_ancestors.inject([]) do |result, ancestor|
|
145
142
|
if ancestor.is_a?(Class)
|
146
143
|
ancestor.class_eval do
|
147
|
-
methods = []
|
148
|
-
unregistered_methods =
|
149
|
-
|
150
|
-
|
151
|
-
end
|
152
|
-
if instance_variable_defined?(unregistered_methods_variable)
|
153
|
-
unregistered_methods =
|
154
|
-
instance_variable_get(unregistered_methods_variable)
|
155
|
-
end
|
156
|
-
result + methods - unregistered_methods
|
144
|
+
methods = instance_eval("#{methods_variable} ||= []")
|
145
|
+
unregistered_methods =
|
146
|
+
instance_eval("#{unregistered_methods_variable} ||= []")
|
147
|
+
(result | methods) - unregistered_methods
|
157
148
|
end
|
158
149
|
else
|
159
|
-
|
150
|
+
result
|
160
151
|
end
|
161
152
|
end
|
162
153
|
end
|
@@ -56,6 +56,15 @@ module Test
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
+
# Notify some information.
|
60
|
+
#
|
61
|
+
# Example:
|
62
|
+
# def test_notification
|
63
|
+
# notify("I'm here!")
|
64
|
+
# # Reached here
|
65
|
+
# notify("Special!") if special_case?
|
66
|
+
# # Reached here too
|
67
|
+
# end
|
59
68
|
def notify(message, &block)
|
60
69
|
notification = Notification.new(name, filter_backtrace(caller), message)
|
61
70
|
add_notification(notification)
|
@@ -56,6 +56,20 @@ module Test
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
+
# Omit the test of part of the test.
|
60
|
+
#
|
61
|
+
# Example:
|
62
|
+
# def test_omission
|
63
|
+
# omit
|
64
|
+
# # Not reached here
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
# def test_omission_with_here
|
68
|
+
# omit do
|
69
|
+
# # Not ran here
|
70
|
+
# end
|
71
|
+
# # Reached here
|
72
|
+
# end
|
59
73
|
def omit(message=nil, &block)
|
60
74
|
message ||= "omitted."
|
61
75
|
if block_given?
|
@@ -56,6 +56,22 @@ module Test
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
+
# Marks the test or part of the test is pending.
|
60
|
+
#
|
61
|
+
# Example:
|
62
|
+
# def test_pending
|
63
|
+
# pend
|
64
|
+
# # Not reached here
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
# def test_pending_with_here
|
68
|
+
# pend do
|
69
|
+
# # Ran here
|
70
|
+
# # Fails if the block doesn't raise any error.
|
71
|
+
# # Because it means the block is passed unexpectedly.
|
72
|
+
# end
|
73
|
+
# # Reached here
|
74
|
+
# end
|
59
75
|
def pend(message=nil, &block)
|
60
76
|
message ||= "pended."
|
61
77
|
if block_given?
|
@@ -13,6 +13,32 @@ module Test
|
|
13
13
|
teardown :priority_teardown, :after => :append
|
14
14
|
end
|
15
15
|
end
|
16
|
+
|
17
|
+
@@enabled = false
|
18
|
+
def enabled?
|
19
|
+
@@enabled
|
20
|
+
end
|
21
|
+
|
22
|
+
def enable
|
23
|
+
@@enabled = true
|
24
|
+
end
|
25
|
+
|
26
|
+
def disable
|
27
|
+
@@enabled = false
|
28
|
+
end
|
29
|
+
|
30
|
+
@@default = :normal
|
31
|
+
def default
|
32
|
+
@@default || :normal
|
33
|
+
end
|
34
|
+
|
35
|
+
def default=(default)
|
36
|
+
@@default = default
|
37
|
+
end
|
38
|
+
|
39
|
+
def available_values
|
40
|
+
Checker.available_priorities
|
41
|
+
end
|
16
42
|
end
|
17
43
|
|
18
44
|
class Checker
|
@@ -23,7 +49,7 @@ module Test
|
|
23
49
|
end
|
24
50
|
|
25
51
|
def need_to_run?(test)
|
26
|
-
priority = test[:priority] ||
|
52
|
+
priority = test[:priority] || Priority.default
|
27
53
|
if have_priority?(priority)
|
28
54
|
send(priority_check_method_name(priority), test)
|
29
55
|
else
|
@@ -31,6 +57,13 @@ module Test
|
|
31
57
|
end
|
32
58
|
end
|
33
59
|
|
60
|
+
def available_priorities
|
61
|
+
methods(false).collect do |name|
|
62
|
+
/\Arun_priority_(.+)\?\z/ =~ name.to_s
|
63
|
+
$1
|
64
|
+
end.compact
|
65
|
+
end
|
66
|
+
|
34
67
|
def run_priority_must?(test)
|
35
68
|
true
|
36
69
|
end
|
@@ -90,7 +123,7 @@ module Test
|
|
90
123
|
def result_dir
|
91
124
|
components = [".test-result",
|
92
125
|
@test.class.name || "AnonymousTestCase",
|
93
|
-
|
126
|
+
escaped_method_name]
|
94
127
|
parent_directories = [File.dirname($0), Dir.pwd]
|
95
128
|
if Process.respond_to?(:uid)
|
96
129
|
parent_directories << File.join(Dir.tmpdir, Process.uid.to_s)
|
@@ -112,7 +145,7 @@ module Test
|
|
112
145
|
end
|
113
146
|
|
114
147
|
def escaped_method_name
|
115
|
-
@method_name.to_s.gsub(/[!?=]$/) do |matched|
|
148
|
+
@test.method_name.to_s.gsub(/[!?=]$/) do |matched|
|
116
149
|
case matched
|
117
150
|
when "!"
|
118
151
|
".destructive"
|
@@ -135,10 +168,12 @@ module Test
|
|
135
168
|
end
|
136
169
|
|
137
170
|
def priority_setup
|
171
|
+
return unless Priority.enabled?
|
138
172
|
Checker.new(self).setup
|
139
173
|
end
|
140
174
|
|
141
175
|
def priority_teardown
|
176
|
+
return unless Priority.enabled?
|
142
177
|
Checker.new(self).teardown
|
143
178
|
end
|
144
179
|
end
|
@@ -31,8 +31,8 @@ module Test
|
|
31
31
|
["true", true],
|
32
32
|
]
|
33
33
|
opts.on("--[no-]use-color=[auto]", use_color_options,
|
34
|
-
"
|
35
|
-
"(default is auto") do |use_color|
|
34
|
+
"Uses color output",
|
35
|
+
"(default is auto)") do |use_color|
|
36
36
|
case use_color
|
37
37
|
when nil
|
38
38
|
use_color = true
|
@@ -41,6 +41,12 @@ module Test
|
|
41
41
|
end
|
42
42
|
auto_runner.runner_options[:use_color] = use_color
|
43
43
|
end
|
44
|
+
|
45
|
+
opts.on("--progress-row-max=MAX", Integer,
|
46
|
+
"Uses MAX as max terminal width for progress mark",
|
47
|
+
"(default is auto)") do |max|
|
48
|
+
auto_runner.runner_options[:progress_row_max] = max
|
49
|
+
end
|
44
50
|
end
|
45
51
|
end
|
46
52
|
end
|