ActiveSambaLdap 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.
Files changed (180) hide show
  1. data/NEWS.en +40 -0
  2. data/NEWS.ja +44 -0
  3. data/README.en +366 -0
  4. data/README.ja +361 -0
  5. data/Rakefile +168 -0
  6. data/bin/asl-groupadd +73 -0
  7. data/bin/asl-groupadd.help +1 -0
  8. data/bin/asl-groupdel +61 -0
  9. data/bin/asl-groupdel.help +1 -0
  10. data/bin/asl-groupmod +137 -0
  11. data/bin/asl-groupmod.help +1 -0
  12. data/bin/asl-groupshow +33 -0
  13. data/bin/asl-groupshow.help +1 -0
  14. data/bin/asl-passwd +90 -0
  15. data/bin/asl-passwd.help +1 -0
  16. data/bin/asl-populate +101 -0
  17. data/bin/asl-populate.help +1 -0
  18. data/bin/asl-purge +26 -0
  19. data/bin/asl-purge.help +1 -0
  20. data/bin/asl-samba-computeradd +96 -0
  21. data/bin/asl-samba-computeradd.help +1 -0
  22. data/bin/asl-samba-groupadd +57 -0
  23. data/bin/asl-samba-groupadd.help +1 -0
  24. data/bin/asl-samba-groupdel +55 -0
  25. data/bin/asl-samba-groupdel.help +1 -0
  26. data/bin/asl-samba-groupmod +99 -0
  27. data/bin/asl-samba-groupmod.help +1 -0
  28. data/bin/asl-samba-useradd +100 -0
  29. data/bin/asl-samba-useradd.help +1 -0
  30. data/bin/asl-samba-userdel +49 -0
  31. data/bin/asl-samba-userdel.help +1 -0
  32. data/bin/asl-samba-usermod +94 -0
  33. data/bin/asl-samba-usermod.help +1 -0
  34. data/bin/asl-useradd +264 -0
  35. data/bin/asl-useradd.help +1 -0
  36. data/bin/asl-userdel +84 -0
  37. data/bin/asl-userdel.help +1 -0
  38. data/bin/asl-usermod +335 -0
  39. data/bin/asl-usermod.help +1 -0
  40. data/bin/asl-usershow +33 -0
  41. data/bin/asl-usershow.help +1 -0
  42. data/lib/active_samba_ldap.rb +42 -0
  43. data/lib/active_samba_ldap/account_entry.rb +208 -0
  44. data/lib/active_samba_ldap/base.rb +137 -0
  45. data/lib/active_samba_ldap/command.rb +100 -0
  46. data/lib/active_samba_ldap/computer.rb +24 -0
  47. data/lib/active_samba_ldap/computer_account_entry.rb +34 -0
  48. data/lib/active_samba_ldap/configuration.rb +333 -0
  49. data/lib/active_samba_ldap/dc.rb +19 -0
  50. data/lib/active_samba_ldap/entry.rb +81 -0
  51. data/lib/active_samba_ldap/get_text_support.rb +12 -0
  52. data/lib/active_samba_ldap/group.rb +17 -0
  53. data/lib/active_samba_ldap/group_entry.rb +187 -0
  54. data/lib/active_samba_ldap/idmap.rb +19 -0
  55. data/lib/active_samba_ldap/ou.rb +20 -0
  56. data/lib/active_samba_ldap/populate.rb +257 -0
  57. data/lib/active_samba_ldap/reloadable.rb +15 -0
  58. data/lib/active_samba_ldap/samba_account_entry.rb +225 -0
  59. data/lib/active_samba_ldap/samba_entry.rb +26 -0
  60. data/lib/active_samba_ldap/samba_group_entry.rb +143 -0
  61. data/lib/active_samba_ldap/unix_id_pool.rb +43 -0
  62. data/lib/active_samba_ldap/user.rb +44 -0
  63. data/lib/active_samba_ldap/user_account_entry.rb +30 -0
  64. data/lib/active_samba_ldap/version.rb +3 -0
  65. data/lib/samba/encrypt.rb +86 -0
  66. data/misc/rd2html.rb +42 -0
  67. data/po/ja/active-samba-ldap.po +465 -0
  68. data/rails/README +30 -0
  69. data/rails/init.rb +33 -0
  70. data/rails_generators/scaffold_active_samba_ldap/scaffold_active_samba_ldap_generator.rb +27 -0
  71. data/rails_generators/scaffold_active_samba_ldap/templates/computer.rb +3 -0
  72. data/rails_generators/scaffold_active_samba_ldap/templates/dc.rb +3 -0
  73. data/rails_generators/scaffold_active_samba_ldap/templates/group.rb +3 -0
  74. data/rails_generators/scaffold_active_samba_ldap/templates/idmap.rb +3 -0
  75. data/rails_generators/scaffold_active_samba_ldap/templates/ldap.yml +24 -0
  76. data/rails_generators/scaffold_active_samba_ldap/templates/ou.rb +3 -0
  77. data/rails_generators/scaffold_active_samba_ldap/templates/samba_controller.rb +12 -0
  78. data/rails_generators/scaffold_active_samba_ldap/templates/samba_helper.rb +2 -0
  79. data/rails_generators/scaffold_active_samba_ldap/templates/samba_index.rhtml +17 -0
  80. data/rails_generators/scaffold_active_samba_ldap/templates/samba_populate.rhtml +15 -0
  81. data/rails_generators/scaffold_active_samba_ldap/templates/samba_purge.rhtml +10 -0
  82. data/rails_generators/scaffold_active_samba_ldap/templates/unix_id_pool.rb +3 -0
  83. data/rails_generators/scaffold_active_samba_ldap/templates/user.rb +3 -0
  84. data/setup.rb +1585 -0
  85. data/test-unit/History.txt +107 -0
  86. data/test-unit/README.txt +52 -0
  87. data/test-unit/Rakefile +40 -0
  88. data/test-unit/TODO +5 -0
  89. data/test-unit/bin/testrb +5 -0
  90. data/test-unit/lib/test/unit.rb +342 -0
  91. data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
  92. data/test-unit/lib/test/unit/assertions.rb +1149 -0
  93. data/test-unit/lib/test/unit/attribute.rb +125 -0
  94. data/test-unit/lib/test/unit/autorunner.rb +329 -0
  95. data/test-unit/lib/test/unit/collector.rb +43 -0
  96. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  97. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  98. data/test-unit/lib/test/unit/collector/load.rb +135 -0
  99. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  100. data/test-unit/lib/test/unit/color-scheme.rb +86 -0
  101. data/test-unit/lib/test/unit/color.rb +96 -0
  102. data/test-unit/lib/test/unit/diff.rb +538 -0
  103. data/test-unit/lib/test/unit/error.rb +124 -0
  104. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  105. data/test-unit/lib/test/unit/failure.rb +110 -0
  106. data/test-unit/lib/test/unit/fixture.rb +176 -0
  107. data/test-unit/lib/test/unit/notification.rb +125 -0
  108. data/test-unit/lib/test/unit/omission.rb +143 -0
  109. data/test-unit/lib/test/unit/pending.rb +146 -0
  110. data/test-unit/lib/test/unit/priority.rb +181 -0
  111. data/test-unit/lib/test/unit/runner/console.rb +52 -0
  112. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  113. data/test-unit/lib/test/unit/testcase.rb +425 -0
  114. data/test-unit/lib/test/unit/testresult.rb +89 -0
  115. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  116. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  117. data/test-unit/lib/test/unit/ui/console/testrunner.rb +223 -0
  118. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  119. data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
  120. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  121. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  122. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  123. data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
  124. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  125. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  126. data/test-unit/lib/test/unit/version.rb +7 -0
  127. data/test-unit/sample/adder.rb +13 -0
  128. data/test-unit/sample/subtracter.rb +12 -0
  129. data/test-unit/sample/tc_adder.rb +18 -0
  130. data/test-unit/sample/tc_subtracter.rb +18 -0
  131. data/test-unit/sample/test_user.rb +22 -0
  132. data/test-unit/sample/ts_examples.rb +7 -0
  133. data/test-unit/test/collector/test-descendant.rb +135 -0
  134. data/test-unit/test/collector/test-load.rb +333 -0
  135. data/test-unit/test/collector/test_dir.rb +406 -0
  136. data/test-unit/test/collector/test_objectspace.rb +98 -0
  137. data/test-unit/test/run-test.rb +13 -0
  138. data/test-unit/test/test-attribute.rb +86 -0
  139. data/test-unit/test/test-color-scheme.rb +56 -0
  140. data/test-unit/test/test-color.rb +47 -0
  141. data/test-unit/test/test-diff.rb +477 -0
  142. data/test-unit/test/test-emacs-runner.rb +60 -0
  143. data/test-unit/test/test-fixture.rb +287 -0
  144. data/test-unit/test/test-notification.rb +33 -0
  145. data/test-unit/test/test-omission.rb +81 -0
  146. data/test-unit/test/test-pending.rb +70 -0
  147. data/test-unit/test/test-priority.rb +119 -0
  148. data/test-unit/test/test-testcase.rb +507 -0
  149. data/test-unit/test/test_assertions.rb +1082 -0
  150. data/test-unit/test/test_error.rb +26 -0
  151. data/test-unit/test/test_failure.rb +33 -0
  152. data/test-unit/test/test_testresult.rb +113 -0
  153. data/test-unit/test/test_testsuite.rb +129 -0
  154. data/test-unit/test/testunit-test-util.rb +14 -0
  155. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  156. data/test-unit/test/util/test-method-owner-finder.rb +38 -0
  157. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  158. data/test-unit/test/util/test_observable.rb +102 -0
  159. data/test-unit/test/util/test_procwrapper.rb +36 -0
  160. data/test/asl-test-utils.rb +276 -0
  161. data/test/command.rb +67 -0
  162. data/test/config.yaml.sample +17 -0
  163. data/test/run-test.rb +20 -0
  164. data/test/test_asl_groupadd.rb +69 -0
  165. data/test/test_asl_groupdel.rb +88 -0
  166. data/test/test_asl_groupmod.rb +259 -0
  167. data/test/test_asl_groupshow.rb +21 -0
  168. data/test/test_asl_passwd.rb +126 -0
  169. data/test/test_asl_populate.rb +92 -0
  170. data/test/test_asl_purge.rb +21 -0
  171. data/test/test_asl_useradd.rb +712 -0
  172. data/test/test_asl_userdel.rb +75 -0
  173. data/test/test_asl_usermod.rb +549 -0
  174. data/test/test_asl_usershow.rb +27 -0
  175. data/test/test_entry.rb +21 -0
  176. data/test/test_group.rb +21 -0
  177. data/test/test_password.rb +51 -0
  178. data/test/test_samba_encrypt.rb +35 -0
  179. data/test/test_user_home_directory.rb +43 -0
  180. metadata +314 -0
@@ -0,0 +1,7 @@
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
+ require 'tc_adder'
7
+ require 'tc_subtracter'
@@ -0,0 +1,135 @@
1
+ require 'test/unit'
2
+ require 'test/unit/collector/descendant'
3
+
4
+ class TestUnitCollectorDescendant < Test::Unit::TestCase
5
+ def setup
6
+ @previous_descendants = Test::Unit::TestCase::DESCENDANTS.dup
7
+ Test::Unit::TestCase::DESCENDANTS.clear
8
+
9
+ @test_case1 = Class.new(Test::Unit::TestCase) do
10
+ def self.name
11
+ "test-case1"
12
+ end
13
+
14
+ def test_1
15
+ end
16
+
17
+ def test_2
18
+ end
19
+ end
20
+
21
+ @test_case2 = Class.new(Test::Unit::TestCase) do
22
+ def self.name
23
+ "test-case2"
24
+ end
25
+
26
+ def test_0
27
+ end
28
+ end
29
+
30
+ @no_test_case = Class.new do
31
+ def self.name
32
+ "no-test-case"
33
+ end
34
+
35
+ def test_4
36
+ end
37
+ end
38
+ end
39
+
40
+ def teardown
41
+ Test::Unit::TestCase::DESCENDANTS.replace(@previous_descendants)
42
+ end
43
+
44
+ def test_basic_collection
45
+ assert_collect(full_suite("name"), "name")
46
+
47
+ assert_collect(full_suite("name"), "name") do |collector|
48
+ collector.filter = []
49
+ end
50
+ end
51
+
52
+ def test_filtered_collection
53
+ assert_collect(empty_suite) do |collector|
54
+ collector.filter = Proc.new {false}
55
+ end
56
+
57
+ assert_collect(full_suite) do |collector|
58
+ collector.filter = Proc.new {true}
59
+ end
60
+
61
+ assert_collect(full_suite) do |collector|
62
+ collector.filter = Proc.new {nil}
63
+ end
64
+
65
+ assert_collect(empty_suite) do |collector|
66
+ collector.filter = [Proc.new {false}, Proc.new {true}]
67
+ end
68
+
69
+ assert_collect(full_suite) do |collector|
70
+ collector.filter = [Proc.new {true}, Proc.new {false}]
71
+ end
72
+
73
+ assert_collect(empty_suite) do |collector|
74
+ collector.filter = [Proc.new {nil}, Proc.new {false}]
75
+ end
76
+
77
+ assert_collect(full_suite) do |collector|
78
+ collector.filter = [Proc.new {nil}, Proc.new {true}]
79
+ end
80
+
81
+ expected = empty_suite
82
+ suite1 = Test::Unit::TestSuite.new(@test_case1.name)
83
+ suite1 << @test_case1.new("test_1")
84
+ suite2 = Test::Unit::TestSuite.new(@test_case2.name)
85
+ suite2 << @test_case2.new("test_0")
86
+ expected << suite1 << suite2
87
+ assert_collect(expected) do |collector|
88
+ collector.filter = Proc.new do |test|
89
+ ['test_1', 'test_0'].include?(test.method_name)
90
+ end
91
+ end
92
+
93
+ expected = empty_suite
94
+ suite1 = Test::Unit::TestSuite.new(@test_case1.name)
95
+ suite1 << @test_case1.new("test_1")
96
+ suite2 = Test::Unit::TestSuite.new(@test_case2.name)
97
+ suite2 << @test_case2.new("test_0")
98
+ expected << suite1 << suite2
99
+ assert_collect(expected) do |collector|
100
+ filters = [Proc.new {|test| test.method_name == 'test_1' ? true : nil},
101
+ Proc.new {|test| test.method_name == 'test_0' ? true : nil},
102
+ Proc.new {false}]
103
+ collector.filter = filters
104
+ end
105
+ end
106
+
107
+ private
108
+ def assert_collect(expected, *collect_args)
109
+ collector = Test::Unit::Collector::Descendant.new
110
+ yield(collector) if block_given?
111
+ assert_equal(expected, collector.send(:collect, *collect_args))
112
+ end
113
+
114
+ def default_name
115
+ Test::Unit::Collector::Descendant::NAME
116
+ end
117
+
118
+ def empty_suite(name=nil)
119
+ Test::Unit::TestSuite.new(name || default_name)
120
+ end
121
+
122
+ def full_suite(name=nil)
123
+ sub_suite1 = Test::Unit::TestSuite.new(@test_case1.name)
124
+ sub_suite1 << @test_case1.new('test_1')
125
+ sub_suite1 << @test_case1.new('test_2')
126
+
127
+ sub_suite2 = Test::Unit::TestSuite.new(@test_case2.name)
128
+ sub_suite2 << @test_case2.new('test_0')
129
+
130
+ suite = empty_suite(name)
131
+ suite << sub_suite1
132
+ suite << sub_suite2
133
+ suite
134
+ end
135
+ end
@@ -0,0 +1,333 @@
1
+ require 'tmpdir'
2
+ require 'pathname'
3
+
4
+ require 'test/unit'
5
+ require 'test/unit/collector/load'
6
+
7
+ class TestUnitCollectorLoad < Test::Unit::TestCase
8
+ def setup
9
+ @previous_descendants = Test::Unit::TestCase::DESCENDANTS.dup
10
+ Test::Unit::TestCase::DESCENDANTS.clear
11
+
12
+ @temporary_test_cases_module_name = "TempTestCases"
13
+ ::Object.const_set(@temporary_test_cases_module_name, Module.new)
14
+
15
+ @test_dir = Pathname(Dir.tmpdir) + "test-unit"
16
+ @test_dir.rmtree if @test_dir.exist?
17
+ @test_dir.mkpath
18
+ end
19
+
20
+ setup
21
+ def setup_top_level_test_cases
22
+ @test_case1 = @test_dir + "test_case1.rb"
23
+ @test_case2 = @test_dir + "test_case2.rb"
24
+ @no_load_test_case3 = @test_dir + "case3.rb"
25
+
26
+ @test_case1.open("w") do |test_case|
27
+ test_case.puts(<<-EOT)
28
+ module #{@temporary_test_cases_module_name}
29
+ class TestCase1 < Test::Unit::TestCase
30
+ def test1_1
31
+ end
32
+
33
+ def test1_2
34
+ end
35
+ end
36
+ end
37
+ EOT
38
+ end
39
+
40
+ @test_case2.open("w") do |test_case|
41
+ test_case.puts(<<-EOT)
42
+ module #{@temporary_test_cases_module_name}
43
+ class TestCase2 < Test::Unit::TestCase
44
+ def test2
45
+ end
46
+ end
47
+ end
48
+ EOT
49
+ end
50
+
51
+ @no_load_test_case3.open("w") do |test_case|
52
+ test_case.puts(<<-EOT)
53
+ module #{@temporary_test_cases_module_name}
54
+ class NoLoadTestCase3 < Test::Unit::TestCase
55
+ def test3
56
+ end
57
+ end
58
+ end
59
+ EOT
60
+ end
61
+ end
62
+
63
+ setup
64
+ def setup_sub_level_test_cases
65
+ @sub_test_dir = @test_dir + "sub"
66
+ @sub_test_dir.mkpath
67
+
68
+ @sub_test_case4 = @sub_test_dir + "test_case4.rb"
69
+ @no_load_sub_test_case5 = @sub_test_dir + "case5.rb"
70
+ @sub_test_case6 = @sub_test_dir + "test_case6.rb"
71
+
72
+ @sub_test_case4.open("w") do |test_case|
73
+ test_case.puts(<<-EOT)
74
+ module #{@temporary_test_cases_module_name}
75
+ class SubTestCase4 < Test::Unit::TestCase
76
+ def test4_1
77
+ end
78
+
79
+ def test4_2
80
+ end
81
+ end
82
+ end
83
+ EOT
84
+ end
85
+
86
+ @no_load_sub_test_case5.open("w") do |test_case|
87
+ test_case.puts(<<-EOT)
88
+ module #{@temporary_test_cases_module_name}
89
+ class NoLoadSubTestCase5 < Test::Unit::TestCase
90
+ def test5_1
91
+ end
92
+
93
+ def test5_2
94
+ end
95
+ end
96
+ end
97
+ EOT
98
+ end
99
+
100
+ @sub_test_case6.open("w") do |test_case|
101
+ test_case.puts(<<-EOT)
102
+ module #{@temporary_test_cases_module_name}
103
+ class SubTestCase6 < Test::Unit::TestCase
104
+ def test6
105
+ end
106
+ end
107
+ end
108
+ EOT
109
+ end
110
+ end
111
+
112
+ setup
113
+ def setup_sub_level_test_cases2
114
+ @sub2_test_dir = @test_dir + "sub2"
115
+ @sub2_test_dir.mkpath
116
+
117
+ @no_load_sub2_test_case7 = @sub2_test_dir + "case7.rb"
118
+ @sub2_test_case8 = @sub2_test_dir + "test_case8.rb"
119
+ @sub2_test_case9 = @sub2_test_dir + "test_case9.rb"
120
+
121
+ @no_load_sub2_test_case7.open("w") do |test_case|
122
+ test_case.puts(<<-EOT)
123
+ module #{@temporary_test_cases_module_name}
124
+ class NoLoadSub2TestCase7 < Test::Unit::TestCase
125
+ def test7_1
126
+ end
127
+
128
+ def test7_2
129
+ end
130
+ end
131
+ end
132
+ EOT
133
+ end
134
+
135
+ @sub2_test_case8.open("w") do |test_case|
136
+ test_case.puts(<<-EOT)
137
+ module #{@temporary_test_cases_module_name}
138
+ class Sub2TestCase8 < Test::Unit::TestCase
139
+ def test8_1
140
+ end
141
+
142
+ def test8_2
143
+ end
144
+ end
145
+ end
146
+ EOT
147
+ end
148
+
149
+ @sub2_test_case9.open("w") do |test_case|
150
+ test_case.puts(<<-EOT)
151
+ module #{@temporary_test_cases_module_name}
152
+ class Sub2TestCase9 < Test::Unit::TestCase
153
+ def test9
154
+ end
155
+ end
156
+ end
157
+ EOT
158
+ end
159
+ end
160
+
161
+ setup
162
+ def setup_svn_test_cases
163
+ @svn_test_dir = @test_dir + ".svn"
164
+ @svn_test_dir.mkpath
165
+
166
+ @svn_test_case10 = @svn_test_dir + "test_case10.rb"
167
+
168
+ @svn_test_case10.open("w") do |test_case|
169
+ test_case.puts(<<-EOT)
170
+ module #{@temporary_test_cases_module_name}
171
+ class SvnTestCase10 < Test::Unit::TestCase
172
+ def test7
173
+ end
174
+ end
175
+ end
176
+ EOT
177
+ end
178
+ end
179
+
180
+ setup
181
+ def setup_sub_cvs_test_cases
182
+ @sub_cvs_test_dir = @sub_test_dir + "CVS"
183
+ @sub_cvs_test_dir.mkpath
184
+
185
+ @sub_cvs_test_case11 = @sub_cvs_test_dir + "test_case11.rb"
186
+
187
+ @sub_cvs_test_case11.open("w") do |test_case|
188
+ test_case.puts(<<-EOT)
189
+ module #{@temporary_test_cases_module_name}
190
+ class SubCVSTestCase11 < Test::Unit::TestCase
191
+ def test11
192
+ end
193
+ end
194
+ end
195
+ EOT
196
+ end
197
+ end
198
+
199
+ def teardown
200
+ @test_dir.rmtree if @test_dir.exist?
201
+ ::Object.send(:remove_const, @temporary_test_cases_module_name)
202
+ Test::Unit::TestCase::DESCENDANTS.replace(@previous_descendants)
203
+ end
204
+
205
+ def test_simple_collect
206
+ assert_collect([:suite, {:name => @sub_test_dir.basename.to_s},
207
+ [:suite, {:name => _test_case_name("SubTestCase4")},
208
+ [:test, {:name => "test4_1"}],
209
+ [:test, {:name => "test4_2"}]],
210
+ [:suite, {:name => _test_case_name("SubTestCase6")},
211
+ [:test, {:name => "test6"}]]],
212
+ @sub_test_dir.to_s)
213
+ end
214
+
215
+ def test_multilevel_collect
216
+ assert_collect([:suite, {:name => "."},
217
+ [:suite, {:name => _test_case_name("TestCase1")},
218
+ [:test, {:name => "test1_1"}],
219
+ [:test, {:name => "test1_2"}]],
220
+ [:suite, {:name => _test_case_name("TestCase2")},
221
+ [:test, {:name => "test2"}]],
222
+ [:suite, {:name => @sub_test_dir.basename.to_s},
223
+ [:suite, {:name => _test_case_name("SubTestCase4")},
224
+ [:test, {:name => "test4_1"}],
225
+ [:test, {:name => "test4_2"}]],
226
+ [:suite, {:name => _test_case_name("SubTestCase6")},
227
+ [:test, {:name => "test6"}]]],
228
+ [:suite, {:name => @sub2_test_dir.basename.to_s},
229
+ [:suite, {:name => _test_case_name("Sub2TestCase8")},
230
+ [:test, {:name => "test8_1"}],
231
+ [:test, {:name => "test8_2"}]],
232
+ [:suite, {:name => _test_case_name("Sub2TestCase9")},
233
+ [:test, {:name => "test9"}]]]])
234
+ end
235
+
236
+ def test_collect_file
237
+ assert_collect([:suite, {:name => @test_case1.basename.to_s},
238
+ [:suite, {:name => _test_case_name("TestCase1")},
239
+ [:test, {:name => "test1_1"}],
240
+ [:test, {:name => "test1_2"}]]],
241
+ @test_case1.to_s)
242
+
243
+ assert_collect([:suite, {:name => @no_load_sub_test_case5.basename.to_s},
244
+ [:suite, {:name => _test_case_name("NoLoadSubTestCase5")},
245
+ [:test, {:name => "test5_1"}],
246
+ [:test, {:name => "test5_2"}]]],
247
+ @no_load_sub_test_case5.to_s)
248
+ end
249
+
250
+ def test_nil_pattern
251
+ assert_collect([:suite, {:name => @sub_test_dir.basename.to_s},
252
+ [:suite, {:name => _test_case_name("NoLoadSubTestCase5")},
253
+ [:test, {:name => "test5_1"}],
254
+ [:test, {:name => "test5_2"}]],
255
+ [:suite, {:name => _test_case_name("SubTestCase4")},
256
+ [:test, {:name => "test4_1"}],
257
+ [:test, {:name => "test4_2"}]],
258
+ [:suite, {:name => _test_case_name("SubTestCase6")},
259
+ [:test, {:name => "test6"}]]],
260
+ @sub_test_dir.to_s) do |collector|
261
+ collector.patterns.clear
262
+ end
263
+ end
264
+
265
+ def test_filtering
266
+ assert_collect([:suite, {:name => "."},
267
+ [:suite, {:name => _test_case_name("TestCase1")},
268
+ [:test, {:name => "test1_1"}],
269
+ [:test, {:name => "test1_2"}]]]) do |collector|
270
+ collector.filter = Proc.new do |test|
271
+ !/\Atest1/.match(test.method_name).nil?
272
+ end
273
+ end
274
+ end
275
+
276
+ def test_collect_multi
277
+ test_dirs = [@sub_test_dir.to_s, @sub2_test_dir.to_s]
278
+ assert_collect([:suite, {:name => "[#{test_dirs.join(', ')}]"},
279
+ [:suite, {:name => @sub_test_dir.basename.to_s},
280
+ [:suite, {:name => _test_case_name("SubTestCase4")},
281
+ [:test, {:name => "test4_1"}],
282
+ [:test, {:name => "test4_2"}]],
283
+ [:suite, {:name => _test_case_name("SubTestCase6")},
284
+ [:test, {:name => "test6"}]]],
285
+ [:suite, {:name => @sub2_test_dir.basename.to_s},
286
+ [:suite, {:name => _test_case_name("Sub2TestCase8")},
287
+ [:test, {:name => "test8_1"}],
288
+ [:test, {:name => "test8_2"}]],
289
+ [:suite, {:name => _test_case_name("Sub2TestCase9")},
290
+ [:test, {:name => "test9"}]]]],
291
+ *test_dirs)
292
+ end
293
+
294
+ private
295
+ def assert_collect(expected, *collect_args)
296
+ keep_required_files do
297
+ Dir.chdir(@test_dir.to_s) do
298
+ collector = Test::Unit::Collector::Load.new
299
+ yield(collector) if block_given?
300
+ actual = inspect_test_object(collector.send(:collect, *collect_args))
301
+ assert_equal(expected, actual)
302
+ end
303
+ end
304
+ end
305
+
306
+ def keep_required_files
307
+ required_files = $".dup
308
+ yield
309
+ ensure
310
+ $".replace(required_files)
311
+ end
312
+
313
+ def _test_case_name(test_case_class_name)
314
+ "#{@temporary_test_cases_module_name}::#{test_case_class_name}"
315
+ end
316
+
317
+ def inspect_test_object(test_object)
318
+ return nil if test_object.nil?
319
+ case test_object
320
+ when Test::Unit::TestSuite
321
+ sub_tests = test_object.tests.collect do |test|
322
+ inspect_test_object(test)
323
+ end.sort_by do |type, attributes, *children|
324
+ attributes[:name]
325
+ end
326
+ [:suite, {:name => test_object.name}, *sub_tests]
327
+ when Test::Unit::TestCase
328
+ [:test, {:name => test_object.method_name}]
329
+ else
330
+ raise "unexpected test object: #{test_object.inspect}"
331
+ end
332
+ end
333
+ end