activeldap 0.10.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/CHANGES +6 -30
  2. data/README +4 -2
  3. data/Rakefile +7 -0
  4. data/data/locale/en/LC_MESSAGES/active-ldap.mo +0 -0
  5. data/data/locale/ja/LC_MESSAGES/active-ldap.mo +0 -0
  6. data/examples/al-admin/po/en/al-admin.po +3 -3
  7. data/examples/al-admin/po/ja/al-admin.po +3 -3
  8. data/examples/al-admin/po/nl/al-admin.po +3 -3
  9. data/lib/active_ldap/adapter/base.rb +0 -2
  10. data/lib/active_ldap/base.rb +4 -2
  11. data/lib/active_ldap/get_text_support.rb +3 -11
  12. data/lib/active_ldap/operations.rb +1 -0
  13. data/lib/active_ldap/schema/syntaxes.rb +5 -3
  14. data/lib/active_ldap/validations.rb +25 -15
  15. data/lib/active_ldap.rb +1 -1
  16. data/po/en/active-ldap.po +1 -1
  17. data/po/ja/active-ldap.po +1 -1
  18. data/rails/plugin/active_ldap/init.rb +1 -1
  19. data/test/run-test.rb +2 -0
  20. data/test/test_base.rb +63 -1
  21. data/test/test_syntax.rb +3 -2
  22. data/test-unit-ext/NEWS.en +28 -0
  23. data/test-unit-ext/NEWS.ja +28 -0
  24. data/test-unit-ext/README.en +247 -0
  25. data/test-unit-ext/README.ja +246 -0
  26. data/test-unit-ext/Rakefile +111 -0
  27. data/{test → test-unit-ext/lib}/test-unit-ext/always-show-result.rb +0 -0
  28. data/test-unit-ext/lib/test-unit-ext/assertions.rb +40 -0
  29. data/test-unit-ext/lib/test-unit-ext/attributes.rb +129 -0
  30. data/{test → test-unit-ext/lib}/test-unit-ext/backtrace-filter.rb +0 -0
  31. data/test-unit-ext/lib/test-unit-ext/color.rb +59 -0
  32. data/test-unit-ext/lib/test-unit-ext/colorized-runner.rb +111 -0
  33. data/test-unit-ext/lib/test-unit-ext/diff.rb +516 -0
  34. data/{test → test-unit-ext/lib}/test-unit-ext/long-display-for-emacs.rb +0 -0
  35. data/test-unit-ext/lib/test-unit-ext/notification.rb +79 -0
  36. data/test-unit-ext/lib/test-unit-ext/omission.rb +96 -0
  37. data/test-unit-ext/lib/test-unit-ext/pending.rb +97 -0
  38. data/{test → test-unit-ext/lib}/test-unit-ext/priority.rb +25 -53
  39. data/test-unit-ext/lib/test-unit-ext/version.rb +3 -0
  40. data/test-unit-ext/lib/test-unit-ext/xml-report.rb +224 -0
  41. data/test-unit-ext/lib/test-unit-ext.rb +16 -0
  42. data/test-unit-ext/misc/rd2html.rb +42 -0
  43. data/test-unit-ext/test/run-test.rb +14 -0
  44. data/test-unit-ext/test/test_attributes.rb +139 -0
  45. data/test-unit-ext/test/test_color.rb +39 -0
  46. data/test-unit-ext/test/test_diff.rb +475 -0
  47. data/test-unit-ext/test/test_notification.rb +32 -0
  48. data/test-unit-ext/test/test_omission.rb +64 -0
  49. data/test-unit-ext/test/test_pending.rb +64 -0
  50. data/test-unit-ext/test/test_priority.rb +88 -0
  51. data/test-unit-ext/test/test_xml_report.rb +161 -0
  52. metadata +34 -7
  53. data/test/test-unit-ext.rb +0 -4
@@ -0,0 +1,97 @@
1
+ module Test
2
+ module Unit
3
+ class TestResult
4
+ attr_reader :pendings
5
+
6
+ alias_method(:initialize_without_pendings, :initialize)
7
+ def initialize
8
+ initialize_without_pendings
9
+ @pendings = []
10
+ end
11
+
12
+ def add_pending(pending)
13
+ @pendings << pending
14
+ notify_listeners(FAULT, pending)
15
+ notify_listeners(CHANGED, self)
16
+ end
17
+
18
+ def pending_count
19
+ @pendings.size
20
+ end
21
+
22
+ alias_method(:to_s_without_pendings, :to_s)
23
+ def to_s
24
+ to_s_without_pendings + ", #{pending_count} pendings"
25
+ end
26
+ end
27
+
28
+ class Pending
29
+ include Util::BacktraceFilter
30
+ attr_reader :test_name, :location, :message
31
+
32
+ SINGLE_CHARACTER = 'P'
33
+
34
+ # Creates a new Pending with the given location and
35
+ # message.
36
+ def initialize(test_name, location, message)
37
+ @test_name = test_name
38
+ @location = location
39
+ @message = message
40
+ end
41
+
42
+ # Returns a single character representation of a pending.
43
+ def single_character_display
44
+ SINGLE_CHARACTER
45
+ end
46
+
47
+ # Returns a brief version of the error description.
48
+ def short_display
49
+ "#@test_name: #{@message.split("\n")[0]}"
50
+ end
51
+
52
+ # Returns a verbose version of the error description.
53
+ def long_display
54
+ location_display = filter_backtrace(location)[0]
55
+ location_display = location_display.sub(/\A(.+:\d+).*/, ' [\\1]')
56
+ "Pending:\n#{@test_name}#{location_display}:\n#{@message}"
57
+ end
58
+
59
+ # Overridden to return long_display.
60
+ def to_s
61
+ long_display
62
+ end
63
+ end
64
+
65
+ class PendedError < StandardError
66
+ end
67
+
68
+ module AssertionsWithPend
69
+ def pend(message="Pended", &block)
70
+ if block_given?
71
+ begin
72
+ yield
73
+ rescue Exception
74
+ raise PendedError, message, $!.backtrace
75
+ end
76
+ flunk("Pending block should not be passed: #{message}")
77
+ else
78
+ raise PendedError.new(message)
79
+ end
80
+ end
81
+ end
82
+
83
+ class TestCase
84
+ include AssertionsWithPend
85
+
86
+ alias_method(:add_error_without_pending, :add_error)
87
+ def add_error(exception)
88
+ if exception.is_a?(PendedError)
89
+ pending = Pending.new(name, exception.backtrace, exception.message)
90
+ @_result.add_pending(pending)
91
+ else
92
+ add_error_without_pending(exception)
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
@@ -1,53 +1,25 @@
1
1
  require "test/unit"
2
2
 
3
3
  require "fileutils"
4
+ require "tmpdir"
5
+
6
+ require "test-unit-ext/attributes"
4
7
 
5
8
  module Test
6
9
  module Unit
7
10
  class TestCase
8
11
  class << self
9
- def inherited(sub)
10
- super
11
- sub.instance_variable_set("@priority_initialized", true)
12
- sub.instance_variable_set("@priority_table", {})
13
- sub.priority :normal
14
- end
15
-
16
- def include(*args)
17
- args.reverse_each do |mod|
18
- super(mod)
19
- next unless defined?(@priority_initialized)
20
- mod.instance_methods(false).each do |name|
21
- set_priority(name)
22
- end
23
- end
24
- end
25
-
26
- alias_method :method_added_without_priority, :method_added
27
- def method_added(name)
28
- method_added_without_priority(name)
29
- set_priority(name) if defined?(@priority_initialized)
30
- end
31
-
32
12
  def priority(name, *tests)
33
13
  singleton_class = (class << self; self; end)
34
14
  priority_check_method = priority_check_method_name(name)
35
15
  unless singleton_class.private_method_defined?(priority_check_method)
36
16
  raise ArgumentError, "unknown priority: #{name}"
37
17
  end
38
- if tests.empty?
39
- @current_priority = name
40
- else
41
- tests.each do |test|
42
- set_priority(test, name)
43
- end
44
- end
18
+ attribute(:priority, name, {:keep => true}, *tests)
45
19
  end
46
20
 
47
21
  def need_to_run?(test_name)
48
- normalized_test_name = normalize_test_name(test_name)
49
- priority = @priority_table[normalized_test_name]
50
- return true unless priority
22
+ priority = (attributes(test_name) || {})[:priority] || :normal
51
23
  __send__(priority_check_method_name(priority), test_name)
52
24
  end
53
25
 
@@ -56,10 +28,6 @@ module Test
56
28
  "run_priority_#{priority_name}?"
57
29
  end
58
30
 
59
- def normalize_test_name(test_name)
60
- "test_#{test_name.to_s.sub(/^test_/, '')}"
61
- end
62
-
63
31
  def set_priority(name, priority=@current_priority)
64
32
  @priority_table[normalize_test_name(name)] = priority
65
33
  end
@@ -93,9 +61,9 @@ module Test
93
61
  !previous_test_success? or self.class.need_to_run?(@method_name)
94
62
  end
95
63
 
96
- alias_method :original_run, :run
64
+ alias_method :run_without_priority, :run
97
65
  def run(result, &block)
98
- original_run(result, &block)
66
+ run_without_priority(result, &block)
99
67
  ensure
100
68
  if passed?
101
69
  FileUtils.touch(passed_file)
@@ -111,18 +79,22 @@ module Test
111
79
 
112
80
  def result_dir
113
81
  components = [".test-result", self.class.name, @method_name.to_s]
114
- dir = File.join(File.dirname($0), *components)
115
- dir = File.expand_path(dir)
116
- begin
117
- FileUtils.mkdir_p(dir)
118
- rescue Errno::EACCES
119
- retry_dir = File.join(File.dirname(__FILE__), "..", *components)
120
- retry_dir = File.expand_path(retry_dir)
121
- raise if retry_dir == dir
122
- dir = retry_dir
123
- retry
124
- end
125
- dir
82
+ parent_directories = [File.dirname($0),
83
+ File.join(File.dirname(__FILE__), ".."),
84
+ Dir.pwd]
85
+ if Process.respond_to?(:uid)
86
+ parent_directories << File.join(Dir.tmpdir, Process.uid.to_s)
87
+ end
88
+ parent_directories.each do |parent_directory|
89
+ dir = File.expand_path(File.join(parent_directory, *components))
90
+ begin
91
+ FileUtils.mkdir_p(dir)
92
+ return dir
93
+ rescue Errno::EACCES
94
+ end
95
+ end
96
+
97
+ raise Errno::EACCES, parent_directories.join(", ")
126
98
  end
127
99
 
128
100
  def passed_file
@@ -150,14 +122,14 @@ module Test
150
122
  end
151
123
  end
152
124
 
153
- alias_method :original_run, :run
125
+ alias_method :run_without_priority_support, :run
154
126
  def run(*args, &block)
155
127
  priority_mode = @@priority_mode
156
128
  if priority_mode
157
129
  @original_tests = @tests
158
130
  apply_priority
159
131
  end
160
- original_run(*args, &block)
132
+ run_without_priority_support(*args, &block)
161
133
  ensure
162
134
  @tests = @original_tests if priority_mode
163
135
  end
@@ -0,0 +1,3 @@
1
+ module TestUnitExt
2
+ VERSION = "0.6.0"
3
+ end
@@ -0,0 +1,224 @@
1
+ require "erb"
2
+ require "test/unit/failure"
3
+ require "test/unit/error"
4
+ require "test/unit/testresult"
5
+ require "test/unit/testsuite"
6
+ require "test/unit/autorunner"
7
+
8
+ module Test
9
+ module Unit
10
+ module XMLReportable
11
+ include ERB::Util
12
+
13
+ def to_xml
14
+ <<-XML.gsub(/\s*(\n <\/test>|\n<\/result>)/m, "\\1")
15
+ <result>
16
+ <test_case>
17
+ <name>#{h(@test.class.name)}</name>
18
+ <description/>
19
+ </test_case>
20
+ <test>
21
+ <name>#{h(@test.method_name)}</name>
22
+ <description/>
23
+ #{options_xml}
24
+ </test>
25
+ <status>#{h(status_name)}</status>
26
+ <detail>#{h(message)}</detail>
27
+ <elapsed>#{h(elapsed_time)}</elapsed>
28
+ #{backtrace_xml}
29
+ </result>
30
+ XML
31
+ end
32
+
33
+ private
34
+ def options_xml
35
+ @test.attributes.collect do |key, value|
36
+ <<-XML
37
+ <option>
38
+ <name>#{h(key)}</name>
39
+ <value>#{h(value)}</value>
40
+ </option>
41
+ XML
42
+ end.join
43
+ end
44
+
45
+ def backtrace_xml
46
+ entries = backtrace_entries_xml
47
+ if entries.empty?
48
+ ""
49
+ else
50
+ <<-XML
51
+ <backtrace>
52
+ #{entries.join.rstrip}
53
+ </backtrace>
54
+ XML
55
+ end
56
+ end
57
+
58
+ def backtrace_entries_xml
59
+ location.collect do |location|
60
+ file, line, info = location.split(/:(\d+):/)
61
+ <<-XML
62
+ <entry>
63
+ <file>#{h(file)}</file>
64
+ <line>#{h(line)}</line>
65
+ <info>#{h(info.to_s.strip)}</info>
66
+ </entry>
67
+ XML
68
+ end
69
+ end
70
+ end
71
+
72
+ class Success
73
+ include XMLReportable
74
+
75
+ attr_reader :test, :elapsed_time
76
+ def initialize(test, elapsed_time)
77
+ @test = test
78
+ @elapsed_time = elapsed_time
79
+ end
80
+
81
+ def message
82
+ nil
83
+ end
84
+
85
+ def location
86
+ []
87
+ end
88
+
89
+ def test_name
90
+ @test.name
91
+ end
92
+
93
+ def test_case_name
94
+ /\((.*)\)\z/ =~ test_name
95
+ $1
96
+ end
97
+
98
+ def status_name
99
+ "success"
100
+ end
101
+ end
102
+
103
+ class Failure
104
+ include XMLReportable
105
+
106
+ attr_accessor :test, :elapsed_time
107
+
108
+ def status_name
109
+ "failure"
110
+ end
111
+ end
112
+
113
+ class Error
114
+ include XMLReportable
115
+
116
+ attr_accessor :test, :elapsed_time
117
+
118
+ def status_name
119
+ "error"
120
+ end
121
+
122
+ def location
123
+ filter_backtrace(@exception.backtrace)
124
+ end
125
+ end
126
+
127
+ class TestCase
128
+ alias_method(:run_without_success_notify, :run)
129
+ def run(result, &block)
130
+ @_start_time = Time.now
131
+ run_result = run_without_success_notify(result, &block)
132
+ result.add_success(Success.new(self, Time.now - @_start_time)) if passed?
133
+ run_result
134
+ end
135
+
136
+ alias_method(:add_failure_without_test_case_set, :add_failure)
137
+ def add_failure(*args)
138
+ add_failure_without_test_case_set(*args)
139
+ failure = @_result.failures.last
140
+ failure.test = self
141
+ failure.elapsed_time = Time.now - @_start_time
142
+ end
143
+
144
+ alias_method(:add_error_without_test_case_set, :add_error)
145
+ def add_error(*args)
146
+ add_error_without_test_case_set(*args)
147
+ error = @_result.errors.last
148
+ error.test = self
149
+ error.elapsed_time = Time.now - @_start_time
150
+ end
151
+ end
152
+
153
+ class TestResult
154
+ attr_reader :failures, :errors
155
+
156
+ alias_method(:initialize_without_successes, :initialize)
157
+ def initialize
158
+ initialize_without_successes
159
+ @successes = []
160
+ @logs = []
161
+ end
162
+
163
+ def add_success(success)
164
+ @logs << success
165
+ @successes << success
166
+ end
167
+
168
+ alias_method(:add_failure_without_logs_store, :add_failure)
169
+ def add_failure(failure)
170
+ @logs << failure
171
+ add_failure_without_logs_store(failure)
172
+ end
173
+
174
+ alias_method(:add_error_without_logs_store, :add_error)
175
+ def add_error(error)
176
+ @logs << error
177
+ add_error_without_logs_store(error)
178
+ end
179
+
180
+ def to_xml
181
+ return "<report/>" if @logs.empty?
182
+ xml = @logs.collect {|log| log.to_xml.gsub(/^/, " ")}.join
183
+ "<report>\n#{xml}</report>\n"
184
+ end
185
+ end
186
+
187
+ class TestSuite
188
+ attr_reader :result
189
+
190
+ alias_method(:run_without_keep_result, :run)
191
+ def run(result, &block)
192
+ @result = result
193
+ run_without_keep_result(result, &block)
194
+ end
195
+ end
196
+
197
+ class AutoRunner
198
+ alias_method(:options_without_xml_report_support, :options)
199
+ def options
200
+ opt = options_without_xml_report_support
201
+ @xml_report_support_option_added ||= false
202
+ unless @xml_report_support_option_added
203
+ @xml_report_file = nil
204
+ opt.on('--xml-report=FILE',
205
+ "Output test report in XML to FILE.") do |file|
206
+ @xml_report_file = file
207
+ end
208
+ end
209
+ opt
210
+ end
211
+
212
+ alias_method(:run_without_xml_report_support, :run)
213
+ def run
214
+ passed = run_without_xml_report_support
215
+ if @xml_report_file
216
+ File.open(@xml_report_file, "w") do |f|
217
+ f.print(@suite.result.to_xml)
218
+ end
219
+ end
220
+ passed
221
+ end
222
+ end
223
+ end
224
+ end
@@ -0,0 +1,16 @@
1
+ require "test/unit"
2
+
3
+ require "test-unit-ext/version"
4
+ require "test-unit-ext/color"
5
+ require "test-unit-ext/colorized-runner"
6
+ require "test-unit-ext/diff"
7
+ require "test-unit-ext/always-show-result"
8
+ require "test-unit-ext/attributes"
9
+ require "test-unit-ext/priority"
10
+ require "test-unit-ext/backtrace-filter"
11
+ require "test-unit-ext/long-display-for-emacs"
12
+ require "test-unit-ext/xml-report"
13
+ require "test-unit-ext/assertions"
14
+ require "test-unit-ext/pending"
15
+ require "test-unit-ext/omission"
16
+ require "test-unit-ext/notification"
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ top = File.expand_path(File.join(File.dirname(__FILE__), ".."))
4
+ html_dir = File.join(top, "html")
5
+
6
+ require "fileutils"
7
+
8
+ css = "base.css"
9
+ kcode = "utf8"
10
+
11
+ options = [
12
+ "-I#{File.join(top, 'misc')}",
13
+ "-S",
14
+ "rd2",
15
+ "-rrd/rd2html-lib",
16
+ "--out-code=#{kcode}",
17
+ proc do |f|
18
+ "--html-title=#{File.basename(f)}"
19
+ end,
20
+ # proc do |f|
21
+ # "--with-css=#{css}"
22
+ # end,
23
+ proc do |f|
24
+ f
25
+ end
26
+ ]
27
+
28
+ Dir[File.join(top, "*.{ja,en}")].each do |f|
29
+ if /(README|NEWS)\.(ja|en)\z/ =~ f
30
+ args = options.collect do |x|
31
+ if x.respond_to?(:call)
32
+ x.call(f)
33
+ else
34
+ x
35
+ end
36
+ end
37
+ output_base = File.basename(f).downcase.sub(/(ja|en)\z/, "html.\\1")
38
+ File.open(File.join(html_dir, output_base), "w") do |out|
39
+ out.puts(`ruby #{args.flatten.join(' ')}`)
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift("./lib")
4
+ $LOAD_PATH.unshift("./test")
5
+
6
+ require "test-unit-ext"
7
+
8
+ Dir.glob("test/**/test_*.rb") do |test|
9
+ begin
10
+ require test
11
+ rescue LoadError
12
+ puts "Can't load: #{test}: #{$!.message}"
13
+ end
14
+ end
@@ -0,0 +1,139 @@
1
+ require 'test-unit-ext'
2
+
3
+ class TestAttributes < Test::Unit::TestCase
4
+ class TestStack < Test::Unit::TestCase
5
+ class << self
6
+ def suite
7
+ Test::Unit::TestSuite.new(name)
8
+ end
9
+ end
10
+
11
+ class Stack
12
+ def initialize
13
+ @data = []
14
+ end
15
+
16
+ def push(data)
17
+ @data.push(data)
18
+ end
19
+
20
+ def peek
21
+ @data[-2]
22
+ end
23
+
24
+ def empty?
25
+ @data.empty?
26
+ end
27
+
28
+ def size
29
+ @data.size + 11
30
+ end
31
+ end
32
+
33
+ def setup
34
+ @stack = Stack.new
35
+ end
36
+
37
+ attribute :category, :accessor
38
+ def test_peek
39
+ @stack.push(1)
40
+ @stack.push(2)
41
+ assert_equal(2, @stack.peek)
42
+ end
43
+
44
+ attribute :bug, 1234
45
+ def test_bug_1234
46
+ assert_equal(0, @stack.size)
47
+ end
48
+
49
+ def test_no_attributes
50
+ assert(@stack.empty?)
51
+ @stack.push(1)
52
+ assert(!@stack.empty?)
53
+ assert_equal(1, @stack.size)
54
+ end
55
+ end
56
+
57
+ def test_set_attributes
58
+ test_for_bug_1234 = TestStack.new("test_bug_1234")
59
+ assert_equal({:bug => 1234}, test_for_bug_1234.attributes)
60
+
61
+ test_no_attributes = TestStack.new("test_no_attributes")
62
+ assert_equal({}, test_no_attributes.attributes)
63
+ end
64
+
65
+ def test_show_attributes
66
+ assert_stack_size_line = search_line('assert_equal(0, @stack.size)')
67
+ assert_peek_line = search_line('assert_equal(2, @stack.peek)')
68
+ first_arg_end_line = search_line("\"+ 11\"],")
69
+ method_name = "test_show_attributes"
70
+ assert_result(["Failure:\n" \
71
+ "test_peek(TestAttributes::TestStack)\n" \
72
+ " category: accessor\n" \
73
+ "#{__FILE__}:#{assert_peek_line}:in `test_peek'\n" \
74
+ "#{__FILE__}:#{first_arg_end_line}:in `#{method_name}':\n" \
75
+ "<2> expected but was\n" \
76
+ "<1>.\n" \
77
+ "\n" \
78
+ "diff:\n" \
79
+ "- 2\n" \
80
+ "+ 1",
81
+ "Failure:\n" \
82
+ "test_bug_1234(TestAttributes::TestStack)\n" \
83
+ " bug: 1234\n" \
84
+ "#{__FILE__}:#{assert_stack_size_line}:in `test_bug_1234'\n" \
85
+ "#{__FILE__}:#{first_arg_end_line}:in `#{method_name}':\n" \
86
+ "<0> expected but was\n" \
87
+ "<11>.\n" \
88
+ "\n" \
89
+ "diff:\n" \
90
+ "- 0\n" \
91
+ "+ 11"],
92
+ [],
93
+ ["test_peek", "test_bug_1234"])
94
+ end
95
+
96
+ def test_not_show_attributes
97
+ assert_line = search_line('assert_equal(1, @stack.size')
98
+ first_arg_end_line = search_line("\"+ 12\"],")
99
+ method_name = "test_not_show_attributes"
100
+ assert_result(["Failure:\n" \
101
+ "test_no_attributes(TestAttributes::TestStack)\n" \
102
+ "#{__FILE__}:#{assert_line}:in `test_no_attributes'\n" \
103
+ "#{__FILE__}:#{first_arg_end_line}:in `#{method_name}':\n" \
104
+ "<1> expected but was\n" \
105
+ "<12>.\n" \
106
+ "\n" \
107
+ "diff:\n" \
108
+ "- 1\n" \
109
+ "+ 12"],
110
+ [],
111
+ ["test_no_attributes"])
112
+ end
113
+
114
+ private
115
+ def search_line(pattern)
116
+ if pattern.is_a?(String)
117
+ pattern = /#{Regexp.escape(pattern)}/
118
+ end
119
+ File.open(__FILE__) do |file|
120
+ while line = file.gets
121
+ return file.lineno if pattern =~ line
122
+ end
123
+ end
124
+ nil
125
+ end
126
+
127
+ def assert_result(failure_results, error_results, names)
128
+ tests = names.collect {|name| TestStack.new(name)}
129
+ result = Test::Unit::TestResult.new
130
+ mark = /\A#{Regexp.escape(__FILE__)}:#{__LINE__ + 1}/
131
+ tests.each {|test| test.run(result) {}}
132
+ failures = result.instance_variable_get("@failures")
133
+ errors = result.instance_variable_get("@errors")
134
+ failures.each {|f| f.location.reject! {|l| mark =~ l}}
135
+ assert_equal([failure_results, error_results],
136
+ [failures.collect {|failure| failure.long_display},
137
+ errors.collect {|error| error.long_display}])
138
+ end
139
+ end