activeldap 1.0.0 → 1.0.1

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.
Files changed (137) hide show
  1. data/CHANGES +10 -0
  2. data/README +3 -2
  3. data/data/locale/en/LC_MESSAGES/active-ldap.mo +0 -0
  4. data/data/locale/ja/LC_MESSAGES/active-ldap.mo +0 -0
  5. data/examples/al-admin/po/en/al-admin.po +1 -1
  6. data/examples/al-admin/po/ja/al-admin.po +1 -1
  7. data/examples/al-admin/po/nl/al-admin.po +1 -1
  8. data/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifier.rb +7 -8
  9. data/examples/al-admin/vendor/plugins/exception_notification/lib/exception_notifier_helper.rb +2 -1
  10. data/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_environment.rhtml +1 -1
  11. data/examples/al-admin/vendor/plugins/exception_notification/views/exception_notifier/_request.rhtml +2 -1
  12. data/lib/active_ldap.rb +9 -3
  13. data/lib/active_ldap/action_controller/ldap_benchmarking.rb +36 -0
  14. data/lib/active_ldap/adapter/jndi.rb +1 -1
  15. data/lib/active_ldap/adapter/jndi_connection.rb +2 -1
  16. data/lib/active_ldap/association/belongs_to_many.rb +10 -2
  17. data/lib/active_ldap/association/collection.rb +10 -0
  18. data/lib/active_ldap/association/has_many_utils.rb +13 -9
  19. data/lib/active_ldap/association/has_many_wrap.rb +10 -2
  20. data/lib/active_ldap/associations.rb +3 -3
  21. data/lib/active_ldap/base.rb +95 -32
  22. data/lib/active_ldap/connection.rb +1 -1
  23. data/lib/active_ldap/distinguished_name.rb +3 -0
  24. data/lib/active_ldap/entry_attribute.rb +2 -2
  25. data/lib/active_ldap/ldif.rb +2 -2
  26. data/lib/active_ldap/operations.rb +7 -3
  27. data/lib/active_ldap/user_password.rb +0 -1
  28. data/lib/active_ldap/validations.rb +2 -0
  29. data/po/en/active-ldap.po +1 -1
  30. data/po/ja/active-ldap.po +1 -1
  31. data/rails/plugin/active_ldap/init.rb +3 -34
  32. data/test-unit/History.txt +32 -0
  33. data/test-unit/Manifest.txt +70 -0
  34. data/test-unit/README.txt +32 -0
  35. data/test-unit/Rakefile +22 -0
  36. data/test-unit/bin/testrb +5 -0
  37. data/test-unit/lib/test/unit.rb +280 -0
  38. data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
  39. data/test-unit/lib/test/unit/assertions.rb +722 -0
  40. data/test-unit/lib/test/unit/attribute.rb +125 -0
  41. data/test-unit/lib/test/unit/autorunner.rb +250 -0
  42. data/test-unit/lib/test/unit/collector.rb +43 -0
  43. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  44. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  45. data/test-unit/lib/test/unit/collector/load.rb +135 -0
  46. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  47. data/test-unit/lib/test/unit/color.rb +61 -0
  48. data/test-unit/lib/test/unit/diff.rb +524 -0
  49. data/test-unit/lib/test/unit/error.rb +124 -0
  50. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  51. data/test-unit/lib/test/unit/failure.rb +110 -0
  52. data/test-unit/lib/test/unit/fixture.rb +185 -0
  53. data/test-unit/lib/test/unit/notification.rb +116 -0
  54. data/test-unit/lib/test/unit/omission.rb +129 -0
  55. data/test-unit/lib/test/unit/pending.rb +130 -0
  56. data/test-unit/lib/test/unit/priority.rb +146 -0
  57. data/test-unit/lib/test/unit/runner/console.rb +46 -0
  58. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  59. data/test-unit/lib/test/unit/testcase.rb +174 -0
  60. data/test-unit/lib/test/unit/testresult.rb +89 -0
  61. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  62. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  63. data/test-unit/lib/test/unit/ui/console/testrunner.rb +195 -0
  64. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  65. data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
  66. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  67. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  68. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  69. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  70. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  71. data/test-unit/lib/test/unit/version.rb +7 -0
  72. data/test-unit/sample/adder.rb +13 -0
  73. data/test-unit/sample/subtracter.rb +12 -0
  74. data/test-unit/sample/tc_adder.rb +18 -0
  75. data/test-unit/sample/tc_subtracter.rb +18 -0
  76. data/test-unit/sample/ts_examples.rb +7 -0
  77. data/test-unit/test/collector/test_descendant.rb +135 -0
  78. data/test-unit/test/collector/test_dir.rb +406 -0
  79. data/test-unit/test/collector/test_load.rb +333 -0
  80. data/test-unit/test/collector/test_objectspace.rb +98 -0
  81. data/test-unit/test/run-test.rb +13 -0
  82. data/test-unit/test/test_assertions.rb +693 -0
  83. data/test-unit/test/test_attribute.rb +86 -0
  84. data/{test-unit-ext → test-unit}/test/test_color.rb +3 -5
  85. data/{test-unit-ext → test-unit}/test/test_diff.rb +18 -16
  86. data/test-unit/test/test_emacs_runner.rb +60 -0
  87. data/test-unit/test/test_error.rb +26 -0
  88. data/test-unit/test/test_failure.rb +33 -0
  89. data/test-unit/test/test_fixture.rb +275 -0
  90. data/{test-unit-ext → test-unit}/test/test_notification.rb +7 -6
  91. data/test-unit/test/test_omission.rb +81 -0
  92. data/{test-unit-ext → test-unit}/test/test_pending.rb +15 -15
  93. data/{test-unit-ext → test-unit}/test/test_priority.rb +4 -3
  94. data/test-unit/test/test_testcase.rb +411 -0
  95. data/test-unit/test/test_testresult.rb +113 -0
  96. data/test-unit/test/test_testsuite.rb +129 -0
  97. data/test-unit/test/testunit_test_util.rb +12 -0
  98. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  99. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  100. data/test-unit/test/util/test_observable.rb +102 -0
  101. data/test-unit/test/util/test_procwrapper.rb +36 -0
  102. data/test/al-test-utils.rb +4 -4
  103. data/test/command.rb +1 -1
  104. data/test/run-test.rb +5 -4
  105. data/test/test_associations.rb +143 -9
  106. data/test/test_base.rb +25 -1
  107. data/test/test_dn.rb +2 -0
  108. data/test/test_find.rb +8 -1
  109. data/test/test_ldif.rb +51 -114
  110. data/test/test_reflection.rb +4 -8
  111. data/test/test_usermod-lang-add.rb +2 -1
  112. data/test/test_validation.rb +4 -3
  113. metadata +76 -31
  114. data/test-unit-ext/NEWS.en +0 -28
  115. data/test-unit-ext/NEWS.ja +0 -28
  116. data/test-unit-ext/README.en +0 -247
  117. data/test-unit-ext/README.ja +0 -246
  118. data/test-unit-ext/Rakefile +0 -111
  119. data/test-unit-ext/lib/test-unit-ext.rb +0 -16
  120. data/test-unit-ext/lib/test-unit-ext/always-show-result.rb +0 -28
  121. data/test-unit-ext/lib/test-unit-ext/assertions.rb +0 -40
  122. data/test-unit-ext/lib/test-unit-ext/attributes.rb +0 -129
  123. data/test-unit-ext/lib/test-unit-ext/backtrace-filter.rb +0 -17
  124. data/test-unit-ext/lib/test-unit-ext/color.rb +0 -59
  125. data/test-unit-ext/lib/test-unit-ext/colorized-runner.rb +0 -111
  126. data/test-unit-ext/lib/test-unit-ext/diff.rb +0 -516
  127. data/test-unit-ext/lib/test-unit-ext/long-display-for-emacs.rb +0 -25
  128. data/test-unit-ext/lib/test-unit-ext/notification.rb +0 -79
  129. data/test-unit-ext/lib/test-unit-ext/omission.rb +0 -96
  130. data/test-unit-ext/lib/test-unit-ext/pending.rb +0 -97
  131. data/test-unit-ext/lib/test-unit-ext/priority.rb +0 -158
  132. data/test-unit-ext/lib/test-unit-ext/version.rb +0 -3
  133. data/test-unit-ext/lib/test-unit-ext/xml-report.rb +0 -224
  134. data/test-unit-ext/test/run-test.rb +0 -14
  135. data/test-unit-ext/test/test_attributes.rb +0 -139
  136. data/test-unit-ext/test/test_omission.rb +0 -64
  137. data/test-unit-ext/test/test_xml_report.rb +0 -161
@@ -0,0 +1,86 @@
1
+ class TestUnitAttribute < Test::Unit::TestCase
2
+ class TestStack < Test::Unit::TestCase
3
+ class << self
4
+ def suite
5
+ Test::Unit::TestSuite.new(name)
6
+ end
7
+ end
8
+
9
+ class Stack
10
+ def initialize
11
+ @data = []
12
+ end
13
+
14
+ def push(data)
15
+ @data.push(data)
16
+ end
17
+
18
+ def peek
19
+ @data[-2]
20
+ end
21
+
22
+ def empty?
23
+ @data.empty?
24
+ end
25
+
26
+ def size
27
+ @data.size + 11
28
+ end
29
+ end
30
+
31
+ def setup
32
+ @stack = Stack.new
33
+ end
34
+
35
+ attribute :category, :accessor
36
+ def test_peek
37
+ @stack.push(1)
38
+ @stack.push(2)
39
+ assert_equal(2, @stack.peek)
40
+ end
41
+
42
+ attribute :bug, 1234
43
+ def test_bug_1234
44
+ assert_equal(0, @stack.size)
45
+ end
46
+
47
+ def test_no_attributes
48
+ assert(@stack.empty?)
49
+ @stack.push(1)
50
+ assert(!@stack.empty?)
51
+ assert_equal(1, @stack.size)
52
+ end
53
+ end
54
+
55
+ def test_set_attributes
56
+ test_for_accessor_category = TestStack.new("test_peek")
57
+ assert_equal({"category" => :accessor},
58
+ test_for_accessor_category.attributes)
59
+
60
+ test_for_bug_1234 = TestStack.new("test_bug_1234")
61
+ assert_equal({"bug" => 1234}, test_for_bug_1234.attributes)
62
+
63
+ test_no_attributes = TestStack.new("test_no_attributes")
64
+ assert_equal({}, test_no_attributes.attributes)
65
+ end
66
+
67
+ def test_callback
68
+ changed_attributes = []
69
+ observer = Proc.new do |test_case, key, old_value, value, method_name|
70
+ changed_attributes << [test_case, key, old_value, value, method_name]
71
+ end
72
+
73
+ test_case = Class.new(TestStack) do
74
+ register_attribute_observer(:bug, &observer)
75
+ attribute("bug", 9876, "test_bug_1234")
76
+ attribute(:description, "Test for peek", "test_peek")
77
+ attribute(:bug, 29, "test_peek")
78
+ end
79
+
80
+ assert_equal([
81
+ [test_case, "bug", 1234, 9876, "test_bug_1234"],
82
+ [test_case, "bug", nil, 29, "test_peek"],
83
+ ],
84
+ changed_attributes)
85
+ end
86
+ end
@@ -1,6 +1,4 @@
1
- require 'test-unit-ext'
2
-
3
- class TestColor < Test::Unit::TestCase
1
+ class TestUnitColor < Test::Unit::TestCase
4
2
  def test_color_escape_sequence
5
3
  assert_escape_sequence(["31"], color("red"))
6
4
  assert_escape_sequence(["32", "1"], color("green", :bold => true))
@@ -24,11 +22,11 @@ class TestColor < Test::Unit::TestCase
24
22
 
25
23
  private
26
24
  def color(name, options={})
27
- Test::Color.new(name, options)
25
+ Test::Unit::Color.new(name, options)
28
26
  end
29
27
 
30
28
  def mix_color(colors)
31
- Test::MixColor.new(colors)
29
+ Test::Unit::MixColor.new(colors)
32
30
  end
33
31
 
34
32
  def assert_escape_sequence(expected, color)
@@ -1,4 +1,4 @@
1
- class TestDiff < Test::Unit::TestCase
1
+ class TestUnitDiff < Test::Unit::TestCase
2
2
  def test_to_indexes
3
3
  assert_to_indexes({"abc def" => [0, 2], "abc" => [1]},
4
4
  ["abc def", "abc", "abc def"])
@@ -388,14 +388,14 @@ class TestDiff < Test::Unit::TestCase
388
388
 
389
389
  private
390
390
  def assert_to_indexes(expected, to, &junk_predicate)
391
- matcher = Test::Diff::SequenceMatcher.new([""], to, &junk_predicate)
391
+ matcher = Test::Unit::Diff::SequenceMatcher.new([""], to, &junk_predicate)
392
392
  assert_equal(expected, matcher.instance_variable_get("@to_indexes"))
393
393
  end
394
394
 
395
395
  def assert_find_best_match_position(expected, from, to,
396
396
  from_start, from_end,
397
397
  to_start, to_end, &junk_predicate)
398
- matcher = Test::Diff::SequenceMatcher.new(from, to, &junk_predicate)
398
+ matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
399
399
  assert_equal(expected, matcher.send(:find_best_match_position,
400
400
  from_start, from_end,
401
401
  to_start, to_end))
@@ -404,70 +404,72 @@ class TestDiff < Test::Unit::TestCase
404
404
  def assert_longest_match(expected, from, to,
405
405
  from_start, from_end,
406
406
  to_start, to_end, &junk_predicate)
407
- matcher = Test::Diff::SequenceMatcher.new(from, to, &junk_predicate)
407
+ matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
408
408
  assert_equal(expected, matcher.longest_match(from_start, from_end,
409
409
  to_start, to_end))
410
410
  end
411
411
 
412
412
  def assert_matches(expected, from, to, &junk_predicate)
413
- matcher = Test::Diff::SequenceMatcher.new(from, to, &junk_predicate)
413
+ matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
414
414
  assert_equal(expected, matcher.send(:matches))
415
415
  end
416
416
 
417
417
  def assert_blocks(expected, from, to, &junk_predicate)
418
- matcher = Test::Diff::SequenceMatcher.new(from, to, &junk_predicate)
418
+ matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
419
419
  assert_equal(expected, matcher.blocks)
420
420
  end
421
421
 
422
422
  def assert_operations(expected, from, to, &junk_predicate)
423
- matcher = Test::Diff::SequenceMatcher.new(from, to, &junk_predicate)
423
+ matcher = Test::Unit::Diff::SequenceMatcher.new(from, to, &junk_predicate)
424
424
  assert_equal(expected, matcher.operations)
425
425
  end
426
426
 
427
427
  def assert_grouped_operations(expected, from, to)
428
- matcher = Test::Diff::SequenceMatcher.new(from, to)
428
+ matcher = Test::Unit::Diff::SequenceMatcher.new(from, to)
429
429
  assert_equal(expected, matcher.grouped_operations)
430
430
  end
431
431
 
432
432
  def assert_ratio(expected, from, to)
433
- matcher = Test::Diff::SequenceMatcher.new(from, to)
433
+ matcher = Test::Unit::Diff::SequenceMatcher.new(from, to)
434
434
  assert_in_delta(expected, 0.001, matcher.ratio)
435
435
  end
436
436
 
437
437
  def assert_readable_diff(expected, from, to)
438
- assert_equal(expected, Test::Diff.readable(from.join("\n"), to.join("\n")))
438
+ assert_equal(expected,
439
+ Test::Unit::Diff.readable(from.join("\n"), to.join("\n")))
439
440
  end
440
441
 
441
442
  def assert_unified_diff(expected, from, to, from_label, to_label, options={})
442
443
  options = options.merge(:from_label => from_label,
443
444
  :to_label => to_label)
444
- assert_equal(expected, Test::Diff.unified(from.join("\n"), to.join("\n"),
445
- options))
445
+ assert_equal(expected,
446
+ Test::Unit::Diff.unified(from.join("\n"), to.join("\n"),
447
+ options))
446
448
  end
447
449
 
448
450
  def assert_diff_lines(expected, from, to,
449
451
  from_start, from_end,
450
452
  to_start, to_end)
451
- differ = Test::Diff::ReadableDiffer.new(from, to)
453
+ differ = Test::Unit::Diff::ReadableDiffer.new(from, to)
452
454
  assert_equal(expected, differ.send(:diff_lines,
453
455
  from_start, from_end,
454
456
  to_start, to_end))
455
457
  end
456
458
 
457
459
  def assert_diff_line(expected, from_line, to_line)
458
- differ = Test::Diff::ReadableDiffer.new([""], [""])
460
+ differ = Test::Unit::Diff::ReadableDiffer.new([""], [""])
459
461
  assert_equal(expected, differ.send(:diff_line, from_line, to_line))
460
462
  end
461
463
 
462
464
  def assert_format_diff_point(expected, from_line, to_line, from_tags, to_tags)
463
- differ = Test::Diff::ReadableDiffer.new([""], [""])
465
+ differ = Test::Unit::Diff::ReadableDiffer.new([""], [""])
464
466
  assert_equal(expected, differ.send(:format_diff_point,
465
467
  from_line, to_line,
466
468
  from_tags, to_tags))
467
469
  end
468
470
 
469
471
  def assert_interesting_line(expected, from, to, from_start, to_start)
470
- differ = Test::Diff::UnifiedDiffer.new(from, to)
472
+ differ = Test::Unit::Diff::UnifiedDiffer.new(from, to)
471
473
  assert_equal(expected, differ.send(:find_interesting_line,
472
474
  from_start, to_start,
473
475
  :define_line?))
@@ -0,0 +1,60 @@
1
+ require 'test/unit'
2
+ require 'test/unit/ui/emacs/testrunner'
3
+
4
+ class TestUnitEmacsRunner < Test::Unit::TestCase
5
+ def test_format_failure_with_a_location
6
+ runner = create_runner
7
+ test_name = "test_failure"
8
+ file = "/home/user/test_xxx.rb"
9
+ line = "3"
10
+ info = "in `xxx'"
11
+ location = "#{file}:#{line}: #{info}"
12
+ message = "FAIL!!!"
13
+ failure = Test::Unit::Failure.new(test_name, [location], message)
14
+ assert_equal(<<-EOM.chomp, runner.send(:format_fault, failure))
15
+ Failure:
16
+ #{test_name} [#{file}:#{line}]:
17
+ #{message}
18
+ EOM
19
+ end
20
+
21
+ def test_format_failure_with_locations
22
+ runner = create_runner
23
+ test_name = "test_failure"
24
+ locations = ["/home/user/test_xxx.rb:3: in `xxx'",
25
+ "/home/user/yyy/test_yyy.rb:999: in `yyy'",
26
+ "/home/user/xyz/zzz.rb:29: in `zzz'"]
27
+ message = "Many backtrace!!!"
28
+ failure = Test::Unit::Failure.new(test_name, locations, message)
29
+ assert_equal(<<-EOM.chomp, runner.send(:format_fault, failure))
30
+ Failure:
31
+ #{test_name}
32
+ #{locations.join("\n")}:
33
+ #{message}
34
+ EOM
35
+ end
36
+
37
+ def test_format_error
38
+ runner = create_runner
39
+ test_name = "test_error"
40
+ message = "Error Message!!!"
41
+ backtrace = ["/home/user/test_xxx.rb:3: in `xxx'",
42
+ "/home/user/yyy/test_yyy.rb:999: in `yyy'",
43
+ "/home/user/xyz/zzz.rb:29: in `zzz'"]
44
+ exception = RuntimeError.new(message)
45
+ exception.set_backtrace(backtrace)
46
+ error = Test::Unit::Error.new(test_name, exception)
47
+ assert_equal(<<-EOM.chomp, runner.send(:format_fault, error))
48
+ Error:
49
+ #{test_name}:
50
+ #{exception.class.name}: #{message}
51
+ #{backtrace.join("\n")}
52
+ EOM
53
+ end
54
+
55
+ private
56
+ def create_runner(suite=nil)
57
+ suite ||= Test::Unit::TestSuite.new
58
+ Test::Unit::UI::Emacs::TestRunner.new(suite)
59
+ end
60
+ end
@@ -0,0 +1,26 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
3
+ # License:: Ruby license.
4
+
5
+ require 'test/unit'
6
+
7
+ module Test
8
+ module Unit
9
+ class TC_Error < TestCase
10
+ TF_Exception = Struct.new('TF_Exception', :message, :backtrace)
11
+ def test_display
12
+ ex = TF_Exception.new("message1\nmessage2", ['line1', 'line2'])
13
+ e = Error.new("name", ex)
14
+ assert_equal("name: #{TF_Exception.name}: message1", e.short_display)
15
+ assert_equal(<<EOM.strip, e.long_display)
16
+ Error:
17
+ name:
18
+ Struct::TF_Exception: message1
19
+ message2
20
+ line1
21
+ line2
22
+ EOM
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,33 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2003 Nathaniel Talbott. All rights reserved.
3
+ # License:: Ruby license.
4
+
5
+ require 'test/unit'
6
+ require 'test/unit/failure'
7
+
8
+ module Test::Unit
9
+ class TestFailure < TestCase
10
+ def test_display
11
+ f = Failure.new("name", [%q{location:1 in 'l'}], "message1\nmessage2")
12
+ assert_equal("name: message1", f.short_display)
13
+ assert_equal(<<EOM.strip, f.long_display)
14
+ Failure:
15
+ name [location:1]:
16
+ message1
17
+ message2
18
+ EOM
19
+
20
+ f = Failure.new("name", [%q{location1:2 in 'l1'}, 'location2:1', %q{location3:3 in 'l3'}], "message1\nmessage2")
21
+ assert_equal("name: message1", f.short_display)
22
+ assert_equal(<<EOM.strip, f.long_display)
23
+ Failure:
24
+ name
25
+ [location1:2 in 'l1'
26
+ location2:1
27
+ location3:3 in 'l3']:
28
+ message1
29
+ message2
30
+ EOM
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,275 @@
1
+ class TestUnitFixture < Test::Unit::TestCase
2
+ def test_setup_without_option
3
+ test_case = assert_setup([:setup,
4
+ :custom_setup_method0,
5
+ :custom_setup_method1,
6
+ :custom_setup_method3],
7
+ [])
8
+ assert_inherited_setup([:setup,
9
+ :custom_setup_method0,
10
+ :custom_setup_method1,
11
+ :custom_setup_method3],
12
+ test_case)
13
+ assert_inherited_setup([:setup], nil)
14
+ end
15
+
16
+ def test_setup_with_before_option
17
+ test_case = assert_setup([:custom_setup_method3,
18
+ :custom_setup_method0,
19
+ :custom_setup_method1,
20
+ :setup],
21
+ [[{:before => :append}],
22
+ [{:before => :append}],
23
+ [{:before => :prepend}],
24
+ [{:before => :prepend}]])
25
+ assert_inherited_setup([:custom_setup_method3,
26
+ :custom_setup_method0,
27
+ :custom_setup_method1,
28
+ :setup],
29
+ test_case)
30
+ assert_inherited_setup([:setup], nil)
31
+ end
32
+
33
+ def test_setup_with_after_option
34
+ test_case = assert_setup([:setup,
35
+ :custom_setup_method3,
36
+ :custom_setup_method0,
37
+ :custom_setup_method1],
38
+ [[{:after => :append}],
39
+ [{:after => :append}],
40
+ [{:after => :prepend}],
41
+ [{:after => :prepend}]])
42
+ assert_inherited_setup([:setup,
43
+ :custom_setup_method3,
44
+ :custom_setup_method0,
45
+ :custom_setup_method1],
46
+ test_case)
47
+ assert_inherited_setup([:setup], nil)
48
+ end
49
+
50
+ def test_setup_with_invalid_option
51
+ assert_invalid_setup_option(:unknown => true)
52
+ assert_invalid_setup_option(:before => :unknown)
53
+ assert_invalid_setup_option(:after => :unknown)
54
+ end
55
+
56
+ def test_teardown_without_option
57
+ test_case = assert_teardown([:custom_teardown_method3,
58
+ :custom_teardown_method1,
59
+ :custom_teardown_method0,
60
+ :teardown],
61
+ [])
62
+ assert_inherited_teardown([:custom_teardown_method3,
63
+ :custom_teardown_method1,
64
+ :custom_teardown_method0,
65
+ :teardown],
66
+ test_case)
67
+ assert_inherited_teardown([:teardown], nil)
68
+ end
69
+
70
+ def test_teardown_with_before_option
71
+ test_case = assert_teardown([:custom_teardown_method3,
72
+ :custom_teardown_method0,
73
+ :custom_teardown_method1,
74
+ :teardown],
75
+ [[{:before => :append}],
76
+ [{:before => :append}],
77
+ [{:before => :prepend}],
78
+ [{:before => :prepend}]])
79
+ assert_inherited_teardown([:custom_teardown_method3,
80
+ :custom_teardown_method0,
81
+ :custom_teardown_method1,
82
+ :teardown],
83
+ test_case)
84
+ assert_inherited_teardown([:teardown], nil)
85
+ end
86
+
87
+ def test_teardown_with_after_option
88
+ test_case = assert_teardown([:teardown,
89
+ :custom_teardown_method3,
90
+ :custom_teardown_method0,
91
+ :custom_teardown_method1],
92
+ [[{:after => :append}],
93
+ [{:after => :append}],
94
+ [{:after => :prepend}],
95
+ [{:after => :prepend}]])
96
+ assert_inherited_teardown([:teardown,
97
+ :custom_teardown_method3,
98
+ :custom_teardown_method0,
99
+ :custom_teardown_method1],
100
+ test_case)
101
+ assert_inherited_teardown([:teardown], nil)
102
+ end
103
+
104
+ def test_teardown_with_invalid_option
105
+ assert_invalid_teardown_option(:unknown => true)
106
+ assert_invalid_teardown_option(:before => :unknown)
107
+ assert_invalid_teardown_option(:after => :unknown)
108
+ end
109
+
110
+ private
111
+ def assert_setup(expected, setup_options)
112
+ called = []
113
+ test_case = Class.new(Test::Unit::TestCase) do
114
+ @@called = called
115
+ def setup
116
+ @@called << :setup
117
+ end
118
+
119
+ setup(*(setup_options[0] || []))
120
+ def custom_setup_method0
121
+ @@called << :custom_setup_method0
122
+ end
123
+
124
+ def custom_setup_method1
125
+ @@called << :custom_setup_method1
126
+ end
127
+ setup(*[:custom_setup_method1, *(setup_options[1] || [])])
128
+
129
+ setup(*(setup_options[2] || []))
130
+ def custom_setup_method2
131
+ @@called << :custom_setup_method2
132
+ end
133
+ unregister_setup(:custom_setup_method2)
134
+
135
+ setup(*(setup_options[3] || []))
136
+ def custom_setup_method3
137
+ @@called << :custom_setup_method3
138
+ end
139
+
140
+ def test_nothing
141
+ end
142
+ end
143
+
144
+ test_case.new("test_nothing").run(Test::Unit::TestResult.new) {}
145
+ assert_equal(expected, called)
146
+ test_case
147
+ end
148
+
149
+ def assert_inherited_setup(expected, parent)
150
+ called = []
151
+ inherited_test_case = Class.new(parent || Test::Unit::TestCase) do
152
+ @@called = called
153
+ def setup
154
+ @@called << :setup
155
+ end
156
+
157
+ def custom_setup_method0
158
+ @@called << :custom_setup_method0
159
+ end
160
+
161
+ def custom_setup_method1
162
+ @@called << :custom_setup_method1
163
+ end
164
+
165
+ def custom_setup_method2
166
+ @@called << :custom_setup_method2
167
+ end
168
+
169
+ def custom_setup_method3
170
+ @@called << :custom_setup_method3
171
+ end
172
+
173
+ def test_nothing
174
+ end
175
+ end
176
+
177
+ inherited_test_case.new("test_nothing").run(Test::Unit::TestResult.new) {}
178
+ assert_equal(expected, called)
179
+ end
180
+
181
+ def assert_teardown(expected, teardown_options)
182
+ called = []
183
+ test_case = Class.new(Test::Unit::TestCase) do
184
+ @@called = called
185
+ def teardown
186
+ @@called << :teardown
187
+ end
188
+
189
+ teardown(*(teardown_options[0] || []))
190
+ def custom_teardown_method0
191
+ @@called << :custom_teardown_method0
192
+ end
193
+
194
+ def custom_teardown_method1
195
+ @@called << :custom_teardown_method1
196
+ end
197
+ teardown(*[:custom_teardown_method1, *(teardown_options[1] || [])])
198
+
199
+ teardown(*(teardown_options[2] || []))
200
+ def custom_teardown_method2
201
+ @@called << :custom_teardown_method2
202
+ end
203
+ unregister_teardown(:custom_teardown_method2)
204
+
205
+ teardown(*(teardown_options[3] || []))
206
+ def custom_teardown_method3
207
+ @@called << :custom_teardown_method3
208
+ end
209
+
210
+ def test_nothing
211
+ end
212
+ end
213
+
214
+ test_case.new("test_nothing").run(Test::Unit::TestResult.new) {}
215
+ assert_equal(expected, called)
216
+ test_case
217
+ end
218
+
219
+ def assert_inherited_teardown(expected, parent)
220
+ called = []
221
+ inherited_test_case = Class.new(parent || Test::Unit::TestCase) do
222
+ @@called = called
223
+ def teardown
224
+ @@called << :teardown
225
+ end
226
+
227
+ def custom_teardown_method0
228
+ @@called << :custom_teardown_method0
229
+ end
230
+
231
+ def custom_teardown_method1
232
+ @@called << :custom_teardown_method1
233
+ end
234
+
235
+ def custom_teardown_method2
236
+ @@called << :custom_teardown_method2
237
+ end
238
+
239
+ def custom_teardown_method3
240
+ @@called << :custom_teardown_method3
241
+ end
242
+
243
+ def test_nothing
244
+ end
245
+ end
246
+
247
+ inherited_test_case.new("test_nothing").run(Test::Unit::TestResult.new) {}
248
+ assert_equal(expected, called)
249
+ end
250
+
251
+ def assert_invalid_option(fixture_type, option)
252
+ exception = assert_raise(ArgumentError) do
253
+ Class.new(Test::Unit::TestCase) do
254
+ def test_nothing
255
+ end
256
+
257
+ send(fixture_type, option)
258
+ def fixture
259
+ end
260
+ end
261
+ end
262
+ assert_equal("must be {:before => :prepend}, {:before => :append}, " +
263
+ "{:after => :prepend} or {:after => :append}" +
264
+ ": #{option.inspect}",
265
+ exception.message)
266
+ end
267
+
268
+ def assert_invalid_setup_option(option)
269
+ assert_invalid_option(:setup, option)
270
+ end
271
+
272
+ def assert_invalid_teardown_option(option)
273
+ assert_invalid_option(:teardown, option)
274
+ end
275
+ end