gir_ffi 0.7.10 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +6 -0
  3. data/Gemfile +3 -1
  4. data/README.md +5 -2
  5. data/lib/ffi-glib.rb +1 -0
  6. data/lib/ffi-glib/array.rb +6 -6
  7. data/lib/ffi-glib/array_methods.rb +1 -1
  8. data/lib/ffi-glib/byte_array.rb +1 -1
  9. data/lib/ffi-glib/bytes.rb +3 -3
  10. data/lib/ffi-glib/container_class_methods.rb +2 -2
  11. data/lib/ffi-glib/error.rb +2 -2
  12. data/lib/ffi-glib/hash_table.rb +9 -9
  13. data/lib/ffi-glib/iconv.rb +1 -1
  14. data/lib/ffi-glib/list.rb +2 -2
  15. data/lib/ffi-glib/list_methods.rb +8 -7
  16. data/lib/ffi-glib/main_loop.rb +1 -1
  17. data/lib/ffi-glib/ptr_array.rb +7 -7
  18. data/lib/ffi-glib/s_list.rb +2 -2
  19. data/lib/ffi-glib/strv.rb +3 -3
  20. data/lib/ffi-glib/variant.rb +9 -2
  21. data/lib/ffi-gobject.rb +10 -10
  22. data/lib/ffi-gobject/closure.rb +1 -1
  23. data/lib/ffi-gobject/initially_unowned.rb +4 -3
  24. data/lib/ffi-gobject/object.rb +19 -19
  25. data/lib/ffi-gobject/object_class.rb +2 -2
  26. data/lib/ffi-gobject/ruby_closure.rb +5 -4
  27. data/lib/ffi-gobject/value.rb +15 -20
  28. data/lib/ffi-gobject_introspection/g_error.rb +1 -1
  29. data/lib/ffi-gobject_introspection/i_base_info.rb +6 -6
  30. data/lib/ffi-gobject_introspection/i_callable_info.rb +1 -1
  31. data/lib/ffi-gobject_introspection/i_enum_info.rb +2 -2
  32. data/lib/ffi-gobject_introspection/i_interface_info.rb +8 -8
  33. data/lib/ffi-gobject_introspection/i_object_info.rb +9 -9
  34. data/lib/ffi-gobject_introspection/i_repository.rb +13 -13
  35. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -2
  36. data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
  37. data/lib/ffi-gobject_introspection/i_union_info.rb +3 -3
  38. data/lib/ffi-gobject_introspection/lib.rb +4 -4
  39. data/lib/gir_ffi-base/glib/boolean.rb +4 -4
  40. data/lib/gir_ffi-base/glib/strv.rb +2 -2
  41. data/lib/gir_ffi/allocation_helper.rb +1 -1
  42. data/lib/gir_ffi/arg_helper.rb +8 -8
  43. data/lib/gir_ffi/boxed_base.rb +5 -9
  44. data/lib/gir_ffi/builder.rb +4 -4
  45. data/lib/gir_ffi/builder_helper.rb +3 -3
  46. data/lib/gir_ffi/builders/argument_builder_collection.rb +1 -1
  47. data/lib/gir_ffi/builders/base_argument_builder.rb +3 -3
  48. data/lib/gir_ffi/builders/base_method_builder.rb +71 -0
  49. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  50. data/lib/gir_ffi/builders/boxed_builder.rb +3 -2
  51. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +1 -1
  52. data/lib/gir_ffi/builders/closure_convertor.rb +1 -1
  53. data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +1 -1
  54. data/lib/gir_ffi/builders/constructor_builder.rb +52 -0
  55. data/lib/gir_ffi/builders/enum_builder.rb +3 -3
  56. data/lib/gir_ffi/builders/field_builder.rb +3 -2
  57. data/lib/gir_ffi/builders/function_builder.rb +9 -50
  58. data/lib/gir_ffi/builders/initializer_builder.rb +32 -0
  59. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +16 -0
  60. data/lib/gir_ffi/builders/mapping_method_builder.rb +7 -5
  61. data/lib/gir_ffi/builders/marshalling_method_builder.rb +5 -3
  62. data/lib/gir_ffi/builders/method_template.rb +1 -1
  63. data/lib/gir_ffi/builders/module_builder.rb +8 -7
  64. data/lib/gir_ffi/builders/null_convertor.rb +1 -1
  65. data/lib/gir_ffi/builders/null_return_value_builder.rb +21 -0
  66. data/lib/gir_ffi/builders/object_builder.rb +3 -3
  67. data/lib/gir_ffi/builders/property_builder.rb +1 -1
  68. data/lib/gir_ffi/builders/registered_type_builder.rb +31 -15
  69. data/lib/gir_ffi/builders/return_value_builder.rb +1 -14
  70. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +2 -2
  71. data/lib/gir_ffi/builders/signal_closure_builder.rb +1 -1
  72. data/lib/gir_ffi/builders/type_builder.rb +2 -2
  73. data/lib/gir_ffi/builders/unintrospectable_builder.rb +1 -1
  74. data/lib/gir_ffi/builders/user_defined_builder.rb +11 -11
  75. data/lib/gir_ffi/builders/vfunc_builder.rb +1 -1
  76. data/lib/gir_ffi/callback_base.rb +8 -13
  77. data/lib/gir_ffi/class_base.rb +41 -45
  78. data/lib/gir_ffi/core.rb +2 -2
  79. data/lib/gir_ffi/enum_base.rb +9 -14
  80. data/lib/gir_ffi/field_argument_info.rb +1 -1
  81. data/lib/gir_ffi/g_type.rb +1 -1
  82. data/lib/gir_ffi/glib_error.rb +1 -1
  83. data/lib/gir_ffi/in_out_pointer.rb +4 -4
  84. data/lib/gir_ffi/in_pointer.rb +12 -12
  85. data/lib/gir_ffi/info_ext/i_arg_info.rb +0 -10
  86. data/lib/gir_ffi/info_ext/i_callback_info.rb +0 -5
  87. data/lib/gir_ffi/info_ext/i_property_info.rb +1 -1
  88. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +1 -6
  89. data/lib/gir_ffi/info_ext/i_signal_info.rb +2 -2
  90. data/lib/gir_ffi/info_ext/i_type_info.rb +2 -17
  91. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +0 -5
  92. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  93. data/lib/gir_ffi/interface_base.rb +2 -7
  94. data/lib/gir_ffi/method_stubber.rb +1 -1
  95. data/lib/gir_ffi/module_base.rb +4 -7
  96. data/lib/gir_ffi/object_base.rb +4 -9
  97. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  98. data/lib/gir_ffi/receiver_type_info.rb +1 -1
  99. data/lib/gir_ffi/registered_type_base.rb +0 -5
  100. data/lib/gir_ffi/return_value_info.rb +1 -1
  101. data/lib/gir_ffi/sized_array.rb +10 -10
  102. data/lib/gir_ffi/type_map.rb +3 -3
  103. data/lib/gir_ffi/unintrospectable_type_info.rb +3 -1
  104. data/lib/gir_ffi/user_data_argument_info.rb +1 -1
  105. data/lib/gir_ffi/user_defined_property_info.rb +1 -1
  106. data/lib/gir_ffi/user_defined_type_info.rb +4 -4
  107. data/lib/gir_ffi/version.rb +1 -1
  108. data/lib/gir_ffi/vfunc_implementation.rb +1 -1
  109. data/lib/gir_ffi/zero_terminated.rb +6 -6
  110. data/test/base_test_helper.rb +13 -13
  111. data/test/ffi-gobject/object_test.rb +22 -1
  112. data/test/ffi-gobject/value_test.rb +24 -24
  113. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +4 -4
  114. data/test/ffi-gobject_introspection/i_type_info_test.rb +2 -2
  115. data/test/ffi-gobject_test.rb +2 -2
  116. data/test/gir_ffi/builders/argument_builder_test.rb +60 -60
  117. data/test/gir_ffi/builders/callback_argument_builder_test.rb +8 -8
  118. data/test/gir_ffi/builders/callback_builder_test.rb +4 -4
  119. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +8 -8
  120. data/test/gir_ffi/builders/constructor_builder_test.rb +34 -0
  121. data/test/gir_ffi/builders/function_builder_test.rb +8 -24
  122. data/test/gir_ffi/builders/initializer_builder_test.rb +36 -0
  123. data/test/gir_ffi/builders/interface_builder_test.rb +2 -2
  124. data/test/gir_ffi/builders/object_builder_test.rb +6 -18
  125. data/test/gir_ffi/builders/property_builder_test.rb +2 -2
  126. data/test/gir_ffi/builders/return_value_builder_test.rb +54 -79
  127. data/test/gir_ffi/builders/signal_closure_builder_test.rb +14 -14
  128. data/test/gir_ffi/builders/user_defined_builder_test.rb +8 -8
  129. data/test/gir_ffi/builders/vfunc_builder_test.rb +22 -22
  130. data/test/gir_ffi/class_base_test.rb +9 -7
  131. data/test/gir_ffi/in_pointer_test.rb +1 -1
  132. data/test/gir_ffi/info_ext/i_callable_info_test.rb +2 -2
  133. data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -2
  134. data/test/gir_ffi/info_ext/i_field_info_test.rb +2 -2
  135. data/test/gir_ffi/info_ext/i_function_info_test.rb +2 -2
  136. data/test/gir_ffi/info_ext/i_signal_info_test.rb +2 -2
  137. data/test/gir_ffi/info_ext/i_type_info_test.rb +18 -18
  138. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +2 -2
  139. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +2 -2
  140. data/test/gir_ffi/info_ext/safe_function_name_test.rb +2 -2
  141. data/test/gir_ffi/method_stubber_test.rb +6 -6
  142. data/test/gir_ffi/user_defined_type_info_test.rb +3 -3
  143. data/test/gir_ffi_test_helper.rb +12 -12
  144. data/test/integration/derived_classes_test.rb +7 -3
  145. data/test/integration/generated_gimarshallingtests_test.rb +10 -10
  146. data/test/integration/generated_regress_test.rb +11 -20
  147. data/test/introspection_test_helper.rb +1 -1
  148. data/test/minitest/stats_plugin.rb +3 -3
  149. metadata +9 -3
  150. data/lib/gir_ffi/builders/constructor_result_convertor.rb +0 -14
@@ -5,10 +5,10 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
5
5
  let(:return_value_info) { GirFFI::ReturnValueInfo.new(type_info, ownership_transfer, false) }
6
6
  let(:type_info) { callback_info.return_type }
7
7
  let(:ownership_transfer) { callback_info.caller_owns }
8
- let(:builder) {
8
+ let(:builder) do
9
9
  GirFFI::Builders::CallbackReturnValueBuilder.new(var_gen,
10
10
  return_value_info)
11
- }
11
+ end
12
12
 
13
13
  before do
14
14
  skip unless callback_info
@@ -28,10 +28,10 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
28
28
  end
29
29
 
30
30
  describe 'for :void' do
31
- let(:callback_info) {
31
+ let(:callback_info) do
32
32
  get_introspection_data('GIMarshallingTests',
33
33
  'CallbackMultipleOutParameters')
34
- }
34
+ end
35
35
 
36
36
  it 'has no statements in #post_conversion' do
37
37
  builder.post_conversion.must_equal []
@@ -44,11 +44,11 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
44
44
  end
45
45
 
46
46
  describe 'for :enum' do
47
- let(:callback_info) {
47
+ let(:callback_info) do
48
48
  get_vfunc_introspection_data('GIMarshallingTests',
49
49
  'Object',
50
50
  'vfunc_return_enum')
51
- }
51
+ end
52
52
 
53
53
  it 'converts the result' do
54
54
  # Ensure variable names are generated in order
@@ -63,11 +63,11 @@ describe GirFFI::Builders::CallbackReturnValueBuilder do
63
63
  end
64
64
 
65
65
  describe 'for :object with full transfer' do
66
- let(:callback_info) {
66
+ let(:callback_info) do
67
67
  get_vfunc_introspection_data('GIMarshallingTests',
68
68
  'Object',
69
69
  'vfunc_return_object_transfer_full')
70
- }
70
+ end
71
71
 
72
72
  it 'increases the refcount of the result and converts it to a pointer' do
73
73
  # Ensure variable names are generated in order
@@ -0,0 +1,34 @@
1
+ require 'gir_ffi_test_helper'
2
+
3
+ describe GirFFI::Builders::ConstructorBuilder do
4
+ describe '#method_definition' do
5
+ let(:builder) { GirFFI::Builders::ConstructorBuilder.new function_info }
6
+ let(:code) { builder.method_definition }
7
+
8
+ describe 'for constructors with the default name' do
9
+ let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new' }
10
+ it 'builds a constructor' do
11
+ code.must_equal <<-CODE.reset_indentation
12
+ def self.new(*args)
13
+ obj = allocate
14
+ obj.__send__ :initialize, *args
15
+ obj
16
+ end
17
+ CODE
18
+ end
19
+ end
20
+
21
+ describe 'for constructors with a custom name' do
22
+ let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
23
+ it 'builds a custom constructor' do
24
+ code.must_equal <<-CODE.reset_indentation
25
+ def self.new_from_file(*args)
26
+ obj = allocate
27
+ obj.__send__ :initialize_from_file, *args
28
+ obj
29
+ end
30
+ CODE
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,9 +1,9 @@
1
1
  require 'gir_ffi_test_helper'
2
2
 
3
3
  describe GirFFI::Builders::FunctionBuilder do
4
- describe '#generate' do
4
+ describe '#method_definition' do
5
5
  let(:builder) { GirFFI::Builders::FunctionBuilder.new function_info }
6
- let(:code) { builder.generate }
6
+ let(:code) { builder.method_definition }
7
7
 
8
8
  describe 'for Regress:test_array_fixed_out_objects' do
9
9
  let(:function_info) { get_introspection_data 'Regress', 'test_array_fixed_out_objects' }
@@ -50,22 +50,6 @@ describe GirFFI::Builders::FunctionBuilder do
50
50
  end
51
51
  end
52
52
 
53
- describe 'for constructors' do
54
- let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
55
- it 'builds correct definition' do
56
- code.must_equal <<-CODE.reset_indentation
57
- def self.new_from_file(x)
58
- _v1 = GirFFI::InPointer.from(:utf8, x)
59
- _v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
60
- _v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
61
- GirFFI::ArgHelper.check_error(_v2)
62
- _v4 = self.constructor_wrap(_v3)
63
- return _v4
64
- end
65
- CODE
66
- end
67
- end
68
-
69
53
  describe 'for functions that take a GValue' do
70
54
  let(:function_info) { get_introspection_data 'GIMarshallingTests', 'gvalue_in' }
71
55
  it 'creates a call to GObject::Value#from' do
@@ -172,10 +156,10 @@ describe GirFFI::Builders::FunctionBuilder do
172
156
  end
173
157
 
174
158
  describe 'for GIMarshallingTests::Object#method_int8_arg_and_out_callee' do
175
- let(:function_info) {
159
+ let(:function_info) do
176
160
  get_method_introspection_data('GIMarshallingTests', 'Object',
177
161
  'method_int8_arg_and_out_callee')
178
- }
162
+ end
179
163
 
180
164
  it 'builds a correct definition' do
181
165
  skip unless function_info
@@ -192,10 +176,10 @@ describe GirFFI::Builders::FunctionBuilder do
192
176
  end
193
177
 
194
178
  describe 'for GIMarshallingTests::Object.full_inout' do
195
- let(:function_info) {
179
+ let(:function_info) do
196
180
  get_method_introspection_data('GIMarshallingTests', 'Object',
197
181
  'full_inout')
198
- }
182
+ end
199
183
 
200
184
  it 'builds a correct definition' do
201
185
  code.must_equal <<-CODE.reset_indentation
@@ -211,10 +195,10 @@ describe GirFFI::Builders::FunctionBuilder do
211
195
  end
212
196
 
213
197
  describe 'for Regress::TestObj#instance_method_full' do
214
- let(:function_info) {
198
+ let(:function_info) do
215
199
  get_method_introspection_data('Regress', 'TestObj',
216
200
  'instance_method_full')
217
- }
201
+ end
218
202
 
219
203
  it 'builds a correct definition including self.ref' do
220
204
  skip unless function_info
@@ -0,0 +1,36 @@
1
+ require 'gir_ffi_test_helper'
2
+
3
+ describe GirFFI::Builders::InitializerBuilder do
4
+ describe '#method_definition' do
5
+ let(:builder) { GirFFI::Builders::InitializerBuilder.new function_info }
6
+ let(:code) { builder.method_definition }
7
+
8
+ describe 'for constructors with the default name' do
9
+ let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new' }
10
+ it 'builds an initializer' do
11
+ code.must_equal <<-CODE.reset_indentation
12
+ def initialize(obj)
13
+ _v1 = Regress::TestObj.from(obj)
14
+ _v2 = Regress::Lib.regress_test_obj_new _v1
15
+ store_pointer(_v2)
16
+ end
17
+ CODE
18
+ end
19
+ end
20
+
21
+ describe 'for constructors with a custom name' do
22
+ let(:function_info) { get_method_introspection_data 'Regress', 'TestObj', 'new_from_file' }
23
+ it 'builds a custom initializer' do
24
+ code.must_equal <<-CODE.reset_indentation
25
+ def initialize_from_file(x)
26
+ _v1 = GirFFI::InPointer.from(:utf8, x)
27
+ _v2 = FFI::MemoryPointer.new(:pointer).write_pointer nil
28
+ _v3 = Regress::Lib.regress_test_obj_new_from_file _v1, _v2
29
+ GirFFI::ArgHelper.check_error(_v2)
30
+ store_pointer(_v3)
31
+ end
32
+ CODE
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,10 +1,10 @@
1
1
  require 'gir_ffi_test_helper'
2
2
 
3
3
  describe GirFFI::Builders::InterfaceBuilder do
4
- let(:interface_builder) {
4
+ let(:interface_builder) do
5
5
  GirFFI::Builders::InterfaceBuilder.new(
6
6
  get_introspection_data('Regress', 'TestInterface'))
7
- }
7
+ end
8
8
 
9
9
  describe '#build_class' do
10
10
  before do
@@ -1,14 +1,14 @@
1
1
  require 'gir_ffi_test_helper'
2
2
 
3
3
  describe GirFFI::Builders::ObjectBuilder do
4
- let(:obj_builder) {
4
+ let(:obj_builder) do
5
5
  GirFFI::Builders::ObjectBuilder.new(
6
6
  get_introspection_data('Regress', 'TestObj'))
7
- }
8
- let(:sub_obj_builder) {
7
+ end
8
+ let(:sub_obj_builder) do
9
9
  GirFFI::Builders::ObjectBuilder.new(
10
10
  get_introspection_data('Regress', 'TestSubObj'))
11
- }
11
+ end
12
12
 
13
13
  describe '#find_signal' do
14
14
  it 'finds the signal "test" for TestObj' do
@@ -50,21 +50,9 @@ describe GirFFI::Builders::ObjectBuilder do
50
50
  end
51
51
 
52
52
  it 'raises an error if the property is not found' do
53
- proc {
53
+ proc do
54
54
  sub_obj_builder.find_property('this-property-does-not-exist')
55
- }.must_raise RuntimeError
56
- end
57
- end
58
-
59
- describe '#function_definition' do
60
- let(:method_info) {
61
- get_method_introspection_data 'Regress', 'TestObj', 'instance_method'
62
- }
63
-
64
- it 'delegates definition to FunctionBuilder' do
65
- code = obj_builder.send :function_definition, method_info
66
- expected = GirFFI::Builders::FunctionBuilder.new(method_info).generate
67
- code.must_equal expected
55
+ end.must_raise RuntimeError
68
56
  end
69
57
  end
70
58
 
@@ -56,11 +56,11 @@ describe GirFFI::Builders::PropertyBuilder do
56
56
  end
57
57
 
58
58
  describe 'for a property of type :strv' do
59
- let(:property_info) {
59
+ let(:property_info) do
60
60
  get_property_introspection_data('GIMarshallingTests',
61
61
  'PropertiesObject',
62
62
  'some-strv')
63
- }
63
+ end
64
64
  before do
65
65
  skip unless property_info
66
66
  end
@@ -3,18 +3,15 @@ require 'gir_ffi_test_helper'
3
3
  describe GirFFI::Builders::ReturnValueBuilder do
4
4
  let(:var_gen) { GirFFI::VariableNameGenerator.new }
5
5
  let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, :nothing, false) }
6
- let(:for_constructor) { false }
7
- let(:builder) {
8
- GirFFI::Builders::ReturnValueBuilder.new(var_gen,
9
- return_type_info,
10
- for_constructor)
11
- }
6
+ let(:builder) do
7
+ GirFFI::Builders::ReturnValueBuilder.new(var_gen, return_type_info)
8
+ end
12
9
 
13
10
  describe 'for :gint32' do
14
- let(:type_info) {
11
+ let(:type_info) do
15
12
  get_introspection_data('GIMarshallingTests',
16
13
  'int_return_min').return_type
17
- }
14
+ end
18
15
 
19
16
  it 'has no statements in #post_conversion' do
20
17
  builder.post_conversion.must_equal []
@@ -27,11 +24,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
27
24
  end
28
25
 
29
26
  describe 'for :struct' do
30
- let(:type_info) {
27
+ let(:type_info) do
31
28
  get_method_introspection_data('GIMarshallingTests',
32
29
  'BoxedStruct',
33
30
  'returnv').return_type
34
- }
31
+ end
35
32
 
36
33
  it 'wraps the result in #post_conversion' do
37
34
  builder.capture_variable_name.must_equal '_v1'
@@ -45,11 +42,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
45
42
  end
46
43
 
47
44
  describe 'for :union' do
48
- let(:type_info) {
45
+ let(:type_info) do
49
46
  get_method_introspection_data('GIMarshallingTests',
50
47
  'Union',
51
48
  'returnv').return_type
52
- }
49
+ end
53
50
 
54
51
  it 'wraps the result in #post_conversion' do
55
52
  builder.capture_variable_name.must_equal '_v1'
@@ -63,11 +60,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
63
60
  end
64
61
 
65
62
  describe 'for :interface' do
66
- let(:type_info) {
63
+ let(:type_info) do
67
64
  get_method_introspection_data('Gio',
68
65
  'File',
69
66
  'new_for_commandline_arg').return_type
70
- }
67
+ end
71
68
 
72
69
  it 'wraps the result in #post_conversion' do
73
70
  builder.capture_variable_name.must_equal '_v1'
@@ -81,51 +78,29 @@ describe GirFFI::Builders::ReturnValueBuilder do
81
78
  end
82
79
 
83
80
  describe 'for :object' do
84
- describe 'when the method is not a constructor' do
85
- let(:type_info) {
86
- get_method_introspection_data('GIMarshallingTests',
87
- 'Object',
88
- 'full_return').return_type
89
- }
90
- let(:for_constructor) { false }
91
-
92
- it 'wraps the result in #post_conversion' do
93
- builder.capture_variable_name.must_equal '_v1'
94
- builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Object.wrap(_v1)']
95
- end
96
-
97
- it 'returns the wrapped result' do
98
- builder.capture_variable_name.must_equal '_v1'
99
- builder.return_value_name.must_equal '_v2'
100
- end
81
+ let(:type_info) do
82
+ get_method_introspection_data('GIMarshallingTests',
83
+ 'Object',
84
+ 'full_return').return_type
101
85
  end
102
86
 
103
- describe 'when the method is a constructor' do
104
- let(:type_info) {
105
- get_method_introspection_data('GIMarshallingTests',
106
- 'Object',
107
- 'new').return_type
108
- }
109
- let(:for_constructor) { true }
110
-
111
- it 'wraps the result in #post_conversion' do
112
- builder.capture_variable_name.must_equal '_v1'
113
- builder.post_conversion.must_equal ['_v2 = self.constructor_wrap(_v1)']
114
- end
87
+ it 'wraps the result in #post_conversion' do
88
+ builder.capture_variable_name.must_equal '_v1'
89
+ builder.post_conversion.must_equal ['_v2 = GIMarshallingTests::Object.wrap(_v1)']
90
+ end
115
91
 
116
- it 'returns the wrapped result' do
117
- builder.capture_variable_name.must_equal '_v1'
118
- builder.return_value_name.must_equal '_v2'
119
- end
92
+ it 'returns the wrapped result' do
93
+ builder.capture_variable_name.must_equal '_v1'
94
+ builder.return_value_name.must_equal '_v2'
120
95
  end
121
96
  end
122
97
 
123
98
  describe 'for :strv' do
124
- let(:type_info) {
99
+ let(:type_info) do
125
100
  get_method_introspection_data('GLib',
126
101
  'KeyFile',
127
102
  'get_locale_string_list').return_type
128
- }
103
+ end
129
104
 
130
105
  it 'wraps the result in #post_conversion' do
131
106
  builder.capture_variable_name.must_equal '_v1'
@@ -139,11 +114,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
139
114
  end
140
115
 
141
116
  describe 'for :zero_terminated' do
142
- let(:type_info) {
117
+ let(:type_info) do
143
118
  get_method_introspection_data('GLib',
144
119
  'Variant',
145
120
  'dup_bytestring').return_type
146
- }
121
+ end
147
122
  before do
148
123
  skip unless type_info.zero_terminated?
149
124
  end
@@ -160,10 +135,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
160
135
  end
161
136
 
162
137
  describe 'for :byte_array' do
163
- let(:type_info) {
138
+ let(:type_info) do
164
139
  get_introspection_data('GIMarshallingTests',
165
140
  'bytearray_full_return').return_type
166
- }
141
+ end
167
142
 
168
143
  it 'wraps the result in #post_conversion' do
169
144
  builder.capture_variable_name.must_equal '_v1'
@@ -177,10 +152,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
177
152
  end
178
153
 
179
154
  describe 'for :ptr_array' do
180
- let(:type_info) {
155
+ let(:type_info) do
181
156
  get_introspection_data('GIMarshallingTests',
182
157
  'gptrarray_utf8_none_return').return_type
183
- }
158
+ end
184
159
 
185
160
  it 'wraps the result in #post_conversion' do
186
161
  builder.capture_variable_name.must_equal '_v1'
@@ -194,10 +169,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
194
169
  end
195
170
 
196
171
  describe 'for :glist' do
197
- let(:type_info) {
172
+ let(:type_info) do
198
173
  get_introspection_data('GIMarshallingTests',
199
174
  'glist_int_none_return').return_type
200
- }
175
+ end
201
176
 
202
177
  it 'wraps the result in #post_conversion' do
203
178
  builder.capture_variable_name.must_equal '_v1'
@@ -211,10 +186,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
211
186
  end
212
187
 
213
188
  describe 'for :gslist' do
214
- let(:type_info) {
189
+ let(:type_info) do
215
190
  get_introspection_data('GIMarshallingTests',
216
191
  'gslist_int_none_return').return_type
217
- }
192
+ end
218
193
 
219
194
  it 'wraps the result in #post_conversion' do
220
195
  builder.capture_variable_name.must_equal '_v1'
@@ -228,10 +203,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
228
203
  end
229
204
 
230
205
  describe 'for :ghash' do
231
- let(:type_info) {
206
+ let(:type_info) do
232
207
  get_introspection_data('GIMarshallingTests',
233
208
  'ghashtable_int_none_return').return_type
234
- }
209
+ end
235
210
 
236
211
  it 'wraps the result in #post_conversion' do
237
212
  builder.capture_variable_name.must_equal '_v1'
@@ -245,10 +220,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
245
220
  end
246
221
 
247
222
  describe 'for :array' do
248
- let(:type_info) {
223
+ let(:type_info) do
249
224
  get_introspection_data('GIMarshallingTests',
250
225
  'garray_int_none_return').return_type
251
- }
226
+ end
252
227
 
253
228
  it 'wraps the result in #post_conversion' do
254
229
  builder.capture_variable_name.must_equal '_v1'
@@ -262,10 +237,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
262
237
  end
263
238
 
264
239
  describe 'for :error' do
265
- let(:type_info) {
240
+ let(:type_info) do
266
241
  get_introspection_data('GIMarshallingTests',
267
242
  'gerror_return').return_type
268
- }
243
+ end
269
244
 
270
245
  it 'wraps the result in #post_conversion' do
271
246
  builder.capture_variable_name.must_equal '_v1'
@@ -280,10 +255,10 @@ describe GirFFI::Builders::ReturnValueBuilder do
280
255
 
281
256
  describe 'for :c' do
282
257
  describe 'with fixed size' do
283
- let(:type_info) {
258
+ let(:type_info) do
284
259
  get_introspection_data('GIMarshallingTests',
285
260
  'array_fixed_int_return').return_type
286
- }
261
+ end
287
262
 
288
263
  it 'converts the result in #post_conversion' do
289
264
  builder.capture_variable_name.must_equal '_v1'
@@ -298,11 +273,11 @@ describe GirFFI::Builders::ReturnValueBuilder do
298
273
 
299
274
  describe 'with separate size parameter' do
300
275
  let(:length_argument) { Object.new }
301
- let(:type_info) {
276
+ let(:type_info) do
302
277
  get_method_introspection_data('GIMarshallingTests',
303
278
  'Object',
304
279
  'method_array_return').return_type
305
- }
280
+ end
306
281
 
307
282
  before do
308
283
  allow(length_argument).to receive(:post_converted_name).and_return 'bar'
@@ -322,9 +297,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
322
297
  end
323
298
 
324
299
  describe 'for :utf8' do
325
- let(:type_info) {
300
+ let(:type_info) do
326
301
  get_introspection_data('GIMarshallingTests', 'utf8_full_return').return_type
327
- }
302
+ end
328
303
 
329
304
  it 'converts the result in #post_conversion' do
330
305
  builder.capture_variable_name.must_equal '_v1'
@@ -338,9 +313,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
338
313
  end
339
314
 
340
315
  describe 'for :void pointer' do
341
- let(:callback_info) {
316
+ let(:callback_info) do
342
317
  get_introspection_data('GIMarshallingTests', 'CallbackIntInt')
343
- }
318
+ end
344
319
  let(:type_info) { callback_info.args[1].argument_type }
345
320
 
346
321
  before do
@@ -358,9 +333,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
358
333
  end
359
334
 
360
335
  describe 'for :void' do
361
- let(:type_info) {
336
+ let(:type_info) do
362
337
  get_method_introspection_data('Regress', 'TestObj', 'null_out').return_type
363
- }
338
+ end
364
339
 
365
340
  it 'has no statements in #post_conversion' do
366
341
  builder.post_conversion.must_equal []
@@ -376,9 +351,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
376
351
  end
377
352
 
378
353
  describe 'for a closure argument' do
379
- let(:type_info) {
354
+ let(:type_info) do
380
355
  get_introspection_data('Regress', 'TestCallbackUserData').args[0].argument_type
381
- }
356
+ end
382
357
 
383
358
  before do
384
359
  builder.closure = true
@@ -396,9 +371,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
396
371
  end
397
372
 
398
373
  describe 'for a skipped return value' do
399
- let(:type_info) {
374
+ let(:type_info) do
400
375
  get_method_introspection_data('Regress', 'TestObj', 'skip_return_val').return_type
401
- }
376
+ end
402
377
  let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, :nothing, true) }
403
378
 
404
379
  it 'has no statements in #post_conversion' do