gir_ffi 0.15.2 → 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 (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"