gir_ffi 0.15.2 → 0.15.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +11 -0
  3. data/Gemfile +1 -1
  4. data/lib/ffi-gobject/value.rb +3 -1
  5. data/lib/ffi-gobject_introspection/i_base_info.rb +1 -1
  6. data/lib/gir_ffi/builder_helper.rb +6 -1
  7. data/lib/gir_ffi/builders/callback_builder.rb +13 -1
  8. data/lib/gir_ffi/builders/enum_builder.rb +6 -2
  9. data/lib/gir_ffi/builders/field_builder.rb +2 -1
  10. data/lib/gir_ffi/builders/module_builder.rb +3 -1
  11. data/lib/gir_ffi/builders/struct_builder.rb +3 -1
  12. data/lib/gir_ffi/callback_base.rb +3 -5
  13. data/lib/gir_ffi/class_base.rb +1 -0
  14. data/lib/gir_ffi/version.rb +1 -1
  15. data/test/ffi-gobject/object_test.rb +3 -2
  16. data/test/ffi-gobject/value_test.rb +1 -1
  17. data/test/ffi-gobject_introspection/i_base_info_test.rb +1 -1
  18. data/test/ffi-gobject_test.rb +4 -2
  19. data/test/gir_ffi/arg_helper_test.rb +13 -6
  20. data/test/gir_ffi/boxed_base_test.rb +1 -1
  21. data/test/gir_ffi/builder_test.rb +3 -157
  22. data/test/gir_ffi/builders/argument_builder_test.rb +73 -33
  23. data/test/gir_ffi/builders/callback_argument_builder_test.rb +6 -2
  24. data/test/gir_ffi/builders/callback_return_value_builder_test.rb +5 -2
  25. data/test/gir_ffi/builders/constructor_builder_test.rb +3 -1
  26. data/test/gir_ffi/builders/field_builder_test.rb +9 -3
  27. data/test/gir_ffi/builders/function_builder_test.rb +30 -10
  28. data/test/gir_ffi/builders/initializer_builder_test.rb +3 -1
  29. data/test/gir_ffi/builders/object_builder_test.rb +6 -6
  30. data/test/gir_ffi/builders/property_builder_test.rb +5 -2
  31. data/test/gir_ffi/builders/return_value_builder_test.rb +20 -9
  32. data/test/gir_ffi/builders/signal_closure_builder_test.rb +9 -7
  33. data/test/gir_ffi/builders/struct_builder_test.rb +6 -3
  34. data/test/gir_ffi/builders/user_defined_builder_test.rb +7 -3
  35. data/test/gir_ffi/builders/vfunc_argument_builder_test.rb +11 -5
  36. data/test/gir_ffi/builders/vfunc_builder_test.rb +10 -6
  37. data/test/gir_ffi/class_base_test.rb +17 -12
  38. data/test/gir_ffi/core_test.rb +4 -3
  39. data/test/gir_ffi/ffi_ext/pointer_test.rb +4 -2
  40. data/test/gir_ffi/info_ext/i_callback_info_test.rb +2 -1
  41. data/test/gir_ffi/info_ext/i_type_info_test.rb +2 -1
  42. data/test/gir_ffi/method_stubber_test.rb +3 -1
  43. data/test/integration/derived_classes_test.rb +1 -0
  44. data/test/integration/generated_everything_test.rb +2 -1
  45. data/test/integration/generated_gimarshallingtests_test.rb +57 -44
  46. data/test/integration/generated_gtk_source_test.rb +6 -17
  47. data/test/integration/generated_regress_test.rb +16 -2
  48. data/test/integration/generated_warnlib_test.rb +4 -2
  49. data/test/introspection_test_helper.rb +2 -1
  50. metadata +22 -8
@@ -21,7 +21,9 @@ describe GirFFI::Builders::InitializerBuilder do
21
21
  end
22
22
 
23
23
  describe "for constructors with a custom name" do
24
- let(:function_info) { get_method_introspection_data "Regress", "TestObj", "new_from_file" }
24
+ let(:function_info) do
25
+ get_method_introspection_data "Regress", "TestObj", "new_from_file"
26
+ end
25
27
  it "builds a custom initializer" do
26
28
  _(code).must_equal <<~CODE
27
29
  def initialize_from_file(x)
@@ -17,20 +17,20 @@ describe GirFFI::Builders::ObjectBuilder do
17
17
  end
18
18
 
19
19
  describe "#find_signal" do
20
- it 'finds the signal "test" for TestObj' do
20
+ it 'finds a signal defined on the class itself' do
21
21
  sig = obj_builder.find_signal "test"
22
22
  _(sig.name).must_equal "test"
23
23
  end
24
24
 
25
- it 'finds the signal "test" for TestSubObj' do
25
+ it 'finds a signal defined on a superclass' do
26
26
  sig = sub_obj_builder.find_signal "test"
27
27
  _(sig.name).must_equal "test"
28
28
  end
29
29
 
30
- it 'finds the signal "changed" for Gtk::Entry' do
31
- builder = GirFFI::Builders::ObjectBuilder.new get_introspection_data("Gtk", "Entry")
32
- sig = builder.find_signal "changed"
33
- _(sig.name).must_equal "changed"
30
+ it 'finds signals defined on interfaces' do
31
+ skip_below "1.57.2"
32
+ sig = sub_obj_builder.find_signal "interface-signal"
33
+ _(sig.name).must_equal "interface-signal"
34
34
  end
35
35
 
36
36
  it "returns nil for a signal that doesn't exist" do
@@ -32,7 +32,9 @@ describe GirFFI::Builders::PropertyBuilder do
32
32
  end
33
33
 
34
34
  describe "for a property of type :ghash" do
35
- let(:property_info) { get_property_introspection_data("Regress", "TestObj", "hash-table") }
35
+ let(:property_info) do
36
+ get_property_introspection_data("Regress", "TestObj", "hash-table")
37
+ end
36
38
  it "generates the correct getter definition" do
37
39
  expected = <<~CODE
38
40
  def hash_table
@@ -148,7 +150,8 @@ describe GirFFI::Builders::PropertyBuilder do
148
150
  before do
149
151
  allow(property_info).to receive(:container).and_return container_info
150
152
  allow(property_info).to receive(:name).and_return "foo-bar"
151
- allow(container_info).to receive(:find_instance_method).with("foo_bar").and_return true
153
+ allow(container_info)
154
+ .to receive(:find_instance_method).with("foo_bar").and_return true
152
155
  end
153
156
 
154
157
  it "finds methods with underscores for properties with dashes" do
@@ -6,7 +6,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
6
6
  let(:var_gen) { GirFFI::VariableNameGenerator.new }
7
7
  let(:type_info) { method_info.return_type }
8
8
  let(:ownership_transfer) { method_info.caller_owns }
9
- let(:return_type_info) { GirFFI::ReturnValueInfo.new(type_info, ownership_transfer, false) }
9
+ let(:return_type_info) do
10
+ GirFFI::ReturnValueInfo.new(type_info, ownership_transfer, false)
11
+ end
10
12
  let(:builder) do
11
13
  GirFFI::Builders::ReturnValueBuilder.new(var_gen, return_type_info)
12
14
  end
@@ -37,7 +39,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
37
39
 
38
40
  it "wraps and copies the result in #post_conversion" do
39
41
  _(builder.capture_variable_name).must_equal "_v1"
40
- _(builder.post_conversion).must_equal ["_v2 = GIMarshallingTests::BoxedStruct.wrap_copy(_v1)"]
42
+ _(builder.post_conversion)
43
+ .must_equal ["_v2 = GIMarshallingTests::BoxedStruct.wrap_copy(_v1)"]
41
44
  end
42
45
 
43
46
  it "returns the copied result" do
@@ -56,7 +59,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
56
59
 
57
60
  it "wraps the result in #post_conversion" do
58
61
  _(builder.capture_variable_name).must_equal "_v1"
59
- _(builder.post_conversion).must_equal ["_v2 = GIMarshallingTests::Union.wrap_copy(_v1)"]
62
+ _(builder.post_conversion)
63
+ .must_equal ["_v2 = GIMarshallingTests::Union.wrap_copy(_v1)"]
60
64
  end
61
65
 
62
66
  it "returns the wrapped result" do
@@ -112,7 +116,9 @@ describe GirFFI::Builders::ReturnValueBuilder do
112
116
  it "wraps the result in #post_conversion" do
113
117
  _(builder.capture_variable_name).must_equal "_v1"
114
118
  _(builder.post_conversion)
115
- .must_equal ["_v2 = GIMarshallingTests::Object.wrap(_v1).tap { |it| it && it.ref }"]
119
+ .must_equal [
120
+ "_v2 = GIMarshallingTests::Object.wrap(_v1).tap { |it| it && it.ref }"
121
+ ]
116
122
  end
117
123
 
118
124
  it "returns the wrapped result" do
@@ -149,7 +155,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
149
155
 
150
156
  it "wraps the result in #post_conversion" do
151
157
  _(builder.capture_variable_name).must_equal "_v1"
152
- _(builder.post_conversion).must_equal ["_v2 = GirFFI::ZeroTerminated.wrap(:guint8, _v1)"]
158
+ _(builder.post_conversion)
159
+ .must_equal ["_v2 = GirFFI::ZeroTerminated.wrap(:guint8, _v1)"]
153
160
  end
154
161
 
155
162
  it "returns the wrapped result" do
@@ -234,7 +241,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
234
241
 
235
242
  it "wraps the result in #post_conversion" do
236
243
  _(builder.capture_variable_name).must_equal "_v1"
237
- _(builder.post_conversion).must_equal ["_v2 = GLib::HashTable.wrap([:gint32, :gint32], _v1)"]
244
+ _(builder.post_conversion)
245
+ .must_equal ["_v2 = GLib::HashTable.wrap([:gint32, :gint32], _v1)"]
238
246
  end
239
247
 
240
248
  it "returns the wrapped result" do
@@ -286,7 +294,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
286
294
 
287
295
  it "converts the result in #post_conversion" do
288
296
  _(builder.capture_variable_name).must_equal "_v1"
289
- _(builder.post_conversion).must_equal ["_v2 = GirFFI::SizedArray.wrap(:gint32, 4, _v1)"]
297
+ _(builder.post_conversion)
298
+ .must_equal ["_v2 = GirFFI::SizedArray.wrap(:gint32, 4, _v1)"]
290
299
  end
291
300
 
292
301
  it "returns the wrapped result" do
@@ -310,7 +319,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
310
319
 
311
320
  it "converts the result in #post_conversion" do
312
321
  _(builder.capture_variable_name).must_equal "_v1"
313
- _(builder.post_conversion).must_equal ["_v2 = GirFFI::SizedArray.wrap(:gint32, bar, _v1)"]
322
+ _(builder.post_conversion)
323
+ .must_equal ["_v2 = GirFFI::SizedArray.wrap(:gint32, bar, _v1)"]
314
324
  end
315
325
 
316
326
  it "returns the wrapped result" do
@@ -403,7 +413,8 @@ describe GirFFI::Builders::ReturnValueBuilder do
403
413
 
404
414
  it "fetches the stored object in #post_conversion" do
405
415
  _(builder.capture_variable_name).must_equal "_v1"
406
- _(builder.post_conversion).must_equal ["_v2 = GirFFI::ArgHelper::OBJECT_STORE.fetch(_v1)"]
416
+ _(builder.post_conversion)
417
+ .must_equal ["_v2 = GirFFI::ArgHelper::OBJECT_STORE.fetch(_v1)"]
407
418
  end
408
419
 
409
420
  it "returns the stored object" do
@@ -134,19 +134,21 @@ describe GirFFI::Builders::SignalClosureBuilder do
134
134
  end
135
135
  end
136
136
 
137
- describe "for a signal returning an string" do
137
+ describe "for a signal returning a string" do
138
138
  let(:signal_info) do
139
- get_signal_introspection_data "Gtk", "Scale", "format-value"
139
+ get_signal_introspection_data "Regress", "AnnotationObject", "attribute-signal"
140
140
  end
141
141
 
142
- it "returns a mapping method that passes the string result to return_value directly" do
142
+ it "returns a mapping method that passes the string result to return_value directly" \
143
+ do
143
144
  expected = <<~CODE
144
145
  def self.marshaller(closure, return_value, param_values, _invocation_hint, _marshal_data)
145
- _instance, value = param_values.map(&:get_value_plain)
146
+ _instance, arg1, arg2 = param_values.map(&:get_value_plain)
146
147
  _v1 = _instance
147
- _v2 = value
148
- _v3 = wrap(closure.to_ptr).invoke_block(_v1, _v2)
149
- return_value.set_value _v3
148
+ _v2 = arg1
149
+ _v3 = arg2
150
+ _v4 = wrap(closure.to_ptr).invoke_block(_v1, _v2, _v3)
151
+ return_value.set_value _v4
150
152
  end
151
153
  CODE
152
154
 
@@ -34,9 +34,12 @@ describe GirFFI::Builders::StructBuilder do
34
34
 
35
35
  describe "for a struct with a layout with a complex type" do
36
36
  it "does not flatten the complex type specification" do
37
- expect(simplefield = Object.new).to receive(:layout_specification).and_return [:bar, :foo, 0]
38
- expect(complexfield = Object.new).to receive(:layout_specification).and_return [:baz, [:qux, 2], 0]
39
- expect(struct = Object.new).to receive(:fields).and_return [simplefield, complexfield]
37
+ expect(simplefield = Object.new)
38
+ .to receive(:layout_specification).and_return [:bar, :foo, 0]
39
+ expect(complexfield = Object.new)
40
+ .to receive(:layout_specification).and_return [:baz, [:qux, 2], 0]
41
+ expect(struct = Object.new)
42
+ .to receive(:fields).and_return [simplefield, complexfield]
40
43
 
41
44
  allow(struct).to receive(:safe_name).and_return "Bar"
42
45
  allow(struct).to receive(:namespace).and_return "Foo"
@@ -94,11 +94,14 @@ describe GirFFI::Builders::UserDefinedBuilder do
94
94
  _(q.instance_size).must_equal expected_size
95
95
  end
96
96
 
97
- it "gives the type's Struct fields for the parent and the properties with the correct offsets" do
97
+ it "creates fields for the parents and properties in the type's Struct" do
98
98
  offsets = derived_class::Struct.offsets
99
99
  alignment = derived_class::Struct.alignment
100
100
  _(alignment).must_equal 8 # TODO: Fix tests for platforms where this fails.
101
- _(offsets).must_equal [[:parent, 0], [:string_prop, 32], [:int_prop, 40], [:long_prop, 48]]
101
+ _(offsets).must_equal [[:parent, 0],
102
+ [:string_prop, 32],
103
+ [:int_prop, 40],
104
+ [:long_prop, 48]]
102
105
  end
103
106
 
104
107
  it "creates accessor functions for the string property" do
@@ -194,7 +197,8 @@ describe GirFFI::Builders::UserDefinedBuilder do
194
197
 
195
198
  _(object_ref_count(object)).must_equal 1
196
199
  obj.set_property("object_prop", object)
197
- _(object_ref_count(object)).must_equal 4 # Due to extra Value#set_value + Value#get_value
200
+ # Expect 4 due to extra Value#set_value + Value#get_value
201
+ _(object_ref_count(object)).must_equal 4
198
202
  end
199
203
  end
200
204
 
@@ -23,7 +23,8 @@ describe GirFFI::Builders::VFuncArgumentBuilder do
23
23
 
24
24
  describe "for a transfer-none in argument" do
25
25
  let(:vfunc_info) do
26
- get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_in_object_transfer_none"
26
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
27
+ "vfunc_in_object_transfer_none"
27
28
  end
28
29
  let(:arg_info) { vfunc_info.args[0] }
29
30
 
@@ -38,7 +39,8 @@ describe GirFFI::Builders::VFuncArgumentBuilder do
38
39
 
39
40
  describe "for a transfer-none outgoing object argument" do
40
41
  let(:vfunc_info) do
41
- get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_out_object_transfer_none"
42
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
43
+ "vfunc_out_object_transfer_none"
42
44
  end
43
45
  let(:arg_info) { vfunc_info.args[0] }
44
46
 
@@ -53,7 +55,8 @@ describe GirFFI::Builders::VFuncArgumentBuilder do
53
55
 
54
56
  describe "for a full-transfer outgoing object argument" do
55
57
  let(:vfunc_info) do
56
- get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_out_object_transfer_full"
58
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
59
+ "vfunc_out_object_transfer_full"
57
60
  end
58
61
  let(:arg_info) { vfunc_info.args[0] }
59
62
 
@@ -63,7 +66,8 @@ describe GirFFI::Builders::VFuncArgumentBuilder do
63
66
 
64
67
  it "has the correct value for #post_conversion" do
65
68
  builder.pre_conversion
66
- _(builder.post_conversion).must_equal ["_v2.ref", "_v1.put_pointer 0, GObject::Object.from(_v2)"]
69
+ _(builder.post_conversion)
70
+ .must_equal ["_v2.ref", "_v1.put_pointer 0, GObject::Object.from(_v2)"]
67
71
  end
68
72
  end
69
73
 
@@ -76,7 +80,9 @@ describe GirFFI::Builders::VFuncArgumentBuilder do
76
80
 
77
81
  it "has the correct value for #pre_conversion" do
78
82
  _(builder.pre_conversion)
79
- .must_equal ["_v1 = FFI::MemoryPointer.new(:int8).tap { |ptr| out.put_pointer 0, ptr }"]
83
+ .must_equal [
84
+ "_v1 = FFI::MemoryPointer.new(:int8).tap { |ptr| out.put_pointer 0, ptr }"
85
+ ]
80
86
  end
81
87
 
82
88
  it "has the correct value for #post_conversion" do
@@ -85,7 +85,7 @@ describe GirFFI::Builders::VFuncBuilder do
85
85
  end
86
86
  end
87
87
 
88
- describe "for a vfunc with an out argument allocated by us, the callee" do
88
+ describe "for a vfunc with an out argument allocated by the callee" do
89
89
  let(:vfunc_info) do
90
90
  get_vfunc_introspection_data("GIMarshallingTests", "Object",
91
91
  "method_int8_arg_and_out_callee")
@@ -106,7 +106,7 @@ describe GirFFI::Builders::VFuncBuilder do
106
106
  end
107
107
  end
108
108
 
109
- describe "for a vfunc with a GObject::Value out argument allocated by them, the caller" do
109
+ describe "for a vfunc with a GObject::Value out argument allocated by the caller" do
110
110
  let(:vfunc_info) do
111
111
  get_vfunc_introspection_data("GIMarshallingTests", "Object",
112
112
  "vfunc_caller_allocated_out_parameter")
@@ -153,7 +153,8 @@ describe GirFFI::Builders::VFuncBuilder do
153
153
 
154
154
  describe "for a vfunc with a full-transfer return value" do
155
155
  let(:vfunc_info) do
156
- get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_return_object_transfer_full"
156
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
157
+ "vfunc_return_object_transfer_full"
157
158
  end
158
159
 
159
160
  it "returns a valid mapping method" do
@@ -173,7 +174,8 @@ describe GirFFI::Builders::VFuncBuilder do
173
174
 
174
175
  describe "for a vfunc with a transfer-none in argument" do
175
176
  let(:vfunc_info) do
176
- get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_in_object_transfer_none"
177
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
178
+ "vfunc_in_object_transfer_none"
177
179
  end
178
180
 
179
181
  it "returns a valid mapping method" do
@@ -192,7 +194,8 @@ describe GirFFI::Builders::VFuncBuilder do
192
194
 
193
195
  describe "for a vfunc with a full-transfer outgoing argument" do
194
196
  let(:vfunc_info) do
195
- get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_out_object_transfer_full"
197
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
198
+ "vfunc_out_object_transfer_full"
196
199
  end
197
200
 
198
201
  it "returns a valid mapping method" do
@@ -230,7 +233,8 @@ describe GirFFI::Builders::VFuncBuilder do
230
233
 
231
234
  describe "for a vfunc returning an object" do
232
235
  let(:vfunc_info) do
233
- get_vfunc_introspection_data "GIMarshallingTests", "Object", "vfunc_return_object_transfer_full"
236
+ get_vfunc_introspection_data "GIMarshallingTests", "Object",
237
+ "vfunc_return_object_transfer_full"
234
238
  end
235
239
 
236
240
  it "returns :pointer" do
@@ -19,14 +19,14 @@ describe GirFFI::ClassBase do
19
19
  end
20
20
 
21
21
  describe "#==" do
22
- it "returns true when comparing to an object of the same class and pointer" do
22
+ it "returns true for an object of the same class and pointer" do
23
23
  other = object_class.wrap object.to_ptr
24
24
 
25
25
  _(object).must_be :==, other
26
26
  _(other).must_be :==, object
27
27
  end
28
28
 
29
- it "returns true when comparing to an object of the same class and a pointer with the same address" do
29
+ it "returns true for an object of the same class and pointer with the same address" do
30
30
  ptr = FFI::Pointer.new object.to_ptr
31
31
  other = object_class.wrap ptr
32
32
 
@@ -34,7 +34,7 @@ describe GirFFI::ClassBase do
34
34
  _(other).must_be :==, object
35
35
  end
36
36
 
37
- it "returns false when comparing to an object of a sub/superclass and the same pointer" do
37
+ it "returns false for an object of a sub/superclass and the same pointer" do
38
38
  subclass = Class.new(object_class)
39
39
  other = subclass.wrap object.to_ptr
40
40
 
@@ -42,29 +42,30 @@ describe GirFFI::ClassBase do
42
42
  _(other).wont_be :==, object
43
43
  end
44
44
 
45
- it "returns false when comparing to an object of the same class and different pointer" do
45
+ it "returns false for an object of the same class and different pointer" do
46
46
  other = object_class.wrap FFI::MemoryPointer.new(:int32)
47
47
 
48
48
  _(object).wont_be :==, other
49
49
  _(other).wont_be :==, object
50
50
  end
51
51
 
52
- it "returns false when comparing to an object that doesn't respond to #to_ptr" do
52
+ it "returns false for an object that doesn't respond to #to_ptr" do
53
53
  other = Object.new
54
54
 
55
55
  _(object).wont_be :==, other
56
56
  _(other).wont_be :==, object
57
57
  end
58
58
 
59
- it "returns false when comparing to an object of a different class and same pointer" do
59
+ it "returns false for an object of a different class and same pointer" do
60
60
  allow(other = Object.new).to receive(:to_ptr).and_return object.to_ptr
61
61
 
62
62
  _(object).wont_be :==, other
63
63
  _(other).wont_be :==, object
64
64
  end
65
65
 
66
- it "returns false when comparing to an object of a different class and different pointer" do
67
- allow(other = Object.new).to receive(:to_ptr).and_return FFI::MemoryPointer.new(:int32)
66
+ it "returns false for an object of a different class and different pointer" do
67
+ allow(other = Object.new)
68
+ .to receive(:to_ptr).and_return FFI::MemoryPointer.new(:int32)
68
69
 
69
70
  _(object).wont_be :==, other
70
71
  _(other).wont_be :==, object
@@ -116,11 +117,13 @@ describe GirFFI::ClassBase do
116
117
 
117
118
  describe "#setup_and_call" do
118
119
  it "looks up instance methods in all builders" do
119
- expect(builder = Object.new).to receive(:setup_instance_method).with("foo").and_return "foo"
120
+ expect(builder = Object.new)
121
+ .to receive(:setup_instance_method).with("foo").and_return "foo"
120
122
  klass = Class.new GirFFI::ClassBase
121
123
  klass.const_set :GIR_FFI_BUILDER, builder
122
124
 
123
- expect(sub_builder = Object.new).to receive(:setup_instance_method).with("foo").and_return nil
125
+ expect(sub_builder = Object.new)
126
+ .to receive(:setup_instance_method).with("foo").and_return nil
124
127
  sub_klass = Class.new klass do
125
128
  def foo; end
126
129
 
@@ -134,7 +137,8 @@ describe GirFFI::ClassBase do
134
137
  end
135
138
 
136
139
  it "calls the method given by the result of .setup_instance_method" do
137
- expect(builder = Object.new).to receive(:setup_instance_method).with("foo").and_return "bar"
140
+ expect(builder = Object.new)
141
+ .to receive(:setup_instance_method).with("foo").and_return "bar"
138
142
  klass = Class.new GirFFI::ClassBase do
139
143
  def bar
140
144
  "correct-result"
@@ -151,7 +155,8 @@ describe GirFFI::ClassBase do
151
155
  end
152
156
 
153
157
  it "raises a sensible error if the method is not found" do
154
- expect(builder = Object.new).to receive(:setup_instance_method).with("foo").and_return nil
158
+ expect(builder = Object.new)
159
+ .to receive(:setup_instance_method).with("foo").and_return nil
155
160
  klass = Class.new GirFFI::ClassBase do
156
161
  def initialize; end
157
162
  end
@@ -18,12 +18,13 @@ describe GirFFI::Core do
18
18
  end
19
19
 
20
20
  it "sets up dependencies" do
21
- save_module :GObject
21
+ save_module :Utility
22
22
  save_module :Regress
23
+ refute Object.const_defined?(:Utility)
23
24
  GirFFI.setup :Regress
24
- assert Object.const_defined?(:GObject)
25
+ assert Object.const_defined?(:Utility)
25
26
  restore_module :Regress
26
- restore_module :GObject
27
+ restore_module :Utility
27
28
  end
28
29
 
29
30
  describe ".setup" do
@@ -10,8 +10,10 @@ describe GirFFI::FFIExt::Pointer do
10
10
  expect(ptr).to receive(:null?).and_return false
11
11
  object_class = Class.new
12
12
 
13
- expect(GObject).to receive(:type_from_instance_pointer).with(ptr).and_return 0xdeadbeef
14
- expect(GirFFI::Builder).to receive(:build_by_gtype).with(0xdeadbeef).and_return object_class
13
+ expect(GObject)
14
+ .to receive(:type_from_instance_pointer).with(ptr).and_return 0xdeadbeef
15
+ expect(GirFFI::Builder)
16
+ .to receive(:build_by_gtype).with(0xdeadbeef).and_return object_class
15
17
  expect(object_class).to receive(:direct_wrap).with(ptr).and_return "good-result"
16
18
 
17
19
  _(ptr.to_object).must_equal "good-result"