glib2 0.90.7-x86-mingw32 → 0.90.8-x86-mingw32

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 (70) hide show
  1. data/ChangeLog +68 -0
  2. data/ext/glib2/rbglib.c +51 -15
  3. data/ext/glib2/rbglib.h +10 -2
  4. data/ext/glib2/rbglib_bookmarkfile.c +37 -74
  5. data/ext/glib2/rbglib_completion.c +8 -16
  6. data/ext/glib2/rbglib_convert.c +8 -18
  7. data/ext/glib2/rbglib_error.c +2 -8
  8. data/ext/glib2/rbglib_i18n.c +1 -2
  9. data/ext/glib2/rbglib_iochannel.c +81 -127
  10. data/ext/glib2/rbglib_keyfile.c +38 -86
  11. data/ext/glib2/rbglib_maincontext.c +29 -64
  12. data/ext/glib2/rbglib_mainloop.c +4 -8
  13. data/ext/glib2/rbglib_messages.c +7 -17
  14. data/ext/glib2/rbglib_pollfd.c +7 -14
  15. data/ext/glib2/rbglib_shell.c +3 -6
  16. data/ext/glib2/rbglib_source.c +14 -28
  17. data/ext/glib2/rbglib_spawn.c +7 -14
  18. data/ext/glib2/rbglib_threads.c +2 -4
  19. data/ext/glib2/rbglib_timer.c +7 -14
  20. data/ext/glib2/rbglib_unicode.c +45 -16
  21. data/ext/glib2/rbglib_utils.c +25 -50
  22. data/ext/glib2/rbglib_win32.c +10 -17
  23. data/ext/glib2/rbgobj_boxed.c +9 -21
  24. data/ext/glib2/rbgobj_closure.c +5 -11
  25. data/ext/glib2/rbgobj_enums.c +1 -2
  26. data/ext/glib2/rbgobj_object.c +23 -59
  27. data/ext/glib2/rbgobj_param.c +7 -15
  28. data/ext/glib2/rbgobj_signal.c +25 -65
  29. data/ext/glib2/rbgobj_type.c +36 -81
  30. data/ext/glib2/rbgobj_typeinstance.c +3 -6
  31. data/ext/glib2/rbgobj_typeinterface.c +3 -6
  32. data/ext/glib2/rbgobj_typemodule.c +4 -8
  33. data/ext/glib2/rbgobj_typeplugin.c +2 -4
  34. data/ext/glib2/rbgobj_valuetypes.c +7 -15
  35. data/ext/glib2/rbgobject.c +8 -18
  36. data/ext/glib2/rbgobject.h +3 -0
  37. data/ext/glib2/rbgprivate.h +0 -1
  38. data/ext/glib2/rbgutil.c +3 -6
  39. data/lib/1.8/glib2.so +0 -0
  40. data/lib/1.9/glib2.so +0 -0
  41. data/lib/gnome2-raketask.rb +1 -0
  42. data/lib/mkmf-gnome2.rb +12 -9
  43. data/test-unit/History.txt +43 -1
  44. data/test-unit/Manifest.txt +1 -1
  45. data/test-unit/html/index.html +62 -24
  46. data/test-unit/html/index.html.ja +54 -25
  47. data/test-unit/html/test-unit.css +3 -3
  48. data/test-unit/lib/test/unit/assertions.rb +489 -36
  49. data/test-unit/lib/test/unit/autorunner.rb +40 -0
  50. data/test-unit/lib/test/unit/collector.rb +6 -4
  51. data/test-unit/lib/test/unit/collector/load.rb +48 -5
  52. data/test-unit/lib/test/unit/collector/xml.rb +250 -0
  53. data/test-unit/lib/test/unit/error.rb +4 -3
  54. data/test-unit/lib/test/unit/fixture.rb +12 -3
  55. data/test-unit/lib/test/unit/runner/xml.rb +15 -0
  56. data/test-unit/lib/test/unit/testcase.rb +48 -16
  57. data/test-unit/lib/test/unit/testresult.rb +6 -2
  58. data/test-unit/lib/test/unit/testsuite.rb +24 -2
  59. data/test-unit/lib/test/unit/ui/console/testrunner.rb +65 -28
  60. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +11 -2
  61. data/test-unit/lib/test/unit/ui/xml/testrunner.rb +224 -0
  62. data/test-unit/lib/test/unit/version.rb +1 -1
  63. data/test-unit/test/run-test.rb +7 -0
  64. data/test-unit/test/{test_assertions.rb → test-assertions.rb} +708 -77
  65. data/test-unit/test/test-fixture.rb +37 -0
  66. data/test-unit/test/test-testcase.rb +24 -7
  67. data/test-unit/test/test_testsuite.rb +19 -11
  68. data/test/test_iochannel.rb +9 -9
  69. data/test/test_unicode.rb +44 -31
  70. metadata +8 -5
@@ -154,13 +154,22 @@ module Test
154
154
  end
155
155
 
156
156
  private
157
- def run_fixture(fixture)
157
+ def run_fixture(fixture, options={})
158
158
  [
159
159
  self.class.send("before_#{fixture}_methods"),
160
160
  fixture,
161
161
  self.class.send("after_#{fixture}_methods")
162
162
  ].flatten.each do |method_name|
163
- send(method_name) if respond_to?(method_name, true)
163
+ next unless respond_to?(method_name, true)
164
+ if options[:handle_exception]
165
+ begin
166
+ send(method_name)
167
+ rescue Exception
168
+ raise unless handle_exception($!)
169
+ end
170
+ else
171
+ send(method_name)
172
+ end
164
173
  end
165
174
  end
166
175
 
@@ -169,7 +178,7 @@ module Test
169
178
  end
170
179
 
171
180
  def run_teardown
172
- run_fixture(:teardown)
181
+ run_fixture(:teardown, :handle_exception => true)
173
182
  end
174
183
  end
175
184
  end
@@ -0,0 +1,15 @@
1
+ module Test
2
+ module Unit
3
+ AutoRunner.register_runner(:xml) do |auto_runner|
4
+ require 'test/unit/ui/xml/testrunner'
5
+ Test::Unit::UI::XML::TestRunner
6
+ end
7
+
8
+ AutoRunner.setup_option do |auto_runner, opts|
9
+ opts.on("--output-file-descriptor=FD", Integer,
10
+ "Outputs to file descriptor FD") do |fd|
11
+ auto_runner.runner_options[:output_file_descriptor] = fd
12
+ end
13
+ end
14
+ end
15
+ end
@@ -87,6 +87,8 @@ module Test
87
87
 
88
88
  STARTED = name + "::STARTED" # :nodoc:
89
89
  FINISHED = name + "::FINISHED" # :nodoc:
90
+ STARTED_OBJECT = name + "::STARTED::OBJECT" # :nodoc:
91
+ FINISHED_OBJECT = name + "::FINISHED::OBJECT" # :nodoc:
90
92
 
91
93
  DESCENDANTS = [] # :nodoc:
92
94
  AVAILABLE_ORDERS = [:alphabetic, :random, :defined] # :nodoc:
@@ -219,9 +221,11 @@ module Test
219
221
  @@test_orders[self] = order
220
222
  end
221
223
 
222
- # Defines a test in declarative syntax.
224
+ # Defines a test in declarative syntax or marks
225
+ # following method as a test method.
223
226
  #
224
- # The following two test definitions are the same:
227
+ # In declarative syntax usage, the following two
228
+ # test definitions are the almost same:
225
229
  #
226
230
  # description "register user"
227
231
  # def test_register_user
@@ -231,11 +235,33 @@ module Test
231
235
  # test "register user" do
232
236
  # ...
233
237
  # end
234
- def test(test_description, &block)
235
- normalized_description = test_description.gsub(/[^a-zA-Z\d_]+/, '_')
236
- method_name = "test_#{normalized_description}".to_sym
237
- define_method(method_name, &block)
238
- description(test_description, method_name)
238
+ #
239
+ # In test method mark usage, the "my_test_method" is
240
+ # treated as a test method:
241
+ #
242
+ # test
243
+ # def my_test_method
244
+ # assert_equal("call me", ...)
245
+ # end
246
+ def test(*test_description_or_targets, &block)
247
+ if block_given?
248
+ test_description = test_description_or_targets.first
249
+ if test_description.nil?
250
+ raise ArgumentError, "test description is missing"
251
+ end
252
+ n_arguments = test_description_or_targets.size
253
+ if n_arguments > 1
254
+ message = "wrong number of arguments (#{n_arguments} for 1)"
255
+ raise ArgumentError, message
256
+ end
257
+ method_name = test_description
258
+ define_method(method_name, &block)
259
+ description(test_description, method_name)
260
+ attribute(:test, true, {}, method_name)
261
+ else
262
+ targets = test_description_or_targets
263
+ attribute(:test, true, {}, *targets)
264
+ end
239
265
  end
240
266
 
241
267
  # Describes a test.
@@ -259,7 +285,7 @@ module Test
259
285
  name.to_s
260
286
  end
261
287
  test_names = method_names.find_all do |method_name|
262
- method_name =~ /^test./
288
+ method_name =~ /^test./ or get_attribute(method_name, :test)
263
289
  end
264
290
  send("sort_test_names_in_#{test_order}_order", test_names)
265
291
  end
@@ -291,7 +317,7 @@ module Test
291
317
  # :startdoc:
292
318
  end
293
319
 
294
- attr_reader :method_name
320
+ attr_reader :method_name, :start_time, :elapsed_time
295
321
 
296
322
  # Creates a new instance of the fixture for running the
297
323
  # test represented by test_method_name.
@@ -306,6 +332,8 @@ module Test
306
332
  @method_name = test_method_name
307
333
  @test_passed = true
308
334
  @interrupted = false
335
+ @start_time = nil
336
+ @elapsed_time = nil
309
337
  end
310
338
 
311
339
  # Runs the individual test method represented by this
@@ -314,7 +342,9 @@ module Test
314
342
  def run(result)
315
343
  begin
316
344
  @_result = result
345
+ @start_time = Time.now
317
346
  yield(STARTED, name)
347
+ yield(STARTED_OBJECT, self)
318
348
  begin
319
349
  run_setup
320
350
  run_test
@@ -328,8 +358,10 @@ module Test
328
358
  raise unless handle_exception($!)
329
359
  end
330
360
  end
361
+ @elapsed_time = Time.now - @start_time
331
362
  result.add_run
332
363
  yield(FINISHED, name)
364
+ yield(FINISHED_OBJECT, self)
333
365
  ensure
334
366
  # @_result = nil # For test-spec's after_all :<
335
367
  end
@@ -440,6 +472,13 @@ module Test
440
472
  @interrupted
441
473
  end
442
474
 
475
+ # Returns whether this individual test passed or
476
+ # not. Primarily for use in teardown so that artifacts
477
+ # can be left behind if the test fails.
478
+ def passed?
479
+ @test_passed
480
+ end
481
+
443
482
  private
444
483
  def current_result
445
484
  @_result
@@ -460,13 +499,6 @@ module Test
460
499
  false
461
500
  end
462
501
 
463
- # Returns whether this individual test passed or
464
- # not. Primarily for use in teardown so that artifacts
465
- # can be left behind if the test fails.
466
- def passed?
467
- @test_passed
468
- end
469
-
470
502
  def problem_occurred
471
503
  @test_passed = false
472
504
  end
@@ -31,8 +31,10 @@ module Test
31
31
  include TestResultOmissionSupport
32
32
  include TestResultNotificationSupport
33
33
 
34
- CHANGED = "CHANGED"
35
- FAULT = "FAULT"
34
+ FINISHED = name + "::FINISHED"
35
+ CHANGED = name + "::CHANGED"
36
+ PASS_ASSERTION = name + "::PASS_ASSERTION"
37
+ FAULT = name + "::FAULT"
36
38
 
37
39
  attr_reader :run_count, :pass_count, :assertion_count, :faults
38
40
 
@@ -48,6 +50,7 @@ module Test
48
50
  # Records a test run.
49
51
  def add_run
50
52
  @run_count += 1
53
+ notify_listeners(FINISHED, self)
51
54
  notify_changed
52
55
  end
53
56
 
@@ -58,6 +61,7 @@ module Test
58
61
  # Records an individual assertion.
59
62
  def add_assertion
60
63
  @assertion_count += 1
64
+ notify_listeners(PASS_ASSERTION, self)
61
65
  notify_changed
62
66
  end
63
67
 
@@ -2,6 +2,7 @@
2
2
  #
3
3
  # Author:: Nathaniel Talbott.
4
4
  # Copyright:: Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
5
+ # Copyright:: Copyright (c) 2008-2011 Kouhei Sutou. All rights reserved.
5
6
  # License:: Ruby license.
6
7
 
7
8
  require 'test/unit/error'
@@ -17,10 +18,16 @@ module Test
17
18
  # has a suite method as simply providing a way to get a
18
19
  # meaningful TestSuite instance.
19
20
  class TestSuite
20
- attr_reader :name, :tests
21
-
21
+ attr_reader :name, :tests, :test_case, :start_time, :elapsed_time
22
+
23
+ # Test suite that has higher priority is ran prior to
24
+ # test suites that have lower priority.
25
+ attr_accessor :priority
26
+
22
27
  STARTED = name + "::STARTED"
28
+ STARTED_OBJECT = name + "::STARTED::OBJECT"
23
29
  FINISHED = name + "::FINISHED"
30
+ FINISHED_OBJECT = name + "::FINISHED::OBJECT"
24
31
 
25
32
  # Creates a new TestSuite with the given name.
26
33
  def initialize(name="Unnamed TestSuite", test_case=nil)
@@ -28,19 +35,29 @@ module Test
28
35
  @tests = []
29
36
  @test_case = test_case
30
37
  @n_tests = 0
38
+ @priority = 0
39
+ @start_time = nil
40
+ @elapsed_time = nil
41
+ @passed = true
31
42
  end
32
43
 
33
44
  # Runs the tests and/or suites contained in this
34
45
  # TestSuite.
35
46
  def run(result, &progress_block)
47
+ @start_time = Time.now
36
48
  yield(STARTED, name)
49
+ yield(STARTED_OBJECT, self)
37
50
  run_startup(result)
38
51
  while test = @tests.shift
39
52
  @n_tests += test.size
40
53
  test.run(result, &progress_block)
54
+ @passed = false unless test.passed?
41
55
  end
42
56
  run_shutdown(result)
57
+ ensure
58
+ @elapsed_time = Time.now - @start_time
43
59
  yield(FINISHED, name)
60
+ yield(FINISHED_OBJECT, self)
44
61
  end
45
62
 
46
63
  # Adds the test to the suite.
@@ -79,6 +96,10 @@ module Test
79
96
  @tests == other.tests
80
97
  end
81
98
 
99
+ def passed?
100
+ @passed
101
+ end
102
+
82
103
  private
83
104
  def run_startup(result)
84
105
  return if @test_case.nil? or !@test_case.respond_to?(:startup)
@@ -104,6 +125,7 @@ module Test
104
125
  false
105
126
  else
106
127
  result.add_error(Error.new(@test_case.name, exception))
128
+ @passed = false
107
129
  true
108
130
  end
109
131
  end
@@ -56,21 +56,28 @@ module Test
56
56
  end
57
57
 
58
58
  def attach_to_mediator
59
- @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
60
- @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
61
- @mediator.add_listener(TestRunnerMediator::FINISHED, &method(:finished))
62
- @mediator.add_listener(TestCase::STARTED, &method(:test_started))
63
- @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
64
- @mediator.add_listener(TestSuite::STARTED, &method(:test_suite_started))
65
- @mediator.add_listener(TestSuite::FINISHED, &method(:test_suite_finished))
59
+ @mediator.add_listener(TestResult::FAULT,
60
+ &method(:add_fault))
61
+ @mediator.add_listener(TestRunnerMediator::STARTED,
62
+ &method(:started))
63
+ @mediator.add_listener(TestRunnerMediator::FINISHED,
64
+ &method(:finished))
65
+ @mediator.add_listener(TestCase::STARTED_OBJECT,
66
+ &method(:test_started))
67
+ @mediator.add_listener(TestCase::FINISHED_OBJECT,
68
+ &method(:test_finished))
69
+ @mediator.add_listener(TestSuite::STARTED_OBJECT,
70
+ &method(:test_suite_started))
71
+ @mediator.add_listener(TestSuite::FINISHED_OBJECT,
72
+ &method(:test_suite_finished))
66
73
  end
67
-
74
+
68
75
  def add_fault(fault)
69
76
  @faults << fault
70
77
  output_progress(fault.single_character_display, fault_color(fault))
71
78
  @already_outputted = true if fault.critical?
72
79
  end
73
-
80
+
74
81
  def started(result)
75
82
  @result = result
76
83
  output_started
@@ -92,6 +99,15 @@ module Test
92
99
  nl
93
100
  output(@result, result_color)
94
101
  output("%g%% passed" % @result.pass_percentage, result_color)
102
+ unless elapsed_time.zero?
103
+ nl
104
+ throuputs =
105
+ [
106
+ "%.2f tests/s" % [@result.run_count / elapsed_time],
107
+ "%.2f assertions/s" % [@result.assertion_count / elapsed_time],
108
+ ]
109
+ output(throuputs.join(", "))
110
+ end
95
111
  end
96
112
 
97
113
  def output_fault(fault)
@@ -133,18 +149,43 @@ module Test
133
149
  end
134
150
 
135
151
  def output_fault_message(fault)
152
+ if fault.expected.respond_to?(:encoding) and
153
+ fault.actual.respond_to?(:encoding) and
154
+ fault.expected.encoding != fault.actual.encoding
155
+ need_encoding = true
156
+ else
157
+ need_encoding = false
158
+ end
136
159
  output(fault.user_message) if fault.user_message
137
160
  output_single("<")
138
161
  output_single(fault.inspected_expected, color("pass"))
139
- output("> expected but was")
162
+ output_single(">")
163
+ if need_encoding
164
+ output_single("(")
165
+ output_single(fault.expected.encoding.name, color("pass"))
166
+ output_single(")")
167
+ end
168
+ output(" expected but was")
140
169
  output_single("<")
141
170
  output_single(fault.inspected_actual, color("failure"))
142
- output(">")
171
+ output_single(">")
172
+ if need_encoding
173
+ output_single("(")
174
+ output_single(fault.actual.encoding.name, color("failure"))
175
+ output_single(")")
176
+ end
177
+ output("")
143
178
  from, to = prepare_for_diff(fault.expected, fault.actual)
144
179
  if from and to
145
- differ = ColorizedReadableDiffer.new(from.split(/\r?\n/),
146
- to.split(/\r?\n/),
147
- self)
180
+ from_lines = from.split(/\r?\n/)
181
+ to_lines = to.split(/\r?\n/)
182
+ if need_encoding
183
+ from_lines << ""
184
+ to_lines << ""
185
+ from_lines << "Encoding: #{fault.expected.encoding.name}"
186
+ to_lines << "Encoding: #{fault.actual.encoding.name}"
187
+ end
188
+ differ = ColorizedReadableDiffer.new(from_lines, to_lines, self)
148
189
  if differ.need_diff?
149
190
  output("")
150
191
  output("diff:")
@@ -157,10 +198,10 @@ module Test
157
198
  fault.long_display
158
199
  end
159
200
 
160
- def test_started(name)
201
+ def test_started(test)
161
202
  return unless output?(VERBOSE)
162
203
 
163
- name = name.sub(/\(.+?\)\z/, '')
204
+ name = test.name.sub(/\(.+?\)\z/, '')
164
205
  right_space = 8 * 2
165
206
  left_space = @progress_row_max - right_space
166
207
  left_space = left_space - indent.size - name.size
@@ -169,7 +210,7 @@ module Test
169
210
  @test_start = Time.now
170
211
  end
171
212
 
172
- def test_finished(name)
213
+ def test_finished(test)
173
214
  unless @already_outputted
174
215
  output_progress(".", color("pass"))
175
216
  end
@@ -180,24 +221,24 @@ module Test
180
221
  output(": (%f)" % (Time.now - @test_start), nil, VERBOSE)
181
222
  end
182
223
 
183
- def test_suite_started(name)
224
+ def test_suite_started(suite)
184
225
  if @top_level
185
226
  @top_level = false
186
227
  return
187
228
  end
188
229
 
189
230
  output_single(indent, nil, VERBOSE)
190
- if /\A[A-Z]/ =~ name
191
- _color = color("case")
192
- else
231
+ if suite.test_case.nil?
193
232
  _color = color("suite")
233
+ else
234
+ _color = color("case")
194
235
  end
195
- output_single(name, _color, VERBOSE)
236
+ output_single(suite.name, _color, VERBOSE)
196
237
  output(": ", nil, VERBOSE)
197
238
  @indent += 2
198
239
  end
199
240
 
200
- def test_suite_finished(name)
241
+ def test_suite_finished(suite)
201
242
  @indent -= 2
202
243
  end
203
244
 
@@ -286,7 +327,7 @@ module Test
286
327
  end
287
328
 
288
329
  def guess_term_width
289
- Integer(ENV["TERM_WIDTH"] || 0)
330
+ Integer(ENV["COLUMNS"] || ENV["TERM_WIDTH"] || 0)
290
331
  rescue ArgumentError
291
332
  0
292
333
  end
@@ -424,7 +465,3 @@ module Test
424
465
  end
425
466
  end
426
467
  end
427
-
428
- if __FILE__ == $0
429
- Test::Unit::UI::Console::TestRunner.start_command_line_test
430
- end