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
@@ -12,7 +12,8 @@ describe GirFFI::InfoExt::ICallbackInfo do
12
12
 
13
13
  describe "#return_ffi_type" do
14
14
  it "returns the callback ffi type of the return type" do
15
- allow(return_type_info = Object.new).to receive(:to_callback_ffi_type).and_return :some_type
15
+ allow(return_type_info = Object.new)
16
+ .to receive(:to_callback_ffi_type).and_return :some_type
16
17
  allow(callback_info).to receive(:return_type).and_return return_type_info
17
18
 
18
19
  _(callback_info.return_ffi_type).must_equal :some_type
@@ -195,7 +195,8 @@ describe GirFFI::InfoExt::ITypeInfo do
195
195
  allow(type_info).to receive(:interface).and_return iface_info
196
196
  expect(type_info).to receive(:pointer?).and_return false
197
197
 
198
- expect(GirFFI::Builder).to receive(:build_class).with(iface_info).and_return interface
198
+ expect(GirFFI::Builder)
199
+ .to receive(:build_class).with(iface_info).and_return interface
199
200
  end
200
201
 
201
202
  describe "when the interface type is :enum" do
@@ -50,7 +50,9 @@ describe GirFFI::MethodStubber do
50
50
  end
51
51
 
52
52
  describe "for a method with an empty name" do
53
- let(:method_info) { get_method_introspection_data("Regress", "TestObj", "instance_method") }
53
+ let(:method_info) do
54
+ get_method_introspection_data("Regress", "TestObj", "instance_method")
55
+ end
54
56
 
55
57
  it "creates a method stub with a safe name that sets up the unsafe method" do
56
58
  allow(method_info).to receive(:name).and_return ""
@@ -38,6 +38,7 @@ describe "For derived classes" do
38
38
  it "works if it calls super" do
39
39
  klass = Class.new Regress::TestSubObj do
40
40
  attr_reader :animal
41
+
41
42
  def initialize(animal)
42
43
  super()
43
44
  @animal = animal
@@ -340,7 +340,8 @@ describe Everything do
340
340
  end
341
341
 
342
342
  it "has a working function #passthrough_one_GType" do
343
- _(Everything.passthrough_one_GType(GObject::TYPE_OBJECT)).must_equal GObject::TYPE_OBJECT
343
+ _(Everything.passthrough_one_GType(GObject::TYPE_OBJECT))
344
+ .must_equal GObject::TYPE_OBJECT
344
345
  end
345
346
 
346
347
  it "has a working function #passthrough_one_filename" do
@@ -357,11 +357,13 @@ describe GIMarshallingTests do
357
357
  result = nil
358
358
 
359
359
  derived_instance = make_derived_instance do |info|
360
- info.install_vfunc_implementation :vfunc_with_callback, proc { |_obj, callback, callback_data|
361
- cb = callback
362
- user_data = callback_data.address
363
- result = callback.call(42, callback_data)
364
- }
360
+ info.install_vfunc_implementation(
361
+ :vfunc_with_callback,
362
+ proc { |_obj, callback, callback_data|
363
+ cb = callback
364
+ user_data = callback_data.address
365
+ result = callback.call(42, callback_data)
366
+ })
365
367
  end
366
368
  derived_instance.call_vfunc_with_callback
367
369
 
@@ -379,9 +381,11 @@ describe GIMarshallingTests do
379
381
  it "has a working method #get_ref_info_for_vfunc_in_object_transfer_full" do
380
382
  obj = nil
381
383
  derived_instance = make_derived_instance do |info|
382
- info.install_vfunc_implementation :vfunc_in_object_transfer_full, proc { |_this, object|
383
- obj = object
384
- }
384
+ info.install_vfunc_implementation(
385
+ :vfunc_in_object_transfer_full,
386
+ proc { |_this, object|
387
+ obj = object
388
+ })
385
389
  end
386
390
  result = derived_instance
387
391
  .get_ref_info_for_vfunc_in_object_transfer_full GIMarshallingTests::Object.gtype
@@ -392,9 +396,11 @@ describe GIMarshallingTests do
392
396
  it "has a working method #get_ref_info_for_vfunc_in_object_transfer_none" do
393
397
  obj = nil
394
398
  derived_instance = make_derived_instance do |info|
395
- info.install_vfunc_implementation :vfunc_in_object_transfer_none, proc { |_this, object|
396
- obj = object
397
- }
399
+ info.install_vfunc_implementation(
400
+ :vfunc_in_object_transfer_none,
401
+ proc { |_this, object|
402
+ obj = object
403
+ })
398
404
  end
399
405
  result = derived_instance
400
406
  .get_ref_info_for_vfunc_in_object_transfer_none GIMarshallingTests::Object.gtype
@@ -489,9 +495,11 @@ describe GIMarshallingTests do
489
495
 
490
496
  it "has a working method #method_int8_arg_and_out_callee" do
491
497
  derived_instance = make_derived_instance do |info|
492
- info.install_vfunc_implementation :method_int8_arg_and_out_callee, proc { |_obj, arg|
493
- 2 * arg
494
- }
498
+ info.install_vfunc_implementation(
499
+ :method_int8_arg_and_out_callee,
500
+ proc { |_obj, arg|
501
+ 2 * arg
502
+ })
495
503
  end
496
504
  result = derived_instance.method_int8_arg_and_out_callee 32
497
505
  _(result).must_equal 64
@@ -499,9 +507,11 @@ describe GIMarshallingTests do
499
507
 
500
508
  it "has a working method #method_int8_arg_and_out_caller" do
501
509
  derived_instance = make_derived_instance do |info|
502
- info.install_vfunc_implementation :method_int8_arg_and_out_caller, proc { |_obj, arg|
503
- 2 * arg
504
- }
510
+ info.install_vfunc_implementation(
511
+ :method_int8_arg_and_out_caller,
512
+ proc { |_obj, arg|
513
+ 2 * arg
514
+ })
505
515
  end
506
516
  result = derived_instance.method_int8_arg_and_out_caller 32
507
517
  _(result).must_equal 64
@@ -524,7 +534,8 @@ describe GIMarshallingTests do
524
534
 
525
535
  it "has a working method #method_str_arg_out_ret" do
526
536
  derived_instance = make_derived_instance do |info|
527
- info.install_vfunc_implementation :method_str_arg_out_ret, proc { |_obj, arg| [arg, 42] }
537
+ info.install_vfunc_implementation(:method_str_arg_out_ret,
538
+ proc { |_obj, arg| [arg, 42] })
528
539
  end
529
540
  _(derived_instance.method_str_arg_out_ret("foo")).must_equal ["foo", 42]
530
541
  end
@@ -565,9 +576,11 @@ describe GIMarshallingTests do
565
576
 
566
577
  it "has a working method #vfunc_caller_allocated_out_parameter" do
567
578
  derived_instance = make_derived_instance do |info|
568
- info.install_vfunc_implementation :vfunc_caller_allocated_out_parameter, proc { |_obj|
569
- "Hello!"
570
- }
579
+ info.install_vfunc_implementation(
580
+ :vfunc_caller_allocated_out_parameter,
581
+ proc { |_obj|
582
+ "Hello!"
583
+ })
571
584
  end
572
585
  result = derived_instance.vfunc_caller_allocated_out_parameter
573
586
  _(result).must_equal "Hello!"
@@ -648,7 +661,8 @@ describe GIMarshallingTests do
648
661
 
649
662
  it "has a working method #vfunc_return_value_only" do
650
663
  derived_instance = make_derived_instance do |info|
651
- info.install_vfunc_implementation :vfunc_return_value_only, proc { |_obj| 0x1234_5678 }
664
+ info.install_vfunc_implementation(:vfunc_return_value_only,
665
+ proc { |_obj| 0x1234_5678 })
652
666
  end
653
667
  result = derived_instance.vfunc_return_value_only
654
668
  _(result).must_equal 0x1234_5678
@@ -658,9 +672,11 @@ describe GIMarshallingTests do
658
672
  result = 1
659
673
 
660
674
  derived_instance = make_derived_instance do |info|
661
- info.install_vfunc_implementation :vfunc_with_callback, proc { |_obj, callback, callback_data|
662
- callback.call(42, callback_data)
663
- }
675
+ info.install_vfunc_implementation(
676
+ :vfunc_with_callback,
677
+ proc { |_obj, callback, callback_data|
678
+ callback.call(42, callback_data)
679
+ })
664
680
  end
665
681
 
666
682
  derived_instance.vfunc_with_callback { |val, user_data| result = val + user_data }
@@ -1696,9 +1712,10 @@ describe GIMarshallingTests do
1696
1712
  end
1697
1713
 
1698
1714
  it "has a working function #callback_return_value_and_multiple_out_parameters" do
1699
- result = GIMarshallingTests.callback_return_value_and_multiple_out_parameters do |*_args|
1700
- [42, -142, 3]
1701
- end
1715
+ result =
1716
+ GIMarshallingTests.callback_return_value_and_multiple_out_parameters do |*_args|
1717
+ [42, -142, 3]
1718
+ end
1702
1719
  _(result).must_equal [42, -142, 3]
1703
1720
  end
1704
1721
 
@@ -1951,25 +1968,21 @@ describe GIMarshallingTests do
1951
1968
  end
1952
1969
 
1953
1970
  it "has a working function #gerror" do
1954
- begin
1955
- GIMarshallingTests.gerror
1956
- flunk "Error should have been raised"
1957
- rescue GirFFI::GLibError => e
1958
- _(e.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
1959
- _(e.domain).must_equal GIMarshallingTests::CONSTANT_GERROR_DOMAIN
1960
- _(e.code).must_equal GIMarshallingTests::CONSTANT_GERROR_CODE
1961
- end
1971
+ GIMarshallingTests.gerror
1972
+ flunk "Error should have been raised"
1973
+ rescue GirFFI::GLibError => e
1974
+ _(e.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
1975
+ _(e.domain).must_equal GIMarshallingTests::CONSTANT_GERROR_DOMAIN
1976
+ _(e.code).must_equal GIMarshallingTests::CONSTANT_GERROR_CODE
1962
1977
  end
1963
1978
 
1964
1979
  it "has a working function #gerror_array_in" do
1965
- begin
1966
- GIMarshallingTests.gerror_array_in [1, 2, 3]
1967
- flunk "Error should have been raised"
1968
- rescue GirFFI::GLibError => e
1969
- _(e.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
1970
- _(e.domain).must_equal GIMarshallingTests::CONSTANT_GERROR_DOMAIN
1971
- _(e.code).must_equal GIMarshallingTests::CONSTANT_GERROR_CODE
1972
- end
1980
+ GIMarshallingTests.gerror_array_in [1, 2, 3]
1981
+ flunk "Error should have been raised"
1982
+ rescue GirFFI::GLibError => e
1983
+ _(e.message).must_equal GIMarshallingTests::CONSTANT_GERROR_MESSAGE
1984
+ _(e.domain).must_equal GIMarshallingTests::CONSTANT_GERROR_DOMAIN
1985
+ _(e.code).must_equal GIMarshallingTests::CONSTANT_GERROR_CODE
1973
1986
  end
1974
1987
 
1975
1988
  it "has a working function #gerror_out" do
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "gir_ffi_test_helper"
4
4
 
5
- GirFFI.setup :GtkSource
5
+ GirFFI.setup :GtkSource, "3.0"
6
6
 
7
7
  # Tests behavior of objects in the generated GtkSource namespace.
8
8
  describe "The generated GtkSource module" do
@@ -10,22 +10,11 @@ describe "The generated GtkSource module" do
10
10
  let(:instance) { GtkSource::CompletionContext.new }
11
11
 
12
12
  it "allows adding proposals" do
13
- # Interface changed in GtkSourceView 3.24
14
- proposals = if GtkSource::CompletionItem.instance_methods.include? :set_label
15
- Array.new(3) do |i|
16
- GtkSource::CompletionItem.new.tap do |item|
17
- item.label = "Proposal #{i}"
18
- item.text = "Proposal #{i}"
19
- item.info = "blah #{i}"
20
- end
21
- end
22
- else
23
- [
24
- GtkSource::CompletionItem.new("Proposal 1", "Proposal 1", nil, "blah 1"),
25
- GtkSource::CompletionItem.new("Proposal 2", "Proposal 2", nil, "blah 2"),
26
- GtkSource::CompletionItem.new("Proposal 3", "Proposal 3", nil, "blah 3")
27
- ]
28
- end
13
+ proposals = [
14
+ GtkSource::CompletionItem.new("Proposal 1", "Proposal 1", nil, "blah 1"),
15
+ GtkSource::CompletionItem.new("Proposal 2", "Proposal 2", nil, "blah 2"),
16
+ GtkSource::CompletionItem.new("Proposal 3", "Proposal 3", nil, "blah 3")
17
+ ]
29
18
  instance.add_proposals nil, proposals, true
30
19
  end
31
20
  end
@@ -1621,6 +1621,11 @@ describe Regress do
1621
1621
  _(instance).wont_be :floating?
1622
1622
  end
1623
1623
 
1624
+ it "defines callback type Matrix in the metaclass namespace" do
1625
+ _(Regress::TestObjClass.const_defined? :Matrix).must_equal true
1626
+ _(Regress.const_defined? :Matrix).must_equal false
1627
+ end
1628
+
1624
1629
  it "has a working method #matrix" do
1625
1630
  _(instance.matrix("bar")).must_equal 42
1626
1631
  end
@@ -1674,6 +1679,13 @@ describe Regress do
1674
1679
  instance.emit_sig_with_int64
1675
1680
  end
1676
1681
 
1682
+ it "defines signal type Sig_with_int64_prop in the class namespace" do
1683
+ instance.signal_connect("sig-with-int64-prop") { |_obj, i, _ud| i }
1684
+ instance.emit_sig_with_int64
1685
+ _(Regress::TestObj.const_defined? :Sig_with_int64_prop).must_equal true
1686
+ _(Regress.const_defined? :Sig_with_int64_prop).must_equal false
1687
+ end
1688
+
1677
1689
  it "has a working method #emit_sig_with_null_error" do
1678
1690
  skip_below "1.61.1"
1679
1691
  error = nil
@@ -3655,7 +3667,8 @@ describe Regress do
3655
3667
  end
3656
3668
 
3657
3669
  it "has a working function #test_glist_gtype_container_in" do
3658
- Regress.test_glist_gtype_container_in [Regress::TestObj.gtype, Regress::TestSubObj.gtype]
3670
+ Regress.test_glist_gtype_container_in [Regress::TestObj.gtype,
3671
+ Regress::TestSubObj.gtype]
3659
3672
  pass
3660
3673
  end
3661
3674
 
@@ -4057,6 +4070,7 @@ describe Regress do
4057
4070
 
4058
4071
  it "raises an appropriate NoMethodError when a function is not found" do
4059
4072
  result = _(proc { Regress.this_method_does_not_exist }).must_raise(NoMethodError)
4060
- _(result.message).must_match(/^undefined method `this_method_does_not_exist' (for Regress:Module|on Regress \(Module\))$/)
4073
+ _(result.message)
4074
+ .must_equal "undefined method `this_method_does_not_exist' for Regress:Module"
4061
4075
  end
4062
4076
  end
@@ -14,8 +14,10 @@ describe "The generated WarnLib module" do
14
14
  @result = nil
15
15
  derived_klass.class_eval { include WarnLib::Whatever }
16
16
  GirFFI.define_type derived_klass do |info|
17
- info.install_vfunc_implementation :do_boo, proc { |_obj, x, _y| @result = "boo#{x}" }
18
- 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}" }
19
21
  end
20
22
  end
21
23
 
@@ -4,7 +4,8 @@ require "base_test_helper"
4
4
 
5
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)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gir_ffi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.2
4
+ version: 0.15.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-29 00:00:00.000000000 Z
11
+ date: 2020-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.14.1
47
+ version: 1.0.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.14.1
54
+ version: 1.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '13.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rexml
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rspec-mocks
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +114,14 @@ dependencies:
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.17.0
117
+ version: 0.18.0
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.17.0
124
+ version: 0.18.0
111
125
  description: |2
112
126
  GirFFI creates bindings for GObject-based libraries at runtime based on introspection
113
127
  data provided by the GObject Introspection Repository (GIR) system. Bindings are created
@@ -443,14 +457,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
443
457
  requirements:
444
458
  - - ">="
445
459
  - !ruby/object:Gem::Version
446
- version: 2.4.0
460
+ version: 2.5.0
447
461
  required_rubygems_version: !ruby/object:Gem::Requirement
448
462
  requirements:
449
463
  - - ">="
450
464
  - !ruby/object:Gem::Version
451
465
  version: '0'
452
466
  requirements: []
453
- rubygems_version: 3.0.6
467
+ rubygems_version: 3.1.2
454
468
  signing_key:
455
469
  specification_version: 4
456
470
  summary: FFI-based GObject binding using the GObject Introspection Repository