gir_ffi 0.9.3 → 0.9.4
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.
- checksums.yaml +4 -4
- data/Changelog.md +6 -0
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +1 -1
- data/lib/gir_ffi/callback_base.rb +2 -2
- data/lib/gir_ffi/object_store.rb +1 -0
- data/lib/gir_ffi/version.rb +1 -1
- data/tasks/test.rake +1 -0
- data/test/ffi-glib/destroy_notify_test.rb +1 -1
- data/test/gir_ffi/builders/argument_builder_test.rb +1 -1
- data/test/gir_ffi/builders/function_builder_test.rb +1 -1
- data/test/gir_ffi/callback_base_test.rb +1 -1
- data/test/gir_ffi/in_pointer_test.rb +2 -2
- data/test/gir_ffi/object_store_test.rb +40 -0
- data/test/integration/generated_regress_test.rb +8 -7
- metadata +19 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45d1fd64a20d066116552af625c33d0173bd6c47
|
4
|
+
data.tar.gz: 404f1c8c32d94fff866f0e3499a62f4b9727ebc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99533353d82d5700a0ecf734c4829157a51923b00b7bd40201dd760a8d6800865e6d00778182826565ac1ccf2bde68736d33cbb70116542ecf7d72e24a7d383e
|
7
|
+
data.tar.gz: d9ddd4fe6a2017148a447d4ac8a9573905cd76cd73dabc7248f60fd75417f530751cf731286f5600e8c70baf89b97db73ff9847ef77505cf669f8231a63b8e75
|
data/Changelog.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.9.4 / 2016-02-22
|
4
|
+
|
5
|
+
* Pass nil user data as null pointer, and store a missing callback as nil. This
|
6
|
+
avoids passing a null callback and a non-null user data value, which causes
|
7
|
+
problems with vte_terminal_spawn_sync() and perhaps other functions.
|
8
|
+
|
3
9
|
## 0.9.3 / 2016-02-20
|
4
10
|
|
5
11
|
* Make allow-none arguments optional in Ruby
|
@@ -38,8 +38,8 @@ module GirFFI
|
|
38
38
|
CALLBACKS[prc.object_id] = prc
|
39
39
|
end
|
40
40
|
|
41
|
-
def self.drop_callback(
|
42
|
-
CALLBACKS.delete
|
41
|
+
def self.drop_callback(prc)
|
42
|
+
CALLBACKS.delete prc.object_id
|
43
43
|
end
|
44
44
|
|
45
45
|
# Create Callback from a Proc. Makes sure arguments are properly wrapped,
|
data/lib/gir_ffi/object_store.rb
CHANGED
data/lib/gir_ffi/version.rb
CHANGED
data/tasks/test.rake
CHANGED
@@ -6,7 +6,7 @@ describe GLib::DestroyNotify do
|
|
6
6
|
it 'removes the passed-in key from the callback store' do
|
7
7
|
dummy_proc = 'some-callback'
|
8
8
|
GirFFI::CallbackBase.store_callback dummy_proc
|
9
|
-
user_data = GirFFI::InPointer.from_closure_data dummy_proc
|
9
|
+
user_data = GirFFI::InPointer.from_closure_data dummy_proc
|
10
10
|
GLib::DestroyNotify.default.call user_data
|
11
11
|
GirFFI::CallbackBase::CALLBACKS[dummy_proc.object_id].must_be_nil
|
12
12
|
end
|
@@ -68,7 +68,7 @@ describe GirFFI::Builders::ArgumentBuilder do
|
|
68
68
|
end
|
69
69
|
|
70
70
|
it 'has the correct value for #pre_conversion' do
|
71
|
-
builder.pre_conversion.must_equal ['_v1 = GirFFI::InPointer.from_closure_data(foo
|
71
|
+
builder.pre_conversion.must_equal ['_v1 = GirFFI::InPointer.from_closure_data(foo)']
|
72
72
|
end
|
73
73
|
|
74
74
|
it 'has the correct value for #post_conversion' do
|
@@ -42,7 +42,7 @@ describe GirFFI::Builders::FunctionBuilder do
|
|
42
42
|
code.must_equal <<-CODE.reset_indentation
|
43
43
|
def self.test_callback_destroy_notify(&callback)
|
44
44
|
_v1 = Regress::TestCallbackUserData.from(callback)
|
45
|
-
_v2 = GirFFI::InPointer.from_closure_data(_v1
|
45
|
+
_v2 = GirFFI::InPointer.from_closure_data(_v1)
|
46
46
|
_v3 = GLib::DestroyNotify.default
|
47
47
|
_v4 = Regress::Lib.regress_test_callback_destroy_notify _v1, _v2, _v3
|
48
48
|
return _v4
|
@@ -14,7 +14,7 @@ describe GirFFI::CallbackBase do
|
|
14
14
|
it 'removes the corresponding proc from CALLBACKS' do
|
15
15
|
dummy_proc = 'some-callback'
|
16
16
|
GirFFI::CallbackBase.store_callback dummy_proc
|
17
|
-
GirFFI::CallbackBase.drop_callback dummy_proc
|
17
|
+
GirFFI::CallbackBase.drop_callback dummy_proc
|
18
18
|
GirFFI::CallbackBase::CALLBACKS[dummy_proc.object_id].must_be_nil
|
19
19
|
end
|
20
20
|
end
|
@@ -184,8 +184,8 @@ describe GirFFI::InPointer do
|
|
184
184
|
|
185
185
|
describe '.from_closure_data' do
|
186
186
|
describe 'when called with nil' do
|
187
|
-
it 'returns a pointer
|
188
|
-
GirFFI::InPointer.from_closure_data(nil).
|
187
|
+
it 'returns a null pointer' do
|
188
|
+
GirFFI::InPointer.from_closure_data(nil).must_be :null?
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'gir_ffi_test_helper'
|
3
|
+
|
4
|
+
describe GirFFI::ObjectStore do
|
5
|
+
let(:store) { GirFFI::ObjectStore.new }
|
6
|
+
|
7
|
+
describe '#store' do
|
8
|
+
it 'returns a non-null pointer when storing objects' do
|
9
|
+
obj = Object.new
|
10
|
+
ptr = store.store obj
|
11
|
+
ptr.wont_be :null?
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns a null pointer when storing nil' do
|
15
|
+
ptr = store.store nil
|
16
|
+
ptr.must_be :null?
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#fetch' do
|
21
|
+
it 'returns the stored object when passed the key pointer' do
|
22
|
+
obj = Object.new
|
23
|
+
ptr = store.store obj
|
24
|
+
result = store.fetch ptr
|
25
|
+
result.must_equal obj
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'returns the nil object when passed a null pointer' do
|
29
|
+
ptr = FFI::Pointer.new(0)
|
30
|
+
result = store.fetch ptr
|
31
|
+
result.must_be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'returns the pointer itself when passed an unknown pointer' do
|
35
|
+
ptr = FFI::Pointer.new(42)
|
36
|
+
result = store.fetch ptr
|
37
|
+
result.must_equal ptr
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -2648,22 +2648,23 @@ describe Regress do
|
|
2648
2648
|
|
2649
2649
|
it 'has a working function #test_callback_async' do
|
2650
2650
|
a = 1
|
2651
|
-
|
2652
|
-
Regress.test_callback_async { |user_data|
|
2651
|
+
stored_proc = nil
|
2652
|
+
Regress.test_callback_async { |user_data| stored_proc = user_data; a = 2 }
|
2653
2653
|
result = Regress.test_callback_thaw_async
|
2654
2654
|
a.must_equal 2
|
2655
|
-
|
2655
|
+
stored_proc.wont_be_nil
|
2656
2656
|
result.must_equal 2
|
2657
2657
|
# TODO: See when we can clean up the stored callback for async callbacks.
|
2658
|
-
GirFFI::CallbackBase::CALLBACKS[
|
2658
|
+
GirFFI::CallbackBase::CALLBACKS[stored_proc.object_id].must_equal stored_proc
|
2659
2659
|
end
|
2660
2660
|
|
2661
2661
|
it 'has a working function #test_callback_destroy_notify' do
|
2662
2662
|
a = 1
|
2663
|
-
|
2664
|
-
r1 = Regress.test_callback_destroy_notify { |user_data|
|
2663
|
+
stored_proc = nil
|
2664
|
+
r1 = Regress.test_callback_destroy_notify { |user_data| stored_proc = user_data; a = 2 }
|
2665
2665
|
a.must_equal 2
|
2666
|
-
|
2666
|
+
stored_id = stored_proc.object_id
|
2667
|
+
GirFFI::CallbackBase::CALLBACKS[stored_id].must_equal stored_proc
|
2667
2668
|
|
2668
2669
|
a = 3
|
2669
2670
|
r2 = Regress.test_callback_thaw_notifications
|
metadata
CHANGED
@@ -1,127 +1,127 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gir_ffi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
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: 2016-02-
|
11
|
+
date: 2016-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
type: :runtime
|
15
14
|
name: ffi
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
16
|
requirements:
|
18
17
|
- - "~>"
|
19
18
|
- !ruby/object:Gem::Version
|
20
19
|
version: '1.8'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
21
22
|
version_requirements: !ruby/object:Gem::Requirement
|
22
23
|
requirements:
|
23
24
|
- - "~>"
|
24
25
|
- !ruby/object:Gem::Version
|
25
26
|
version: '1.8'
|
26
|
-
prerelease: false
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
type: :runtime
|
29
28
|
name: ffi-bit_masks
|
30
29
|
requirement: !ruby/object:Gem::Requirement
|
31
30
|
requirements:
|
32
31
|
- - "~>"
|
33
32
|
- !ruby/object:Gem::Version
|
34
33
|
version: 0.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
35
36
|
version_requirements: !ruby/object:Gem::Requirement
|
36
37
|
requirements:
|
37
38
|
- - "~>"
|
38
39
|
- !ruby/object:Gem::Version
|
39
40
|
version: 0.1.0
|
40
|
-
prerelease: false
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
type: :runtime
|
43
42
|
name: indentation
|
44
43
|
requirement: !ruby/object:Gem::Requirement
|
45
44
|
requirements:
|
46
45
|
- - "~>"
|
47
46
|
- !ruby/object:Gem::Version
|
48
47
|
version: 0.1.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
49
50
|
version_requirements: !ruby/object:Gem::Requirement
|
50
51
|
requirements:
|
51
52
|
- - "~>"
|
52
53
|
- !ruby/object:Gem::Version
|
53
54
|
version: 0.1.1
|
54
|
-
prerelease: false
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
type: :development
|
57
56
|
name: minitest
|
58
57
|
requirement: !ruby/object:Gem::Requirement
|
59
58
|
requirements:
|
60
59
|
- - "~>"
|
61
60
|
- !ruby/object:Gem::Version
|
62
61
|
version: '5.5'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
63
64
|
version_requirements: !ruby/object:Gem::Requirement
|
64
65
|
requirements:
|
65
66
|
- - "~>"
|
66
67
|
- !ruby/object:Gem::Version
|
67
68
|
version: '5.5'
|
68
|
-
prerelease: false
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
type: :development
|
71
70
|
name: minitest-rspec_mocks
|
72
71
|
requirement: !ruby/object:Gem::Requirement
|
73
72
|
requirements:
|
74
73
|
- - "~>"
|
75
74
|
- !ruby/object:Gem::Version
|
76
75
|
version: 0.3.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
77
78
|
version_requirements: !ruby/object:Gem::Requirement
|
78
79
|
requirements:
|
79
80
|
- - "~>"
|
80
81
|
- !ruby/object:Gem::Version
|
81
82
|
version: 0.3.0
|
82
|
-
prerelease: false
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
type: :development
|
85
84
|
name: rspec-mocks
|
86
85
|
requirement: !ruby/object:Gem::Requirement
|
87
86
|
requirements:
|
88
87
|
- - "~>"
|
89
88
|
- !ruby/object:Gem::Version
|
90
89
|
version: 3.4.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
91
92
|
version_requirements: !ruby/object:Gem::Requirement
|
92
93
|
requirements:
|
93
94
|
- - "~>"
|
94
95
|
- !ruby/object:Gem::Version
|
95
96
|
version: 3.4.1
|
96
|
-
prerelease: false
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
type: :development
|
99
98
|
name: rake
|
100
99
|
requirement: !ruby/object:Gem::Requirement
|
101
100
|
requirements:
|
102
101
|
- - "~>"
|
103
102
|
- !ruby/object:Gem::Version
|
104
103
|
version: '10.1'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
105
106
|
version_requirements: !ruby/object:Gem::Requirement
|
106
107
|
requirements:
|
107
108
|
- - "~>"
|
108
109
|
- !ruby/object:Gem::Version
|
109
110
|
version: '10.1'
|
110
|
-
prerelease: false
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
type: :development
|
113
112
|
name: aruba
|
114
113
|
requirement: !ruby/object:Gem::Requirement
|
115
114
|
requirements:
|
116
115
|
- - "~>"
|
117
116
|
- !ruby/object:Gem::Version
|
118
117
|
version: 0.12.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
119
120
|
version_requirements: !ruby/object:Gem::Requirement
|
120
121
|
requirements:
|
121
122
|
- - "~>"
|
122
123
|
- !ruby/object:Gem::Version
|
123
124
|
version: 0.12.0
|
124
|
-
prerelease: false
|
125
125
|
description: |2
|
126
126
|
GirFFI creates bindings for GObject-based libraries at runtime based on introspection
|
127
127
|
data provided by the GObject Introspection Repository (GIR) system. Bindings are created
|
@@ -391,6 +391,7 @@ files:
|
|
391
391
|
- test/gir_ffi/interface_base_test.rb
|
392
392
|
- test/gir_ffi/method_stubber_test.rb
|
393
393
|
- test/gir_ffi/object_base_test.rb
|
394
|
+
- test/gir_ffi/object_store_test.rb
|
394
395
|
- test/gir_ffi/sized_array_test.rb
|
395
396
|
- test/gir_ffi/type_map_test.rb
|
396
397
|
- test/gir_ffi/unintrospectable_type_info_test.rb
|