gir_ffi 0.14.0 → 0.15.3

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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +45 -0
  3. data/Gemfile +6 -4
  4. data/README.md +11 -10
  5. data/Rakefile +5 -5
  6. data/lib/ffi-glib.rb +16 -16
  7. data/lib/ffi-glib/array.rb +14 -4
  8. data/lib/ffi-glib/byte_array.rb +7 -2
  9. data/lib/ffi-glib/container_class_methods.rb +1 -1
  10. data/lib/ffi-glib/error.rb +1 -1
  11. data/lib/ffi-glib/hash_table.rb +3 -3
  12. data/lib/ffi-glib/list.rb +1 -1
  13. data/lib/ffi-glib/list_methods.rb +1 -1
  14. data/lib/ffi-glib/main_loop.rb +3 -3
  15. data/lib/ffi-glib/ptr_array.rb +30 -8
  16. data/lib/ffi-glib/s_list.rb +1 -1
  17. data/lib/ffi-glib/variant.rb +1 -1
  18. data/lib/ffi-gobject.rb +13 -13
  19. data/lib/ffi-gobject/object.rb +23 -32
  20. data/lib/ffi-gobject/param_spec.rb +1 -1
  21. data/lib/ffi-gobject/ruby_closure.rb +2 -2
  22. data/lib/ffi-gobject/value.rb +40 -29
  23. data/lib/ffi-gobject_introspection.rb +20 -20
  24. data/lib/ffi-gobject_introspection/gobject_type_init.rb +2 -2
  25. data/lib/ffi-gobject_introspection/i_arg_info.rb +2 -2
  26. data/lib/ffi-gobject_introspection/i_base_info.rb +27 -17
  27. data/lib/ffi-gobject_introspection/i_callable_info.rb +4 -4
  28. data/lib/ffi-gobject_introspection/i_constant_info.rb +2 -2
  29. data/lib/ffi-gobject_introspection/i_enum_info.rb +1 -0
  30. data/lib/ffi-gobject_introspection/i_field_info.rb +1 -1
  31. data/lib/ffi-gobject_introspection/i_function_info.rb +1 -1
  32. data/lib/ffi-gobject_introspection/i_interface_info.rb +1 -1
  33. data/lib/ffi-gobject_introspection/i_object_info.rb +2 -2
  34. data/lib/ffi-gobject_introspection/i_property_info.rb +2 -2
  35. data/lib/ffi-gobject_introspection/i_repository.rb +9 -6
  36. data/lib/ffi-gobject_introspection/i_struct_info.rb +2 -1
  37. data/lib/ffi-gobject_introspection/i_type_info.rb +13 -7
  38. data/lib/ffi-gobject_introspection/i_unresolved_info.rb +1 -1
  39. data/lib/ffi-gobject_introspection/i_vfunc_info.rb +1 -1
  40. data/lib/ffi-gobject_introspection/lib.rb +30 -19
  41. data/lib/ffi-gobject_introspection/strv.rb +1 -1
  42. data/lib/gir_ffi-base.rb +1 -1
  43. data/lib/gir_ffi-base/gobject.rb +26 -25
  44. data/lib/gir_ffi-base/gobject/lib.rb +3 -2
  45. data/lib/gir_ffi.rb +3 -3
  46. data/lib/gir_ffi/allocation_helper.rb +1 -1
  47. data/lib/gir_ffi/arg_helper.rb +4 -4
  48. data/lib/gir_ffi/{in_out_pointer.rb → array_element_convertor.rb} +16 -23
  49. data/lib/gir_ffi/boolean.rb +1 -1
  50. data/lib/gir_ffi/boxed_base.rb +1 -1
  51. data/lib/gir_ffi/builder.rb +18 -10
  52. data/lib/gir_ffi/builder_helper.rb +6 -1
  53. data/lib/gir_ffi/builders/argument_builder.rb +19 -19
  54. data/lib/gir_ffi/builders/argument_builder_collection.rb +2 -2
  55. data/lib/gir_ffi/builders/base_argument_builder.rb +1 -0
  56. data/lib/gir_ffi/builders/base_method_builder.rb +7 -7
  57. data/lib/gir_ffi/builders/base_return_value_builder.rb +1 -1
  58. data/lib/gir_ffi/builders/base_type_builder.rb +1 -1
  59. data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +5 -5
  60. data/lib/gir_ffi/builders/callback_argument_builder.rb +8 -8
  61. data/lib/gir_ffi/builders/callback_builder.rb +16 -4
  62. data/lib/gir_ffi/builders/callback_return_value_builder.rb +2 -2
  63. data/lib/gir_ffi/builders/closure_argument_builder.rb +1 -1
  64. data/lib/gir_ffi/builders/closure_return_value_builder.rb +1 -1
  65. data/lib/gir_ffi/builders/constant_builder.rb +1 -1
  66. data/lib/gir_ffi/builders/constructor_builder.rb +9 -9
  67. data/lib/gir_ffi/builders/enum_builder.rb +16 -3
  68. data/lib/gir_ffi/builders/field_builder.rb +20 -18
  69. data/lib/gir_ffi/builders/flags_builder.rb +2 -2
  70. data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +1 -1
  71. data/lib/gir_ffi/builders/function_builder.rb +11 -5
  72. data/lib/gir_ffi/builders/initializer_builder.rb +3 -3
  73. data/lib/gir_ffi/builders/initializer_return_value_builder.rb +2 -2
  74. data/lib/gir_ffi/builders/interface_builder.rb +2 -2
  75. data/lib/gir_ffi/builders/mapping_method_builder.rb +9 -9
  76. data/lib/gir_ffi/builders/marshalling_method_builder.rb +7 -7
  77. data/lib/gir_ffi/builders/method_template.rb +1 -1
  78. data/lib/gir_ffi/builders/module_builder.rb +7 -7
  79. data/lib/gir_ffi/builders/object_builder.rb +6 -6
  80. data/lib/gir_ffi/builders/property_argument_builder.rb +1 -1
  81. data/lib/gir_ffi/builders/property_builder.rb +13 -12
  82. data/lib/gir_ffi/builders/property_return_value_builder.rb +1 -1
  83. data/lib/gir_ffi/builders/registered_type_builder.rb +14 -5
  84. data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
  85. data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +6 -6
  86. data/lib/gir_ffi/builders/signal_closure_builder.rb +2 -2
  87. data/lib/gir_ffi/builders/struct_builder.rb +6 -4
  88. data/lib/gir_ffi/builders/struct_like.rb +1 -1
  89. data/lib/gir_ffi/builders/type_builder.rb +12 -12
  90. data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +2 -2
  91. data/lib/gir_ffi/builders/unintrospectable_builder.rb +2 -2
  92. data/lib/gir_ffi/builders/union_builder.rb +4 -4
  93. data/lib/gir_ffi/builders/user_defined_builder.rb +2 -2
  94. data/lib/gir_ffi/builders/vfunc_argument_builder.rb +1 -1
  95. data/lib/gir_ffi/builders/vfunc_builder.rb +8 -8
  96. data/lib/gir_ffi/builders/with_layout.rb +2 -2
  97. data/lib/gir_ffi/callback_base.rb +4 -6
  98. data/lib/gir_ffi/class_base.rb +6 -5
  99. data/lib/gir_ffi/core.rb +19 -20
  100. data/lib/gir_ffi/enum_base.rb +1 -1
  101. data/lib/gir_ffi/enum_like_base.rb +2 -2
  102. data/lib/gir_ffi/error_argument_info.rb +2 -2
  103. data/lib/gir_ffi/error_type_info.rb +1 -1
  104. data/lib/gir_ffi/ffi_ext.rb +1 -1
  105. data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
  106. data/lib/gir_ffi/flags_base.rb +1 -1
  107. data/lib/gir_ffi/in_pointer.rb +10 -0
  108. data/lib/gir_ffi/info_ext.rb +15 -14
  109. data/lib/gir_ffi/info_ext/full_type_name.rb +3 -3
  110. data/lib/gir_ffi/info_ext/i_arg_info.rb +1 -1
  111. data/lib/gir_ffi/info_ext/i_callable_info.rb +1 -1
  112. data/lib/gir_ffi/info_ext/i_callback_info.rb +1 -1
  113. data/lib/gir_ffi/info_ext/i_field_info.rb +1 -1
  114. data/lib/gir_ffi/info_ext/i_function_info.rb +1 -1
  115. data/lib/gir_ffi/info_ext/i_property_info.rb +2 -2
  116. data/lib/gir_ffi/info_ext/i_registered_type_info.rb +4 -5
  117. data/lib/gir_ffi/info_ext/i_signal_info.rb +7 -3
  118. data/lib/gir_ffi/info_ext/i_type_info.rb +48 -26
  119. data/lib/gir_ffi/info_ext/i_unresolved_info.rb +1 -1
  120. data/lib/gir_ffi/info_ext/i_value_info.rb +25 -0
  121. data/lib/gir_ffi/info_ext/i_vfunc_info.rb +2 -2
  122. data/lib/gir_ffi/info_ext/safe_constant_name.rb +8 -8
  123. data/lib/gir_ffi/info_ext/safe_function_name.rb +2 -2
  124. data/lib/gir_ffi/interface_base.rb +3 -3
  125. data/lib/gir_ffi/lib_c.rb +1 -1
  126. data/lib/gir_ffi/method_stubber.rb +1 -1
  127. data/lib/gir_ffi/module_base.rb +1 -1
  128. data/lib/gir_ffi/object_base.rb +3 -4
  129. data/lib/gir_ffi/receiver_argument_info.rb +1 -1
  130. data/lib/gir_ffi/receiver_type_info.rb +2 -2
  131. data/lib/gir_ffi/registered_type_base.rb +1 -1
  132. data/lib/gir_ffi/sized_array.rb +4 -2
  133. data/lib/gir_ffi/struct.rb +1 -1
  134. data/lib/gir_ffi/struct_base.rb +1 -1
  135. data/lib/gir_ffi/type_map.rb +2 -23
  136. data/lib/gir_ffi/unintrospectable_boxed_info.rb +2 -2
  137. data/lib/gir_ffi/unintrospectable_type_info.rb +5 -1
  138. data/lib/gir_ffi/union.rb +1 -1
  139. data/lib/gir_ffi/union_base.rb +1 -1
  140. data/lib/gir_ffi/user_defined_object_info.rb +6 -2
  141. data/lib/gir_ffi/user_defined_property_info.rb +33 -33
  142. data/lib/gir_ffi/version.rb +1 -1
  143. data/tasks/test.rake +3 -2
  144. data/test/base_test_helper.rb +16 -9
  145. data/test/ffi-glib/array_test.rb +71 -56
  146. data/test/ffi-glib/byte_array_test.rb +13 -7
  147. data/test/ffi-glib/bytes_test.rb +24 -19
  148. data/test/ffi-glib/closure_test.rb +11 -11
  149. data/test/ffi-glib/destroy_notify_test.rb +6 -6
  150. data/test/ffi-glib/hash_table_test.rb +27 -27
  151. data/test/ffi-glib/list_test.rb +22 -22
  152. data/test/ffi-glib/main_loop_test.rb +12 -12
  153. data/test/ffi-glib/ptr_array_test.rb +39 -39
  154. data/test/ffi-glib/ruby_closure_test.rb +10 -10
  155. data/test/ffi-glib/s_list_test.rb +20 -20
  156. data/test/ffi-glib/strv_test.rb +19 -19
  157. data/test/ffi-glib/variant_test.rb +5 -5
  158. data/test/ffi-gobject/gobject_test.rb +48 -44
  159. data/test/ffi-gobject/object_class_test.rb +8 -8
  160. data/test/ffi-gobject/object_test.rb +51 -68
  161. data/test/ffi-gobject/param_spec_test.rb +12 -12
  162. data/test/ffi-gobject/value_test.rb +145 -125
  163. data/test/ffi-gobject_introspection/gobject_type_init_test.rb +9 -9
  164. data/test/ffi-gobject_introspection/i_base_info_test.rb +15 -16
  165. data/test/ffi-gobject_introspection/i_constant_info_test.rb +9 -13
  166. data/test/ffi-gobject_introspection/i_enum_info_test.rb +7 -7
  167. data/test/ffi-gobject_introspection/i_function_info_test.rb +1 -1
  168. data/test/ffi-gobject_introspection/i_interface_info_test.rb +10 -10
  169. data/test/ffi-gobject_introspection/i_object_info_test.rb +23 -23
  170. data/test/ffi-gobject_introspection/i_property_info_test.rb +19 -19
  171. data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +10 -10
  172. data/test/ffi-gobject_introspection/i_repository_test.rb +34 -34
  173. data/test/ffi-gobject_introspection/i_struct_info_test.rb +10 -10
  174. data/test/ffi-gobject_introspection/i_type_info_test.rb +12 -15
  175. data/test/ffi-gobject_introspection/i_union_info_test.rb +7 -7
  176. data/test/ffi-gobject_introspection/i_vfunc_info_test.rb +16 -16
  177. data/test/ffi-gobject_introspection/lib_test.rb +3 -3
  178. data/test/ffi-gobject_introspection/strv_test.rb +9 -9
  179. data/test/ffi-gobject_test.rb +47 -45
  180. data/test/gir_ffi/allocation_helper_test.rb +13 -13
  181. data/test/gir_ffi/arg_helper_test.rb +71 -65
  182. data/test/gir_ffi/boolean_test.rb +20 -20
  183. data/test/gir_ffi/boxed_base_test.rb +18 -18
  184. data/test/gir_ffi/builder_test.rb +81 -213
  185. data/test/gir_ffi/builders/argument_builder_test.rb +321 -287
  186. data/test/gir_ffi/builders/base_argument_builder_test.rb +1 -1
  187. data/test/gir_ffi/builders/callback_argument_builder_test.rb +57 -56
  188. data/test/gir_ffi/builders/callback_builder_test.rb +71 -72
  189. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +40 -41
  190. data/test/gir_ffi/builders/constant_builder_test.rb +1 -1
  191. data/test/gir_ffi/builders/constructor_builder_test.rb +12 -10
  192. data/test/gir_ffi/builders/enum_builder_test.rb +12 -11
  193. data/test/gir_ffi/builders/field_builder_test.rb +48 -42
  194. data/test/gir_ffi/builders/function_builder_test.rb +256 -224
  195. data/test/gir_ffi/builders/initializer_builder_test.rb +16 -14
  196. data/test/gir_ffi/builders/interface_builder_test.rb +9 -9
  197. data/test/gir_ffi/builders/module_builder_test.rb +18 -18
  198. data/test/gir_ffi/builders/object_builder_test.rb +41 -41
  199. data/test/gir_ffi/builders/property_builder_test.rb +94 -94
  200. data/test/gir_ffi/builders/registered_type_builder_test.rb +35 -11
  201. data/test/gir_ffi/builders/return_value_builder_test.rb +227 -223
  202. data/test/gir_ffi/builders/signal_closure_builder_test.rb +124 -113
  203. data/test/gir_ffi/builders/struct_builder_test.rb +38 -35
  204. data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +8 -14
  205. data/test/gir_ffi/builders/unintrospectable_builder_test.rb +34 -23
  206. data/test/gir_ffi/builders/union_builder_test.rb +12 -15
  207. data/test/gir_ffi/builders/user_defined_builder_test.rb +152 -148
  208. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +46 -40
  209. data/test/gir_ffi/builders/vfunc_builder_test.rb +149 -157
  210. data/test/gir_ffi/callback_base_test.rb +9 -9
  211. data/test/gir_ffi/class_base_test.rb +56 -53
  212. data/test/gir_ffi/core_test.rb +36 -35
  213. data/test/gir_ffi/enum_base_test.rb +19 -19
  214. data/test/gir_ffi/error_type_info_test.rb +23 -23
  215. data/test/gir_ffi/ffi_ext/pointer_test.rb +9 -7
  216. data/test/gir_ffi/g_type_test.rb +11 -11
  217. data/test/gir_ffi/in_pointer_test.rb +70 -50
  218. data/test/gir_ffi/info_ext/i_callable_info_test.rb +5 -5
  219. data/test/gir_ffi/info_ext/i_callback_info_test.rb +6 -5
  220. data/test/gir_ffi/info_ext/i_field_info_test.rb +6 -6
  221. data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -17
  222. data/test/gir_ffi/info_ext/i_signal_info_test.rb +8 -8
  223. data/test/gir_ffi/info_ext/i_type_info_test.rb +231 -216
  224. data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +4 -4
  225. data/test/gir_ffi/info_ext/safe_constant_name_test.rb +8 -8
  226. data/test/gir_ffi/info_ext/safe_function_name_test.rb +8 -8
  227. data/test/gir_ffi/interface_base_test.rb +8 -8
  228. data/test/gir_ffi/method_stubber_test.rb +21 -19
  229. data/test/gir_ffi/object_base_test.rb +23 -23
  230. data/test/gir_ffi/object_store_test.rb +13 -13
  231. data/test/gir_ffi/receiver_argument_info_test.rb +15 -15
  232. data/test/gir_ffi/sized_array_test.rb +68 -68
  233. data/test/gir_ffi/struct_base_test.rb +8 -8
  234. data/test/gir_ffi/struct_like_base_test.rb +64 -64
  235. data/test/gir_ffi/type_map_test.rb +8 -8
  236. data/test/gir_ffi/unintrospectable_type_info_test.rb +33 -33
  237. data/test/gir_ffi/union_base_test.rb +8 -8
  238. data/test/gir_ffi/user_defined_object_info_test.rb +34 -34
  239. data/test/gir_ffi/user_defined_property_info_test.rb +16 -16
  240. data/test/gir_ffi/variable_name_generator_test.rb +8 -8
  241. data/test/gir_ffi/version_test.rb +4 -4
  242. data/test/gir_ffi/zero_terminated_test.rb +34 -34
  243. data/test/gir_ffi_test_helper.rb +3 -3
  244. data/test/integration/callback_exceptions_test.rb +17 -21
  245. data/test/integration/derived_classes_test.rb +14 -13
  246. data/test/integration/generated_everything_test.rb +225 -224
  247. data/test/integration/generated_gimarshallingtests_test.rb +1174 -1060
  248. data/test/integration/generated_gio_test.rb +36 -36
  249. data/test/integration/generated_glib_test.rb +4 -6
  250. data/test/integration/generated_gobject_test.rb +43 -35
  251. data/test/integration/generated_gst_test.rb +20 -16
  252. data/test/integration/generated_gtk_source_test.rb +9 -15
  253. data/test/integration/generated_gtop_test.rb +8 -15
  254. data/test/integration/generated_pango_ft2_test.rb +2 -2
  255. data/test/integration/generated_pango_test.rb +4 -4
  256. data/test/integration/generated_regress_test.rb +1858 -1632
  257. data/test/integration/generated_secret_test.rb +8 -11
  258. data/test/integration/generated_utility_test.rb +81 -81
  259. data/test/integration/generated_warnlib_test.rb +17 -21
  260. data/test/integration/method_lookup_test.rb +6 -6
  261. data/test/introspection_test_helper.rb +49 -7
  262. data/test/minitest/stats_plugin.rb +1 -1
  263. metadata +21 -23
  264. data/lib/ffi-glib/array_methods.rb +0 -16
  265. data/test/gir_ffi/in_out_pointer_test.rb +0 -56
@@ -1,17 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi_test_helper'
3
+ require "gir_ffi_test_helper"
4
4
 
5
- describe 'The generated Secret module' do
6
- describe 'Secret::Schema' do
7
- it 'has a working constructor' do
8
- begin
9
- GirFFI.setup :Secret
10
- rescue RuntimeError
11
- skip 'No GIR data for Secret available'
12
- end
13
- instance = Secret::Schema.new('foo', :none, 'bar' => :string)
14
- instance.must_be_instance_of Secret::Schema
5
+ GirFFI.setup :Secret
6
+
7
+ describe "The generated Secret module" do
8
+ describe "Secret::Schema" do
9
+ it "has a working constructor" do
10
+ instance = Secret::Schema.new("foo", :none, "bar" => :string)
11
+ _(instance).must_be_instance_of Secret::Schema
15
12
  end
16
13
  end
17
14
  end
@@ -1,174 +1,174 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi_test_helper'
3
+ require "gir_ffi_test_helper"
4
4
 
5
5
  GirFFI.setup :Utility
6
6
 
7
7
  describe Utility do
8
- describe 'Utility::Buffer' do
8
+ describe "Utility::Buffer" do
9
9
  let(:instance) { Utility::Buffer.new }
10
10
 
11
- it 'has a writable field data' do
12
- instance.data.must_equal FFI::Pointer::NULL
11
+ it "has a writable field data" do
12
+ _(instance.data).must_equal FFI::Pointer::NULL
13
13
  instance.data = FFI::Pointer.new 54_321
14
- instance.data.must_equal FFI::Pointer.new 54_321
14
+ _(instance.data).must_equal FFI::Pointer.new 54_321
15
15
  end
16
16
 
17
- it 'has a writable field length' do
18
- instance.length.must_equal 0
17
+ it "has a writable field length" do
18
+ _(instance.length).must_equal 0
19
19
  instance.length = 42
20
- instance.length.must_equal 42
20
+ _(instance.length).must_equal 42
21
21
  end
22
22
  end
23
23
 
24
- describe 'Utility::Byte' do
24
+ describe "Utility::Byte" do
25
25
  let(:instance) { Utility::Byte.new }
26
26
 
27
- it 'has a writable field value' do
28
- instance.value.must_equal 0
27
+ it "has a writable field value" do
28
+ _(instance.value).must_equal 0
29
29
  instance.value = 42
30
- instance.value.must_equal 42
30
+ _(instance.value).must_equal 42
31
31
  end
32
32
 
33
- it 'has a writable field first_nibble' do
34
- skip 'This field is not exposed in the GIR'
33
+ it "has a writable field first_nibble" do
34
+ skip "This field is not exposed in the GIR"
35
35
  instance.value = 0xAB
36
- instance.first_nibble.must_equal 0xA
36
+ _(instance.first_nibble).must_equal 0xA
37
37
  instance.first_nibble = 0x4
38
- instance.value.must_equal 0x4B
38
+ _(instance.value).must_equal 0x4B
39
39
  end
40
40
 
41
- it 'has a writable field second_nibble' do
42
- skip 'This field is not exposed in the GIR'
41
+ it "has a writable field second_nibble" do
42
+ skip "This field is not exposed in the GIR"
43
43
  instance.value = 0xAB
44
- instance.second_nibble.must_equal 0xB
44
+ _(instance.second_nibble).must_equal 0xB
45
45
  instance.second_nibble = 0x4
46
- instance.value.must_equal 0xA4
46
+ _(instance.value).must_equal 0xA4
47
47
  end
48
48
  end
49
49
 
50
- describe 'Utility::EnumType' do
51
- it 'has the member :a' do
52
- Utility::EnumType[:a].must_equal 0
50
+ describe "Utility::EnumType" do
51
+ it "has the member :a" do
52
+ _(Utility::EnumType[:a]).must_equal 0
53
53
  end
54
54
 
55
- it 'has the member :b' do
56
- Utility::EnumType[:b].must_equal 1
55
+ it "has the member :b" do
56
+ _(Utility::EnumType[:b]).must_equal 1
57
57
  end
58
58
 
59
- it 'has the member :c' do
60
- Utility::EnumType[:c].must_equal 2
59
+ it "has the member :c" do
60
+ _(Utility::EnumType[:c]).must_equal 2
61
61
  end
62
62
  end
63
63
 
64
- describe 'Utility::FlagType' do
65
- it 'has the member :a' do
66
- Utility::FlagType[:a].must_equal 1
64
+ describe "Utility::FlagType" do
65
+ it "has the member :a" do
66
+ _(Utility::FlagType[:a]).must_equal 1
67
67
  end
68
68
 
69
- it 'has the member :b' do
70
- Utility::FlagType[:b].must_equal 2
69
+ it "has the member :b" do
70
+ _(Utility::FlagType[:b]).must_equal 2
71
71
  end
72
72
 
73
- it 'has the member :c' do
74
- Utility::FlagType[:c].must_equal 4
73
+ it "has the member :c" do
74
+ _(Utility::FlagType[:c]).must_equal 4
75
75
  end
76
76
  end
77
77
 
78
- describe 'Utility::Object' do
78
+ describe "Utility::Object" do
79
79
  let(:instance) { Utility::Object.new }
80
80
 
81
- it 'has a working method #watch_dir' do
81
+ it "has a working method #watch_dir" do
82
82
  # This method doesn't actually do anything
83
- instance.watch_dir('/') {}
83
+ instance.watch_dir("/") {}
84
84
  pass
85
85
  end
86
86
  end
87
87
 
88
- describe 'Utility::Struct' do
88
+ describe "Utility::Struct" do
89
89
  let(:instance) { Utility::Struct.new }
90
90
 
91
- it 'has a writable field field' do
92
- instance.field.must_equal 0
91
+ it "has a writable field field" do
92
+ _(instance.field).must_equal 0
93
93
  instance.field = 42
94
- instance.field.must_equal 42
94
+ _(instance.field).must_equal 42
95
95
  end
96
96
 
97
- it 'has a writable field bitfield1' do
98
- skip 'Bitfield bit width is not implemented yet'
99
- instance.bitfield1.must_equal 0
97
+ it "has a writable field bitfield1" do
98
+ skip "Bitfield bit width is not implemented yet"
99
+ _(instance.bitfield1).must_equal 0
100
100
  instance.bitfield1 = 15
101
- instance.bitfield1.must_equal 7
101
+ _(instance.bitfield1).must_equal 7
102
102
  end
103
103
 
104
- it 'has a writable field bitfield2' do
105
- skip 'Bitfield bit width is not implemented yet'
106
- instance.bitfield2.must_equal 0
104
+ it "has a writable field bitfield2" do
105
+ skip "Bitfield bit width is not implemented yet"
106
+ _(instance.bitfield2).must_equal 0
107
107
  instance.bitfield2 = 15
108
- instance.bitfield2.must_equal 3
108
+ _(instance.bitfield2).must_equal 3
109
109
  end
110
110
 
111
- it 'has a writable field data' do
112
- instance.data.to_a.must_equal [0] * 16
111
+ it "has a writable field data" do
112
+ _(instance.data.to_a).must_equal [0] * 16
113
113
  end
114
114
  end
115
115
 
116
- describe 'Utility::TaggedValue' do
116
+ describe "Utility::TaggedValue" do
117
117
  let(:instance) { Utility::TaggedValue.new }
118
118
 
119
- it 'has a writable field tag' do
120
- instance.tag.must_equal 0
119
+ it "has a writable field tag" do
120
+ _(instance.tag).must_equal 0
121
121
  instance.tag = 42
122
- instance.tag.must_equal 42
122
+ _(instance.tag).must_equal 42
123
123
  end
124
124
 
125
- it 'has a writable field v_pointer' do
126
- skip 'This field is not exposed in the GIR'
127
- instance.v_pointer.must_equal FFI::Pointer::NULL
125
+ it "has a writable field v_pointer" do
126
+ skip "This field is not exposed in the GIR"
127
+ _(instance.v_pointer).must_equal FFI::Pointer::NULL
128
128
  instance.v_pointer = FFI::Pointer.new(4321)
129
- instance.v_pointer.must_equal FFI::Pointer.new(4321)
129
+ _(instance.v_pointer).must_equal FFI::Pointer.new(4321)
130
130
  end
131
131
 
132
- it 'has a writable field v_real' do
133
- skip 'This field is not exposed in the GIR'
134
- instance.v_real.must_equal 0.0
132
+ it "has a writable field v_real" do
133
+ skip "This field is not exposed in the GIR"
134
+ _(instance.v_real).must_equal 0.0
135
135
  instance.v_real = 42.23
136
- instance.v_real.must_equal 42.23
136
+ _(instance.v_real).must_equal 42.23
137
137
  end
138
138
 
139
- it 'has a writable field v_integer' do
140
- skip 'This field is not exposed in the GIR'
141
- instance.v_integer.must_equal 0
139
+ it "has a writable field v_integer" do
140
+ skip "This field is not exposed in the GIR"
141
+ _(instance.v_integer).must_equal 0
142
142
  instance.v_integer = 42
143
- instance.v_integer.must_equal 42
143
+ _(instance.v_integer).must_equal 42
144
144
  end
145
145
  end
146
146
 
147
- describe 'Utility::Union' do
147
+ describe "Utility::Union" do
148
148
  let(:instance) { Utility::Union.new }
149
149
 
150
- it 'has a writable field pointer' do
151
- instance.pointer.must_be_nil
152
- instance.pointer = 'hello 42'
153
- instance.pointer.must_equal 'hello 42'
150
+ it "has a writable field pointer" do
151
+ _(instance.pointer).must_be_nil
152
+ instance.pointer = "hello 42"
153
+ _(instance.pointer).must_equal "hello 42"
154
154
  end
155
155
 
156
- it 'has a writable field integer' do
157
- instance.integer.must_equal 0
156
+ it "has a writable field integer" do
157
+ _(instance.integer).must_equal 0
158
158
  instance.integer = 42
159
- instance.integer.must_equal 42
159
+ _(instance.integer).must_equal 42
160
160
  end
161
161
 
162
- it 'has a writable field real' do
163
- instance.real.must_equal 0.0
162
+ it "has a writable field real" do
163
+ _(instance.real).must_equal 0.0
164
164
  instance.real = 42.23
165
- instance.real.must_equal 42.23
165
+ _(instance.real).must_equal 42.23
166
166
  end
167
167
  end
168
168
 
169
- it 'has a working function #dir_foreach' do
169
+ it "has a working function #dir_foreach" do
170
170
  # This method doesn't actually do anything
171
- result = Utility.dir_foreach('/') {}
172
- result.must_be_nil
171
+ result = Utility.dir_foreach("/") {}
172
+ _(result).must_be_nil
173
173
  end
174
174
  end
@@ -1,17 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi_test_helper'
4
-
5
- describe 'The generated WarnLib module' do
6
- before do
7
- begin
8
- GirFFI.setup :WarnLib
9
- rescue RuntimeError
10
- skip 'WarnLib GIR not available'
11
- end
12
- end
3
+ require "gir_ffi_test_helper"
4
+
5
+ GirFFI.setup :WarnLib
13
6
 
14
- describe 'WarnLib::Whatever' do
7
+ describe "The generated WarnLib module" do
8
+ describe "WarnLib::Whatever" do
15
9
  let(:derived_klass) do
16
10
  Object.const_set("DerivedClass#{Sequence.next}", Class.new(GObject::Object))
17
11
  end
@@ -20,30 +14,32 @@ describe 'The generated WarnLib module' do
20
14
  @result = nil
21
15
  derived_klass.class_eval { include WarnLib::Whatever }
22
16
  GirFFI.define_type derived_klass do |info|
23
- info.install_vfunc_implementation :do_boo, proc { |_obj, x, _y| @result = "boo#{x}" }
24
- info.install_vfunc_implementation :do_moo, proc { |_obj, x, _y| @result = "moo#{x}" }
17
+ info.install_vfunc_implementation :do_boo,
18
+ proc { |_obj, x, _y| @result = "boo#{x}" }
19
+ info.install_vfunc_implementation :do_moo,
20
+ proc { |_obj, x, _y| @result = "moo#{x}" }
25
21
  end
26
22
  end
27
23
 
28
24
  let(:instance) { derived_klass.new }
29
25
 
30
- it 'has a working method #do_boo' do
26
+ it "has a working method #do_boo" do
31
27
  instance.do_boo 42, nil
32
- @result.must_equal 'boo42'
28
+ _(@result).must_equal "boo42"
33
29
  end
34
30
 
35
- it 'has a working method #do_moo' do
31
+ it "has a working method #do_moo" do
36
32
  instance.do_moo 23, nil
37
- @result.must_equal 'moo23'
33
+ _(@result).must_equal "moo23"
38
34
  end
39
35
  end
40
36
 
41
- it 'has a working function #throw_unpaired' do
42
- proc { WarnLib.throw_unpaired }.must_raise GirFFI::GLibError
37
+ it "has a working function #throw_unpaired" do
38
+ _(proc { WarnLib.throw_unpaired }).must_raise GirFFI::GLibError
43
39
  end
44
40
 
45
- it 'has a working function #unpaired_error_quark' do
41
+ it "has a working function #unpaired_error_quark" do
46
42
  result = WarnLib.unpaired_error_quark
47
- GLib.quark_to_string(result).must_equal 'warnlib-unpaired-error'
43
+ _(GLib.quark_to_string(result)).must_equal "warnlib-unpaired-error"
48
44
  end
49
45
  end
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'gir_ffi_test_helper'
3
+ require "gir_ffi_test_helper"
4
4
 
5
5
  # Tests how methods are looked up and generated on first use.
6
- describe 'Looking up methods' do
6
+ describe "Looking up methods" do
7
7
  before do
8
8
  save_module :Regress
9
9
  GirFFI.setup :Regress
10
10
  end
11
11
 
12
- describe 'an instance method' do
13
- it 'is found from a subclass' do
12
+ describe "an instance method" do
13
+ it "is found from a subclass" do
14
14
  assert_defines_instance_method Regress::TestObj, :forced_method
15
15
  refute_defines_instance_method Regress::TestSubObj, :forced_method
16
16
 
@@ -19,8 +19,8 @@ describe 'Looking up methods' do
19
19
  end
20
20
  end
21
21
 
22
- describe 'a class method' do
23
- it 'is found from a subclass' do
22
+ describe "a class method" do
23
+ it "is found from a subclass" do
24
24
  assert_defines_singleton_method Regress::TestObj, :static_method
25
25
  refute_defines_singleton_method Regress::TestSubObj, :static_method
26
26
 
@@ -1,16 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'base_test_helper'
3
+ require "base_test_helper"
4
4
 
5
- require 'ffi-gobject_introspection'
5
+ require "ffi-gobject_introspection"
6
6
 
7
- GObjectIntrospection::IRepository.prepend_search_path File.join(File.dirname(__FILE__), 'lib')
7
+ GObjectIntrospection::IRepository
8
+ .prepend_search_path File.join(File.dirname(__FILE__), "lib")
8
9
 
9
10
  module LocalSharedLibrary
10
11
  def shared_library(namespace)
11
12
  case namespace
12
- when 'Everything', 'GIMarshallingTests', 'Regress', 'Utility', 'WarnLib'
13
- File.join(File.dirname(__FILE__), 'lib', "lib#{namespace.downcase}.so")
13
+ when "Everything", "GIMarshallingTests", "Regress", "Utility", "WarnLib"
14
+ File.join(File.dirname(__FILE__), "lib", "lib#{namespace.downcase}.so")
14
15
  else
15
16
  super
16
17
  end
@@ -20,7 +21,9 @@ end
20
21
  GObjectIntrospection::IRepository.prepend LocalSharedLibrary
21
22
 
22
23
  module IntrospectionTestExtensions
23
- module_function
24
+ class << self
25
+ attr_accessor :version
26
+ end
24
27
 
25
28
  def get_introspection_data(namespace, name)
26
29
  gir = GObjectIntrospection::IRepository.default
@@ -47,6 +50,45 @@ module IntrospectionTestExtensions
47
50
  def get_vfunc_introspection_data(namespace, klass, name)
48
51
  get_introspection_data(namespace, klass).find_vfunc name
49
52
  end
53
+
54
+ def skip_below(introduction_version)
55
+ unless LATEST_VERSION >= introduction_version
56
+ raise "Version #{introduction_version} is too new and would always be skipped"
57
+ end
58
+
59
+ skip "Introduced in #{introduction_version}" if introduction_version > version
60
+ end
61
+
62
+ def version
63
+ IntrospectionTestExtensions.version ||= calculate_version
64
+ end
65
+
66
+ VERSION_GUARDS = {
67
+ "1.61.1" => %w(Regress TestObj emit_sig_with_error),
68
+ "1.59.4" => %w(Regress test_array_struct_in_none),
69
+ "1.58.3" => %w(Regress TestReferenceCounters),
70
+ "1.57.2" => %w(Regress TestInterface emit_signal),
71
+ "1.55.2" => %w(Regress FOO_FLAGS_SECOND_AND_THIRD),
72
+ "1.53.4" => %w(Regress TestObj name_conflict),
73
+ "1.49.1" => %w(Regress AnonymousUnionAndStruct),
74
+ "1.47.92" => %w(Regress get_variant),
75
+ "1.47.1" => %w(Regress test_noptr_callback)
76
+ }.freeze
77
+
78
+ LATEST_VERSION = VERSION_GUARDS.keys.first
79
+
80
+ def calculate_version
81
+ VERSION_GUARDS.each do |version, (namespace, klass, methodname)|
82
+ result = if methodname
83
+ get_method_introspection_data(namespace, klass, methodname)
84
+ else
85
+ get_introspection_data(namespace, klass)
86
+ end
87
+ return version if result
88
+ end
89
+
90
+ "1.46.0" # Minimum supported version
91
+ end
50
92
  end
51
93
 
52
- Minitest::Test.send :include, IntrospectionTestExtensions
94
+ Minitest::Test.include IntrospectionTestExtensions